Exemplo n.º 1
0
 public StackButton(Texture2D texture, Player p, SpriteBatch sBatch, Thing t, Tile hex, int width, int height, int x, int y)
     : base(texture, sBatch, width, height, x, y)
 {
     image = texture;
     thingsInStack = new List<Thing>(10);
     thingsInStack.Add(t);
     hexStackIsOn = hex;
     owner = p;
 }
Exemplo n.º 2
0
 public HexButton(Texture2D[] texture, SpriteBatch sBatch, int width, int height, int x, int y, Tile t, Texture2D[] forts)
     : base(texture, sBatch, width, height, x, y, t)
 {
     hex = t;
     hexNumber = hex.getHexNum();
     backside = texture[0];
     spriteB = sBatch;
     fortTexture = forts;
     stacks = new Dictionary<int, StackButton>(4);
     stacks[1] = null;
     stacks[2] = null;
     stacks[3] = null;
     stacks[4] = null;
 }
Exemplo n.º 3
0
 public void moveStack(Tile t)
 {
     hexStackIsOn = t;
 }
Exemplo n.º 4
0
 public void removeOwnedTile(Tile hex)
 {
     ownedTiles.Remove(hex);
 }
Exemplo n.º 5
0
 public void addOwnedTile(Tile hex)
 {
     ownedTiles.Add(hex);
 }
Exemplo n.º 6
0
        //hexes
        public Button(Texture2D[] texture, SpriteBatch sBatch, int width, int height, int x, int y, Tile t)
        {
            //_hex = t;
            //backside = texture[0];
            //hexNumber = _hex.getHexNum();
            switch (t.getType())
            {
                case "Desert":          image = texture[1];
                                        break;

                case "Forest":          image = texture[2];
                                        break;

                case "Frozen Waste":    image = texture[3];
                                        break;

                case "Jungle":          image = texture[4];
                                        break;

                case "Mountain":        image = texture[5];
                                        break;

                case "Plains":          image = texture[6];
                                        break;

                case "Sea":             image = texture[7];
                                        break;

                case "Swamp":           image = texture[8];
                                        break;
            }

            location = new Rectangle(x, y, width, height);
            spriteBatch = sBatch;
            //buttonType = number;
            topleft = new Point(25 + x, 0 + y);
            midleft = new Point(0 + x, 50 + y);
            botleft = new Point(25 + x, 100 + y);
            topright = new Point(85 + x, 0 + y);
            midright = new Point(110 + x, 50 + y);
            botright = new Point(85 + x, 100 + y);
            middle = new Rectangle(topleft.X, topleft.Y, 60, 100);
            //needDice = false;
        }
Exemplo n.º 7
0
 public static StackButton createStack(Tile hex, Thing t, SpriteBatch s)
 {
     StackButton stackB = new StackButton(stackTexture, me, s, t, hex, 30, 30, 0, 0);
     StackButtons.Add(stackB);
     return stackB;
 }
Exemplo n.º 8
0
        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);
            }
        }