MeleeCheckForLosersAndVictors
- comment
- bug
Leaks handle
defeatedPlayers: In Jass you must set local variables that hold agents (or any child type) tonullat the end of functions to avoid reference counter leaks.- bug
Leaks handle
victoriousPlayers: In Jass you must set local variables that hold agents (or any child type) tonullat the end of functions to avoid reference counter leaks.- patch
1.00
- Source
- Blizzard.j (raise an issue to discuss on Github or submit a PR)
- return type
nothing- Source code
function MeleeCheckForLosersAndVictors takes nothing returns nothing local integer playerIndex local player indexPlayer local force defeatedPlayers = CreateForce() local force victoriousPlayers local boolean gameOver = false // If the game is already over, do nothing if (bj_meleeGameOver) then return endif // If the game was disconnected then it is over, in this case we // don't want to report results for anyone as they will most likely // conflict with the actual game results if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then set bj_meleeGameOver = true return endif // Check each player to see if he or she has been defeated yet. set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (not bj_meleeDefeated[playerIndex] and not bj_meleeVictoried[playerIndex]) then //call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 60, "Player"+I2S(playerIndex)+" has "+I2S(MeleeGetAllyStructureCount(indexPlayer))+" ally buildings.") if (MeleeGetAllyStructureCount(indexPlayer) <= 0) then // Keep track of each defeated player so that we can give // them a defeat later. call ForceAddPlayer(defeatedPlayers, Player(playerIndex)) // Set their defeated flag now so MeleeCheckForVictors // can detect victors. set bj_meleeDefeated[playerIndex] = true endif endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop // Now that the defeated flags are set, check if there are any victors set victoriousPlayers = MeleeCheckForVictors() // Defeat all defeated players call ForForce(defeatedPlayers, function MeleeDoDefeatEnum) // Give victory to all victorious players call ForForce(victoriousPlayers, function MeleeDoVictoryEnum) // If the game is over we should remove all observers if (bj_meleeGameOver) then call MeleeRemoveObservers() endif endfunction