generated from sigonasr2/CPlusPlusProjectTemplate
Rolling damage counters and turn-based handling completed
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
0fe0477d78
commit
bcf1107267
Binary file not shown.
196
main.cpp
196
main.cpp
@ -504,6 +504,7 @@ public:
|
||||
int player_rollpp_counter[4][3] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
|
||||
int player_rollhp_display[4][3] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
|
||||
int player_rollpp_display[4][3] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
|
||||
int player_rollwait_counter[4] = {0,0,0,0};
|
||||
int SELECTED_TARGET=0; //Battle target that is selected.
|
||||
int BATTLE_TARGET=-99; //Negative numbers for players and positive numbers for enemy targets.
|
||||
int CURRENT_TURN=-99; //Who's turn we are enacting.
|
||||
@ -519,9 +520,7 @@ public:
|
||||
};
|
||||
int POWER_SELECTION_OFFSET[4]={0,0,0,0};
|
||||
int BATTLE_ANIMATION_TIMER=0;
|
||||
|
||||
|
||||
|
||||
int BATTLE_ROLLING_COUNTER_WAITTIME = 0; //Number of frames to wait for each rolling counter.
|
||||
|
||||
bool MOUSE_PRESSED_DOWN=false,MOUSE_DOWN=false,MOUSE_RELEASED=false; //TODO Implement Mouse things.
|
||||
|
||||
@ -667,6 +666,102 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
}
|
||||
|
||||
if (BATTLE_ENCOUNTER!=nullptr) {
|
||||
for (int i=0;i<PARTY_MEMBER_COUNT;i++) {
|
||||
if (player_rollwait_counter[i]>0) {
|
||||
if (BATTLE_ROLLING_COUNTER_WAITTIME==0) {
|
||||
player_rollwait_counter[i]=0;
|
||||
} else {
|
||||
player_rollwait_counter[i]--;
|
||||
}
|
||||
}
|
||||
Entity*member=PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]];
|
||||
if (member->GetHP()>std::clamp(member->GetTargetHP(),0,member->GetTargetHP())) {
|
||||
if (player_rollhp_counter[i][0]<=0&&player_rollwait_counter[i]==0) {
|
||||
player_rollhp_display[i][0]--;
|
||||
player_rollhp_counter[i][0]=13;
|
||||
member->_SetDirectHP(member->GetHP()-1);
|
||||
if (player_rollhp_display[i][0]<0) {
|
||||
player_rollhp_display[i][0]=9;
|
||||
player_rollhp_counter[i][0]=13;
|
||||
player_rollhp_display[i][1]--;
|
||||
player_rollhp_counter[i][1]=13;
|
||||
if (player_rollhp_display[i][1]<0) {
|
||||
player_rollhp_display[i][1]=9;
|
||||
player_rollhp_counter[i][1]=13;
|
||||
player_rollhp_display[i][2]--;
|
||||
player_rollhp_counter[i][2]=13;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][0]>0) {
|
||||
if (member->GetTargetHP()<-member->maxHP) {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED+(member->maxHP-member->GetTargetHP())/10;
|
||||
} else
|
||||
if (member->GetTargetHP()<0) {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED+(member->maxHP-member->GetTargetHP())/20;
|
||||
} else {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED;
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][1]>0) {
|
||||
player_rollhp_counter[i][1]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]>0) {
|
||||
player_rollhp_counter[i][2]--;
|
||||
}
|
||||
} else
|
||||
if (member->GetHP()<member->GetTargetHP()) {
|
||||
if (player_rollhp_counter[i][0]>=0&&player_rollwait_counter[i]==0) {
|
||||
player_rollhp_display[i][0]++;
|
||||
player_rollhp_counter[i][0]=-13;
|
||||
member->_SetDirectHP(member->GetHP()+1);
|
||||
if (player_rollhp_display[i][0]>9) {
|
||||
player_rollhp_display[i][0]=0;
|
||||
player_rollhp_counter[i][0]=-13;
|
||||
player_rollhp_display[i][1]++;
|
||||
player_rollhp_counter[i][1]=-13;
|
||||
if (player_rollhp_display[i][1]>9) {
|
||||
player_rollhp_display[i][1]=0;
|
||||
player_rollhp_counter[i][1]=-13;
|
||||
player_rollhp_display[i][2]++;
|
||||
player_rollhp_counter[i][2]=-13;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][0]<0) {
|
||||
player_rollhp_counter[i][0]+=HEALTH_ROLLING_SPEED;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]<0) {
|
||||
player_rollhp_counter[i][1]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]<0) {
|
||||
player_rollhp_counter[i][2]++;
|
||||
}
|
||||
} else {
|
||||
if (player_rollhp_counter[i][0]<0) {
|
||||
player_rollhp_counter[i][0]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]<0) {
|
||||
player_rollhp_counter[i][1]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]<0) {
|
||||
player_rollhp_counter[i][2]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][0]>0) {
|
||||
player_rollhp_counter[i][0]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]>0) {
|
||||
player_rollhp_counter[i][1]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]>0) {
|
||||
player_rollhp_counter[i][2]--;
|
||||
}
|
||||
}
|
||||
|
||||
if (player_rollwait_counter[i]==0) {
|
||||
player_rollwait_counter[i]=BATTLE_ROLLING_COUNTER_WAITTIME*13;
|
||||
}
|
||||
}
|
||||
switch (BATTLE_STATE) {
|
||||
case BattleState::MOVE_CAMERA:{
|
||||
bool allDone=true;
|
||||
@ -705,91 +800,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
}
|
||||
}break;
|
||||
case BattleState::WAIT:{
|
||||
for (int i=0;i<PARTY_MEMBER_COUNT;i++) {
|
||||
Entity*member=PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]];
|
||||
if (member->GetHP()>std::clamp(member->GetTargetHP(),0,member->GetTargetHP())) {
|
||||
if (player_rollhp_counter[i][0]<=0) {
|
||||
player_rollhp_display[i][0]--;
|
||||
player_rollhp_counter[i][0]=13;
|
||||
member->_SetDirectHP(member->GetHP()-1);
|
||||
if (player_rollhp_display[i][0]<0) {
|
||||
player_rollhp_display[i][0]=9;
|
||||
player_rollhp_counter[i][0]=13;
|
||||
player_rollhp_display[i][1]--;
|
||||
player_rollhp_counter[i][1]=13;
|
||||
if (player_rollhp_display[i][1]<0) {
|
||||
player_rollhp_display[i][1]=9;
|
||||
player_rollhp_counter[i][1]=13;
|
||||
player_rollhp_display[i][2]--;
|
||||
player_rollhp_counter[i][2]=13;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][0]>0) {
|
||||
if (member->GetTargetHP()<-member->maxHP) {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED+(member->maxHP-member->GetTargetHP())/10;
|
||||
} else
|
||||
if (member->GetTargetHP()<0) {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED+(member->maxHP-member->GetTargetHP())/20;
|
||||
} else {
|
||||
player_rollhp_counter[i][0]-=HEALTH_ROLLING_SPEED;
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][1]>0) {
|
||||
player_rollhp_counter[i][1]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]>0) {
|
||||
player_rollhp_counter[i][2]--;
|
||||
}
|
||||
} else
|
||||
if (member->GetHP()<member->GetTargetHP()) {
|
||||
if (player_rollhp_counter[i][0]>=0) {
|
||||
player_rollhp_display[i][0]++;
|
||||
player_rollhp_counter[i][0]=-13;
|
||||
member->_SetDirectHP(member->GetHP()+1);
|
||||
if (player_rollhp_display[i][0]>9) {
|
||||
player_rollhp_display[i][0]=0;
|
||||
player_rollhp_counter[i][0]=-13;
|
||||
player_rollhp_display[i][1]++;
|
||||
player_rollhp_counter[i][1]=-13;
|
||||
if (player_rollhp_display[i][1]>9) {
|
||||
player_rollhp_display[i][1]=0;
|
||||
player_rollhp_counter[i][1]=-13;
|
||||
player_rollhp_display[i][2]++;
|
||||
player_rollhp_counter[i][2]=-13;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (player_rollhp_counter[i][0]<0) {
|
||||
player_rollhp_counter[i][0]+=HEALTH_ROLLING_SPEED;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]<0) {
|
||||
player_rollhp_counter[i][1]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]<0) {
|
||||
player_rollhp_counter[i][2]++;
|
||||
}
|
||||
} else {
|
||||
if (player_rollhp_counter[i][0]<0) {
|
||||
player_rollhp_counter[i][0]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]<0) {
|
||||
player_rollhp_counter[i][1]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]<0) {
|
||||
player_rollhp_counter[i][2]++;
|
||||
}
|
||||
if (player_rollhp_counter[i][0]>0) {
|
||||
player_rollhp_counter[i][0]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][1]>0) {
|
||||
player_rollhp_counter[i][1]--;
|
||||
}
|
||||
if (player_rollhp_counter[i][2]>0) {
|
||||
player_rollhp_counter[i][2]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
BATTLE_ROLLING_COUNTER_WAITTIME=0;
|
||||
bool done=false;
|
||||
if (!done) {
|
||||
for (int i=0;i<4;i++) {
|
||||
@ -882,6 +893,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
}
|
||||
}break;
|
||||
case BattleState::WAIT_ANIMATION:{
|
||||
BATTLE_ROLLING_COUNTER_WAITTIME=5;
|
||||
BATTLE_ANIMATION_TIMER++;
|
||||
if (BATTLE_ANIMATION_TIMER==90) {
|
||||
if (CURRENT_TURN<0) {
|
||||
@ -927,7 +939,6 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
+BATTLE_ENCOUNTER->objs[CURRENT_TURN]->baseAtk;
|
||||
printf("Damage: %d\n",dmgAmt);
|
||||
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 " << PARTY_MEMBER_OBJ[-BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedTarget-1]->name << " dealing " << dmgAmt << " health.\n";
|
||||
printf("Now subtract.\n");
|
||||
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedTarget-1]]->SubtractHP(dmgAmt);
|
||||
} else {
|
||||
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 " << PARTY_MEMBER_OBJ[-BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedTarget-1]->name << " but it failed.\n";
|
||||
@ -949,6 +960,13 @@ goes on a very long time, I hope you can understand this is only for testing pur
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case BattleState::SELECT_ACTION:
|
||||
case BattleState::ITEM_SELECT:
|
||||
case BattleState::GRADE_SELECT:
|
||||
case BattleState::TARGET_SELECT:
|
||||
case BattleState::POWER_SELECT:{
|
||||
BATTLE_ROLLING_COUNTER_WAITTIME=5;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user