diff --git a/C++ProjectTemplate b/C++ProjectTemplate index 3b9de24..bc2fb21 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/main.cpp b/main.cpp index a919d5d..9eb514d 100644 --- a/main.cpp +++ b/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;iGetPos()/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;iobjs.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