generated from sigonasr2/CPlusPlusProjectTemplate
Draw grid ranges for attacks on target select
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
75cc08c316
commit
fceb8a9005
Binary file not shown.
34
main.cpp
34
main.cpp
@ -161,6 +161,9 @@ class Object{
|
||||
void SetPos(vd2d pos) {
|
||||
Move(pos-this->pos);
|
||||
}
|
||||
vd2d GetPosWithOrigin() {
|
||||
return GetPos()+originPoint;
|
||||
}
|
||||
bool SmoothMove(vd2d move) {
|
||||
const int wiggleRoom=5;
|
||||
vd2d originPos = {pos.x+originPoint.x,pos.y-1+originPoint.y};
|
||||
@ -1421,11 +1424,15 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
if (BATTLE_STATE==BattleState::TARGET_SELECT) {
|
||||
SetDrawTarget(layer::GROUND);
|
||||
if (SELECTED_TARGET<0) {
|
||||
DrawDecal(PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->GetPos()-cameraPos,SPRITES["targetCircle.png"],{PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->width/(double)SPRITES["targetCircle.png"]->sprite->width,PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->spr->sprite->height/(double)SPRITES["targetCircle.png"]->sprite->height},GREEN);
|
||||
vd2d scale = {PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->width/(double)SPRITES["targetCircle.png"]->sprite->width,PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->spr->sprite->height/(double)SPRITES["targetCircle.png"]->sprite->height};
|
||||
vi2d size = {SPRITES["targetCircle.png"]->sprite->width,SPRITES["targetCircle.png"]->sprite->height};
|
||||
DrawDecal(PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->GetPosWithOrigin()-cameraPos-size/2*scale,SPRITES["targetCircle.png"],{PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->width/(double)SPRITES["targetCircle.png"]->sprite->width,PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->spr->spr->sprite->height/(double)SPRITES["targetCircle.png"]->sprite->height},GREEN);
|
||||
DrawTargetRangeGrid(PARTY_MEMBER_OBJ[-SELECTED_TARGET-1]->GetPosWithOrigin(),PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->range);
|
||||
} else {
|
||||
vd2d scale = {BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->spr->width/(double)SPRITES["targetCircle.png"]->sprite->width,BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->spr->spr->sprite->height/(double)SPRITES["targetCircle.png"]->sprite->height};
|
||||
vi2d size = {SPRITES["targetCircle.png"]->sprite->width,SPRITES["targetCircle.png"]->sprite->height};
|
||||
DrawDecal(BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->GetPos()+BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->originPoint-cameraPos-size/2*scale,SPRITES["targetCircle.png"],scale,YELLOW);
|
||||
DrawDecal(BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->GetPosWithOrigin()-cameraPos-size/2*scale,SPRITES["targetCircle.png"],scale,YELLOW);
|
||||
DrawTargetRangeGrid(BATTLE_ENCOUNTER->objs[SELECTED_TARGET]->obj->GetPosWithOrigin(),PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->range);
|
||||
}
|
||||
}
|
||||
if (BATTLE_STATE==BattleState::WAIT_ANIMATION) {
|
||||
@ -2839,7 +2846,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
+BATTLE_ENCOUNTER->objs[CURRENT_TURN]->baseAtk;
|
||||
for (auto&ent:GetEntitiesInRange(BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedTarget,BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove)) {
|
||||
std::cout << BATTLE_ENCOUNTER->objs[CURRENT_TURN]->obj->name << " uses " << BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->name << " " << BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->grade << " on " << ent->obj->name << " dealing " << dmgAmt << " health.\n";
|
||||
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedTarget-1]]->SubtractHP(dmgAmt);
|
||||
ent->SubtractHP(dmgAmt);
|
||||
if (ent->GetTargetHP()<0) {
|
||||
BATTLE_HIT_SCREENSHAKE=75;
|
||||
} else {
|
||||
@ -3047,7 +3054,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
if (targetEnt<0) {
|
||||
for (int i=0;i<PARTY_MEMBER_COUNT;i++) {
|
||||
//See if this target is also in range.
|
||||
vi2d diff=(vi2d)PARTY_MEMBER_OBJ[i]->GetPos()/32-(vi2d)PARTY_MEMBER_OBJ[-targetEnt-1]->GetPos()/32;
|
||||
vi2d diff=(vi2d)PARTY_MEMBER_OBJ[i]->GetPosWithOrigin()/32-(vi2d)PARTY_MEMBER_OBJ[-targetEnt-1]->GetPosWithOrigin()/32;
|
||||
if (abs(diff.x)+abs(diff.y)<=move->range-1) {
|
||||
ents.push_back(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]);
|
||||
}
|
||||
@ -3055,7 +3062,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
} else {
|
||||
for (int i=0;i<BATTLE_ENCOUNTER->objs.size();i++) {
|
||||
//See if this target is also in range.
|
||||
vi2d diff=(vi2d)BATTLE_ENCOUNTER->objs[i]->obj->GetPos()/32-(vi2d)BATTLE_ENCOUNTER->objs[targetEnt]->obj->GetPos()/32;
|
||||
vi2d diff=(vi2d)BATTLE_ENCOUNTER->objs[i]->obj->GetPosWithOrigin()/32-(vi2d)BATTLE_ENCOUNTER->objs[targetEnt]->obj->GetPosWithOrigin()/32;
|
||||
if (abs(diff.x)+abs(diff.y)<=move->range-1) {
|
||||
ents.push_back(BATTLE_ENCOUNTER->objs[i]);
|
||||
}
|
||||
@ -3063,6 +3070,23 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
}
|
||||
return ents;
|
||||
}
|
||||
|
||||
void DrawTargetRangeGrid(vd2d pos,int range) {
|
||||
vi2d gridCenter = (vi2d)pos/32*32;
|
||||
for (int x=-range+1;x<range;x++) {
|
||||
for (int y=-range+1;y<range;y++) {
|
||||
int dist = abs(x)+abs(y);
|
||||
if (dist<range) {
|
||||
vi2d offset = {x,y};
|
||||
//FillRectDecal(gridCenter-cameraPos+offset*32,{32,32},Pixel(255,255,0,128));
|
||||
GradientFillRectDecal(gridCenter-cameraPos+offset*32,{32,32},Pixel(0,161,255,abs(sin(M_PI/240*frameCount)*32)),Pixel(139,234,255,abs(sin(M_PI/240*frameCount)*64)),Pixel(0,161,255,abs(sin(M_PI/240*frameCount)*32)),Pixel(139,234,255,abs(sin(M_PI/240*frameCount)*64)));
|
||||
DrawRectDecal(gridCenter-cameraPos+offset*32,{32,32},Pixel(abs(cos(M_PI/240*frameCount)*128),200,0,255));
|
||||
const vi2d outlineOffset = {1,1};
|
||||
DrawRectDecal(gridCenter-cameraPos+offset*32+outlineOffset,{30,30},Pixel(abs(cos(M_PI/240*frameCount)*128),200,0,255));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user