private void checkWinner() { int c = 0; if (builtCitadel == false) { for (int i = 0; i < 37; i++) { if (GameBoard.Game.getMap().getHexList()[i].getFort() == 4) c++; } if (c == 1) { //Player win //if (GameBoard.Game.getMap().getHexList()[i].getFort() == 4) //GameBoard.Game.win(GameBoard.Game.getMap().getHexList()[i].getPlayer()); WinMessage wm = new WinMessage(currentPlayer.getName()); wm.Show(); } } }
public void resolveCombat(Tile t) { bool resolved = false; int attacker = 0; int defender = t.getPlayer().getPlayerNumber(); for (int i = 1; i < 5; i++) { if (i != defender) { if (t.doesPlayerHaveStack(i)) attacker = i; } } BattleForm combatF; List<Thing> attackerStack = t.getPlayerStack(attacker); List<Thing> defenderStack = t.getPlayerStack(defender); Random r = new Random(); int attackerRolls = 0; int defenderRolls = 0; foreach (Thing aThing in attackerStack) { if (aThing.combatScore() <= r.Next(1, 7)) attackerRolls++; } foreach (Thing aThing in defenderStack) { if (aThing.combatScore() <= r.Next(1, 7)) defenderRolls++; } combatF = new BattleForm(attackerStack, defenderStack, attackerRolls, defenderRolls, attacker, defender); DialogResult dResult = combatF.ShowDialog(); //Tile stack for attacker is refreshed this.hex.clearPlayerStack(attacker); foreach (Thing aThing in combatF.getAttackerStack()) this.hex.addToPlayerStack(attacker, aThing); KNT_Game.removeStack(stacks[attacker]); if (this.hex.doesPlayerHaveStack(attacker)) { stacks[attacker] = KNT_Game.createStack(this.hex, this.hex.getPlayerStack(attacker), spriteBatch); if (attacker == 1) stacks[attacker].Location(0 + topleft.X, 35 + topleft.Y); if (attacker == 2) stacks[attacker].Location(25 + topleft.X, 35 + topleft.Y); if (attacker == 3) stacks[attacker].Location(0 + topleft.X, 65 + topleft.Y); if (attacker == 4) stacks[attacker].Location(25 + topleft.X, 65 + topleft.Y); stacks[attacker].thingsInStack = this.hex.getPlayerStack(attacker); } //Tile stack for defender is refreshed this.hex.clearPlayerStack(defender); foreach (Thing aThing in combatF.getDefenderStack()) this.hex.addToPlayerStack(defender, aThing); KNT_Game.removeStack(stacks[defender]); if (this.hex.doesPlayerHaveStack(defender)) { stacks[defender] = KNT_Game.createStack(this.hex, this.hex.getPlayerStack(defender), spriteBatch); if (defender == 1) stacks[defender].Location(0 + topleft.X, 35 + topleft.Y); if (defender == 2) stacks[defender].Location(25 + topleft.X, 35 + topleft.Y); if (defender == 3) stacks[defender].Location(0 + topleft.X, 65 + topleft.Y); if (defender == 4) stacks[defender].Location(25 + topleft.X, 65 + topleft.Y); stacks[defender].thingsInStack = this.hex.getPlayerStack(defender); } if (!this.hex.doesPlayerHaveStack(attacker) || !this.hex.doesPlayerHaveStack(defender)) { resolved = true; this.hex.setCFlag(false); //CONQUER BY COMBAT if (this.hex.doesPlayerHaveStack(attacker)) { KNT_Game.deleteMarker(currentMarkerID); this.hex.getPlayer().removeOwnedTile(this.hex); this.hex.setPlayerControl(GameBoard.Game.getPlayerByNumber(attacker)); this.hex.setPlayerControlBool(true); GameBoard.Game.getPlayerByNumber(attacker).addOwnedTile(this.hex); int c = 0; foreach(Tile aTile in GameBoard.Game.getPlayerByNumber(attacker).getOwnedTiles()) { if (aTile.getFort() == 4) c++; } if (c == 2) { WinMessage wm = new WinMessage(KNT_Game.me.getName()); wm.Show(); } currentMarkerID = KNT_Game.createMarker(topleft, attacker, spriteB); } } if (dResult == DialogResult.OK && resolved == false) { resolveCombat(this.hex); } }