Add in alternative checking for move selection when moving fails

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent f76dd92cab
commit 6fbcc64f44
  1. BIN
      C++ProjectTemplate
  2. 110
      main.cpp

Binary file not shown.

@ -773,6 +773,25 @@ goes on a very long time, I hope you can understand this is only for testing pur
for (int i=0;i<CURRENT_MAP->encounters.size();i++) { for (int i=0;i<CURRENT_MAP->encounters.size();i++) {
if (CURRENT_MAP->encounters[i]->IsEncounterAlive()&&CURRENT_MAP->encounters[i]->IsInRange(PARTY_MEMBER_OBJ[0]->GetPos())) { if (CURRENT_MAP->encounters[i]->IsEncounterAlive()&&CURRENT_MAP->encounters[i]->IsInRange(PARTY_MEMBER_OBJ[0]->GetPos())) {
BATTLE_STATE=BattleState::MOVE_CAMERA; BATTLE_STATE=BattleState::MOVE_CAMERA;
for (int i=0;i<PARTY_MEMBER_COUNT;i++) {
Entity*member=PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]];
for (int j=0;j<3;j++) {
switch (j) {
case 0:{
player_rollhp_display[i][j]=member->GetHP()%10;
player_rollpp_display[i][j]=member->PP%10;
}break;
case 1:{
player_rollhp_display[i][j]=member->GetHP()/10%10;
player_rollpp_display[i][j]=member->PP/10%10;
}break;
case 2:{
player_rollhp_display[i][j]=member->GetHP()/100%10;
player_rollpp_display[i][j]=member->PP/100%10;
}break;
}
}
}
BATTLE_ENCOUNTER=CURRENT_MAP->encounters[i]; BATTLE_ENCOUNTER=CURRENT_MAP->encounters[i];
break; break;
} }
@ -1198,37 +1217,97 @@ goes on a very long time, I hope you can understand this is only for testing pur
}break; }break;
case BattleState::MOVE_SELECT:{ case BattleState::MOVE_SELECT:{
if (LeftPressed()) { if (LeftPressed()) {
for (int i=1;i<=3;i++) { for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-i,SELECTED_MOVE_SQUARE.y})) { if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-i,SELECTED_MOVE_SQUARE.y})) {
SELECTED_MOVE_SQUARE.x-=i; SELECTED_MOVE_SQUARE.x-=i;
break; goto escapeLeft;
}
}
for (int j=1;j<=8;j++) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-i,SELECTED_MOVE_SQUARE.y+j})) {
SELECTED_MOVE_SQUARE.x-=i;
SELECTED_MOVE_SQUARE.y+=j;
goto escapeLeft;
}
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-i,SELECTED_MOVE_SQUARE.y-j})) {
SELECTED_MOVE_SQUARE.x-=i;
SELECTED_MOVE_SQUARE.y-=j;
goto escapeLeft;
}
} }
} }
} }
escapeLeft:
if (RightPressed()) { if (RightPressed()) {
for (int i=1;i<=8;i++) { for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+i,SELECTED_MOVE_SQUARE.y})) { if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+i,SELECTED_MOVE_SQUARE.y})) {
SELECTED_MOVE_SQUARE.x+=i; SELECTED_MOVE_SQUARE.x+=i;
break; goto escapeRight;
}
}
for (int j=1;j<=8;j++) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+i,SELECTED_MOVE_SQUARE.y+j})) {
SELECTED_MOVE_SQUARE.x+=i;
SELECTED_MOVE_SQUARE.y+=j;
goto escapeRight;
}
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+i,SELECTED_MOVE_SQUARE.y-j})) {
SELECTED_MOVE_SQUARE.x+=i;
SELECTED_MOVE_SQUARE.y-=j;
goto escapeRight;
}
} }
} }
} }
escapeRight:
if (UpPressed()) { if (UpPressed()) {
for (int i=1;i<=8;i++) { for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y-i})) { if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y-i})) {
SELECTED_MOVE_SQUARE.y-=i; SELECTED_MOVE_SQUARE.y-=i;
break; goto escapeUp;
}
}
for (int j=1;j<=8;j++) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-j,SELECTED_MOVE_SQUARE.y-i})) {
SELECTED_MOVE_SQUARE.x-=j;
SELECTED_MOVE_SQUARE.y-=i;
goto escapeUp;
}
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+j,SELECTED_MOVE_SQUARE.y-i})) {
SELECTED_MOVE_SQUARE.x+=j;
SELECTED_MOVE_SQUARE.y-=i;
goto escapeUp;
}
} }
} }
} }
escapeUp:
if (DownPressed()) { if (DownPressed()) {
for (int i=1;i<=8;i++) { for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y+i})) { if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y+i})) {
SELECTED_MOVE_SQUARE.y+=i; SELECTED_MOVE_SQUARE.y+=i;
break; goto escapeDown;
}
}
for (int j=1;j<=8;j++) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-j,SELECTED_MOVE_SQUARE.y+i})) {
SELECTED_MOVE_SQUARE.x-=j;
SELECTED_MOVE_SQUARE.y+=i;
goto escapeDown;
}
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+j,SELECTED_MOVE_SQUARE.y+i})) {
SELECTED_MOVE_SQUARE.x+=j;
SELECTED_MOVE_SQUARE.y+=i;
goto escapeDown;
}
} }
} }
} }
escapeDown:
if (ACTIONKEYPRESSED) { if (ACTIONKEYPRESSED) {
BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]=(BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]/32+SELECTED_MOVE_SQUARE)*32; BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]=(BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]/32+SELECTED_MOVE_SQUARE)*32;
BATTLE_STATE=BattleState::MOVE_CAMERA; BATTLE_STATE=BattleState::MOVE_CAMERA;
@ -2882,26 +2961,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
if (allDone) { if (allDone) {
CAMERA_WAIT_TIMER++; CAMERA_WAIT_TIMER++;
if (CAMERA_WAIT_TIMER>=CAMERA_WAIT_TIME) { if (CAMERA_WAIT_TIMER>=CAMERA_WAIT_TIME) {
for (int i=0;i<PARTY_MEMBER_COUNT;i++) { BATTLE_STATE=BattleState::WAIT;
Entity*member=PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]];
for (int j=0;j<3;j++) {
switch (j) {
case 0:{
player_rollhp_display[i][j]=member->GetHP()%10;
player_rollpp_display[i][j]=member->PP%10;
}break;
case 1:{
player_rollhp_display[i][j]=member->GetHP()/10%10;
player_rollpp_display[i][j]=member->PP/10%10;
}break;
case 2:{
player_rollhp_display[i][j]=member->GetHP()/100%10;
player_rollpp_display[i][j]=member->PP/100%10;
}break;
}
}
BATTLE_STATE=BattleState::WAIT;
}
} }
} }
}break; }break;

Loading…
Cancel
Save