Skip to content

Commit 9e34ea0

Browse files
committed
fix: State machine logic
1 parent 31c69f2 commit 9e34ea0

20 files changed

Lines changed: 45 additions & 85 deletions

NullBattle.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,20 +103,20 @@ void forceSwitchActivePokemon(Player& player) {
103103

104104
unsigned int partyIndex = 0;
105105

106+
for (auto& poke : player.team.party) {
107+
std::cout << printPokemonData(poke) << std::endl;
108+
}
109+
106110
std::cout << "[Player " + std::to_string(player.id) + "] Escolha o index do pokémon do " +
107111
"seu time para substituir por " + player.team.inBattle().name + ": ";
108112

109113
std::cin >> pokemonIndex;
110114

111-
if (pokemonIndex > player.team.party.size() || pokemonIndex <= 0) {
112-
forceSwitchActivePokemon(player);
113-
}
114-
115-
auto chosenPokemon = player.team.party.at(pokemonIndex);
115+
auto chosenPokemon = player.team.party[pokemonIndex];
116116

117117
log("Pokémon escolhido: " + chosenPokemon.name);
118118

119-
player.team.switchActivePokemon(pokemonIndex - 1);
119+
player.team.switchActivePokemon(pokemonIndex);
120120
}
121121

122122
int main()

common/pokemon_print_helpers.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "pokemon_print_helpers.hpp"
22

33
std::string printPokemonData(const Pokemon& pokemon) {
4+
if (pokemon.name.empty() || pokemon.level == 0) return "";
5+
46
std::string hpBar = "";
57
int barLength = 20;
68
float hpRatio = (float)pokemon.currentHP / (float)pokemon.maxHP();

core/battle/BattleStateMachine.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,8 @@ void BattleStateMachine::executeTurnActions() {
9494
if (whoWillSwitchPokemon > 0) {
9595
currentState = BattleState::SWITCH_AFTER_FAINT;
9696
}
97-
else {
98-
currentState = BattleState::ACTION_TURN;
99-
}
97+
98+
currentState = BattleState::ACTION_TURN;
10099
}
101100
}
102101

core/models/Team.hpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ struct Team
2626
int activePokemon = firstNotDefeated();
2727

2828
public:
29-
Pokemon& inBattle() { return party.at(activePokemon); }
29+
Pokemon& inBattle() { return party[activePokemon]; }
3030

3131
std::array<Pokemon, 6> getDefeatedPokemon() {
3232
std::array<Pokemon, 6> def = {};
@@ -42,18 +42,30 @@ struct Team
4242
return def;
4343
}
4444

