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++) {
if (CURRENT_MAP->encounters[i]->IsEncounterAlive()&&CURRENT_MAP->encounters[i]->IsInRange(PARTY_MEMBER_OBJ[0]->GetPos())) {
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];
break;
}
@ -1198,37 +1217,97 @@ goes on a very long time, I hope you can understand this is only for testing pur
}break;
case BattleState::MOVE_SELECT:{
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})) {
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()) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+i,SELECTED_MOVE_SQUARE.y})) {
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()) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,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()) {
for (int i=1;i<=8;i++) {
if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,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) {
BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]=(BATTLE_ENCOUNTER->playerPos[-CURRENT_TURN-1]/32+SELECTED_MOVE_SQUARE)*32;
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) {
CAMERA_WAIT_TIMER++;
if (CAMERA_WAIT_TIMER>=CAMERA_WAIT_TIME) {
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_STATE=BattleState::WAIT;
}
BATTLE_STATE=BattleState::WAIT;
}
}
}break;

Loading…
Cancel
Save