private void postProcessMap() { for (int iX = m_gameBoard.MinX; iX < m_gameBoard.MaxX; ++iX) { for (int iY = m_gameBoard.MinY; iY < m_gameBoard.MaxY; ++iY) { BombermanBasics.Field field = m_gameBoard.getField(iX, iY); if (field != null) { field.IsExploding = false; } } } }
void processExplodedFields(int teamIdx, Team team, ExplosionFieldCollector explodedFields) { int exceptionCntr = 0; while (!explodedFields.isEmpty()) { ++exceptionCntr; if (exceptionCntr > 1000) { throw new Exception("GameController.processExplodedFields(): counter error"); } List <ExplosionFieldCollector.OrderedFields> fieldsOrderedByDistance = explodedFields.popTheLeastTimeFactor(); ExplosionFieldCollector.OrderedFields[] fieldsOrderedByDist = fieldsOrderedByDistance.ToArray(); int distance = (fieldsOrderedByDistance.Count > 0) ? (fieldsOrderedByDist[0].DistanceFactor) : 0; int distancePointCntr = 0; for (int i = 0; i < fieldsOrderedByDist.Length; ++i) { BombermanBasics.Field currentField = fieldsOrderedByDist[i].FieldP; if (currentField != null) { List <BombermanBasics.Team> killedTeams; currentField.killTeamsOnField(out killedTeams); currentField.clearBombs(); //these bombs are now exploded foreach (Team killedTeam in killedTeams) { int oldPoints = killedTeam.Points; killedTeam.Points = oldPoints + distancePointCntr; //the survived teams got their points } foreach (Team survivedTeam in m_teams) { int oldPoints = survivedTeam.Points; survivedTeam.Points = oldPoints + GetNumberOfTeamsDead(); //the survived teams got their points } } if (fieldsOrderedByDist[i].DistanceFactor > distance) { distance = fieldsOrderedByDist[i].DistanceFactor; distancePointCntr++; } } } }