45-
bool hasAlivePokemon() {
46-
bool hasAtLeastOneAlive = false;
45+
bool checkDefeated(std::string name) {
46+
std::array<Pokemon, 6> def = getDefeatedPokemon();
47+
48+
for (auto& poke : def) {
49+
return poke.name == name;
50+
}
51+
52+
return false;
53+
}
54+
55+
unsigned int countAlive() {
56+
int count = 0;
4757

4858
for (auto& poke : party) {
49-
if (poke.isNotDefeated()) {
50-
hasAtLeastOneAlive = true;
51-
}
59+
if (poke.currentHP > 0) { count++; }
5260
}
5361

54-
return hasAtLeastOneAlive;
62+
return count;
5563
}
5664

65+
unsigned int countDefeated() { return party.size() - countAlive(); }
66+
67+
bool hasAlivePokemon() { return countAlive() > 0; }
68+
5769
void switchActivePokemon(unsigned int pokemonIndex) {
5870
if (party[pokemonIndex].isNotDefeated()) {
5971
activePokemon = pokemonIndex;

out/build/x64-debug/.cmake/api/v1/reply/index-2026-04-03T02-16-39-0559.json renamed to out/build/x64-debug/.cmake/api/v1/reply/index-2026-04-03T12-41-13-0375.json

File renamed without changes.

out/build/x64-debug/.ninja_deps

-4.71 KB
Binary file not shown.

out/build/x64-debug/.ninja_log

Lines changed: 14 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,19 @@
11
# ninja log v6
2-
118 146 7967612791002791 clean 5345ca6175c2c29c
2+
48 82 7968929575350306 clean 5345ca6175c2c29c
33
43 1396 7952992472633323 CMakeFiles/NullBattle.dir/core/battle/BattleStateMachine.cpp.obj aa2037272a813e2b
4-
41 2840 7968793114360222 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
5-
2249 2326 7967637518928454 data/nullbattle_data.lib e4c942a623a8e1d0
6-
68 2248 7967637497116821 data/CMakeFiles/nullbattle_data.dir/DataLoader.cpp.obj db9da43ad0b8a8c0
7-
2841 3133 7968793142362737 NullBattle.exe cdcf1202a9c21daf
4+
56 3058 7969232564715820 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
5+
2566 2642 7968929641136730 data/nullbattle_data.lib e4c942a623a8e1d0
6+
39 2565 7968929615852983 data/CMakeFiles/nullbattle_data.dir/DataLoader.cpp.obj db9da43ad0b8a8c0
7+
3059 3287 7969232594736494 NullBattle.exe f5a130d4a5e7efb2
88
52 1307 7952992472736083 CMakeFiles/NullBattle.dir/core/battle/TurnEngine.cpp.obj 29528cb31e80863
9-
39 1476 7968857992415521 build.ninja a1fda39f3ac68b79
10-
39 1476 7968857992090622 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/cmake_install.cmake a1fda39f3ac68b79
9+
39 1476 7969232729857644 build.ninja a1fda39f3ac68b79
10+
39 1476 7969232729678974 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/cmake_install.cmake a1fda39f3ac68b79
1111
39 1476 7958308792837158 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/_deps/nlohmann_json-build/cmake_install.cmake a1fda39f3ac68b79
12-
39 1476 7968857992415521 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/ui/cmake_install.cmake a1fda39f3ac68b79
13-
39 1476 7968857992269617 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/core/cmake_install.cmake a1fda39f3ac68b79
14-
39 1476 7968857992351478 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/data/cmake_install.cmake a1fda39f3ac68b79
15-
49 927 7967689828161161 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
16-
61 950 7967689828329315 core/CMakeFiles/nullbattle_core.dir/battle/TurnEngine.cpp.obj 3e8fb446f4320b87
17-
950 1019 7967689837214702 core/nullbattle_core.lib ba2f4fc28d398330
18-
54 967 7968787833371971 CMakeFiles/NullBattle.dir/common/UuidV4.cpp.obj 131298d47e3494b9
19-
92 1356 7968928269104139 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
20-
101 1372 7968928269210563 core/CMakeFiles/nullbattle_core.dir/battle/TurnEngine.cpp.obj 3e8fb446f4320b87
21-
108 2596 7968928269277386 data/CMakeFiles/nullbattle_data.dir/DataLoader.cpp.obj db9da43ad0b8a8c0
22-
63 725 7968928851550704 CMakeFiles/NullBattle.dir/common/pokemon_print_helpers.cpp.obj 8594afbd22adaa7e
23-
48 842 7968928851415040 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
24-
843 920 7968928859360601 core/nullbattle_core.lib ba2f4fc28d398330
25-
920 1006 7968928860129031 data/nullbattle_data.lib e4c942a623a8e1d0
26-
11 2859 7968929201355936 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
27-
48 82 7968929575350306 clean 5345ca6175c2c29c
28-
62 1010 7968929616109903 CMakeFiles/NullBattle.dir/common/pokemon_print_helpers.cpp.obj 8594afbd22adaa7e
29-
26 1183 7968929615751366 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
30-
32 1185 7968929615793617 core/CMakeFiles/nullbattle_core.dir/battle/TurnEngine.cpp.obj 3e8fb446f4320b87
31-
1186 1272 7968929627333111 core/nullbattle_core.lib ba2f4fc28d398330
12+
39 1476 7969232729699069 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/ui/cmake_install.cmake a1fda39f3ac68b79
13+
39 1476 7969232729699069 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/core/cmake_install.cmake a1fda39f3ac68b79
14+
39 1476 7969232729699069 C:/Dev/Estudos - DEV/c_cpp/NullBattle/out/build/x64-debug/data/cmake_install.cmake a1fda39f3ac68b79
15+
43 1020 7969232564579508 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
16+
48 916 7969232564644939 core/CMakeFiles/nullbattle_core.dir/battle/TurnEngine.cpp.obj 3e8fb446f4320b87
17+
1020 1106 7969232574356939 core/nullbattle_core.lib ba2f4fc28d398330
3218
53 1510 7968929616008021 CMakeFiles/NullBattle.dir/common/UuidV4.cpp.obj 131298d47e3494b9
33-
39 2565 7968929615852983 data/CMakeFiles/nullbattle_data.dir/DataLoader.cpp.obj db9da43ad0b8a8c0
34-
2566 2642 7968929641136730 data/nullbattle_data.lib e4c942a623a8e1d0
35-
46 3524 7968929615935069 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
36-
54 797 7968929944347634 CMakeFiles/NullBattle.dir/common/pokemon_print_helpers.cpp.obj 8594afbd22adaa7e
37-
42 959 7968929944235158 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
38-
960 1050 7968929953425023 core/nullbattle_core.lib ba2f4fc28d398330
39-
48 3110 7968929944316463 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
40-
63 731 7968931745110462 CMakeFiles/NullBattle.dir/common/pokemon_print_helpers.cpp.obj 8594afbd22adaa7e
41-
46 922 7968931744962960 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
42-
923 994 7968931753723886 core/nullbattle_core.lib ba2f4fc28d398330
43-
54 2970 7968931745041884 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
44-
49 830 7968932319510173 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
45-
832 899 7968932327320724 core/nullbattle_core.lib ba2f4fc28d398330
46-
56 2919 7968932319555929 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
47-
2919 3175 7968932348200375 NullBattle.exe f5a130d4a5e7efb2
48-
44 2865 7968932961410735 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
49-
2867 3116 7968932989676164 NullBattle.exe f5a130d4a5e7efb2
50-
43 2887 7968933269161509 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
51-
2888 3184 7968933297610847 NullBattle.exe f5a130d4a5e7efb2
52-
47 758 7968935761579775 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
53-
759 823 7968935768675114 core/nullbattle_core.lib ba2f4fc28d398330
54-
57 2898 7968935761645074 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
55-
2899 3110 7968935790097174 NullBattle.exe f5a130d4a5e7efb2
56-
47 764 7968938523199011 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
57-
765 827 7968938530466343 core/nullbattle_core.lib ba2f4fc28d398330
58-
827 1029 7968938531105697 NullBattle.exe f5a130d4a5e7efb2
59-
43 2964 7968940095916575 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
60-
2965 3276 7968940125128462 NullBattle.exe f5a130d4a5e7efb2
61-
49 775 7968941523355052 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
62-
776 844 7968941530624939 core/nullbattle_core.lib ba2f4fc28d398330
63-
59 2913 7968941523439785 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
64-
2914 3129 7968941551999068 NullBattle.exe f5a130d4a5e7efb2
65-
41 2887 7968943303016428 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
66-
2887 3192 7968943331541317 NullBattle.exe f5a130d4a5e7efb2
67-
43 893 7968944769018388 core/CMakeFiles/nullbattle_core.dir/battle/BattleStateMachine.cpp.obj c9342eb28ab69de3
68-
894 977 7968944777526720 core/nullbattle_core.lib ba2f4fc28d398330
69-
50 3060 7968944769096725 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
70-
3061 3290 7968944799191267 NullBattle.exe f5a130d4a5e7efb2
71-
43 2898 7968944856889382 CMakeFiles/NullBattle.dir/NullBattle.cpp.obj 7d54a1713b72d93f
72-
2899 3196 7968944885454833 NullBattle.exe f5a130d4a5e7efb2
19+
56 616 7969230272271597 CMakeFiles/NullBattle.dir/common/pokemon_print_helpers.cpp.obj 8594afbd22adaa7e
-4.4 KB
Binary file not shown.
Binary file not shown.
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)