feat: trace win reason for logging
This commit is contained in:
parent
f2a961d159
commit
2cbd86b725
@ -841,17 +841,19 @@ public class GameLogic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(character.inventory.getFreeSlots() == 0) { // no slots => has all infinity stones
|
if(character.inventory.getFreeSlots() == 0) { // no slots => has all infinity stones
|
||||||
result.addAll(handlePlayerWin(state, character.id.type));
|
result.addAll(handlePlayerWin(state, character.id.type, "collected all infinity stones"));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!anyAlive) {
|
if(!anyAlive) {
|
||||||
EntityType winner = state.winConditions.getWinner();
|
String[] reason = new String[1];
|
||||||
|
EntityType winner = state.winConditions.getWinner(reason);
|
||||||
if(winner == EntityType.None) {
|
if(winner == EntityType.None) {
|
||||||
winner = rand.nextBoolean() ? EntityType.P1 : EntityType.P2;
|
winner = rand.nextBoolean() ? EntityType.P1 : EntityType.P2;
|
||||||
|
reason[0] = "determined by lot as tiebreaker";
|
||||||
}
|
}
|
||||||
result.addAll(handlePlayerWin(state, winner));
|
result.addAll(handlePlayerWin(state, winner, reason[0]));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1224,8 +1226,8 @@ public class GameLogic {
|
|||||||
* @param winner The winning character
|
* @param winner The winning character
|
||||||
* @return The list of resulting {@link Event Events}
|
* @return The list of resulting {@link Event Events}
|
||||||
*/
|
*/
|
||||||
private static ArrayList<Event> handlePlayerWin(GameState state, EntityType winner) {
|
private static ArrayList<Event> handlePlayerWin(GameState state, EntityType winner, String reason) {
|
||||||
Logger.trace("Player " + winner + " won");
|
Logger.trace("Player " + winner + " won: " + reason);
|
||||||
|
|
||||||
ArrayList<Event> result = new ArrayList<>();
|
ArrayList<Event> result = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -15,9 +15,20 @@ public class WinConditionManager {
|
|||||||
* @return The {@link EntityType} that is currently winning the game according to overtime ruling
|
* @return The {@link EntityType} that is currently winning the game according to overtime ruling
|
||||||
*/
|
*/
|
||||||
public EntityType getWinner() {
|
public EntityType getWinner() {
|
||||||
|
return getWinner(new String[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current winner
|
||||||
|
* @param reason Will be filled in with the deciding {@link WinCondition}
|
||||||
|
* @return The {@link EntityType} that is currently winning the game according to overtime ruling
|
||||||
|
*/
|
||||||
|
public EntityType getWinner(String[] reason) {
|
||||||
int value1;
|
int value1;
|
||||||
int value2;
|
int value2;
|
||||||
for(WinCondition condition: WinCondition.values()) {
|
for(WinCondition condition: WinCondition.values()) {
|
||||||
|
reason[0] = condition.name();
|
||||||
|
|
||||||
value1 = getValue(EntityType.P1, condition);
|
value1 = getValue(EntityType.P1, condition);
|
||||||
value2 = getValue(EntityType.P2, condition);
|
value2 = getValue(EntityType.P2, condition);
|
||||||
|
|
||||||
@ -29,6 +40,7 @@ public class WinConditionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reason[0] = "";
|
||||||
return EntityType.None;
|
return EntityType.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user