Ejemplo n.º 1
0
        public bool TestForMove(GameTime gameTime)
        {
            if (canMoveTo != null)
            {
                for (int i = 0; i < canMoveTo.Count; i++)
                {
                    Rectangle hitbox = new Rectangle(Grid.ToPixelLocation(new Point((int)canMoveTo[i].X, (int)canMoveTo[i].Y), Globals.GridLocation, Globals.TileDimensions).X, Grid.ToPixelLocation(new Point((int)canMoveTo[i].X, (int)canMoveTo[i].Y), Globals.GridLocation, Globals.TileDimensions).Y, Globals.TILE_WIDTH, Globals.TILE_HEIGHT);
                    if (hitbox.Contains(Globals.mouseState.Position))
                    {
                        if (Armies.army[selected].special == Character.Special.Bomb)
                        {
                            canMove[Armies.army.Count - 3] = false;
                        }

                        Globals.multiplayerConnection.SendMove(selected, canMoveTo[i]);
                        ((GameState)StateManager.GetState(1)).MoveUnit(((GameState)StateManager.GetState(1)).GetArmy()[selected], canMoveTo[i]);

                        canMove[selected] = false;
                        if (!canAttack[selected])
                        {
                            selected = -1;
                        }
                        canMoveTo = null;
                        return(true);;
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        private void Ready()
        {
            statsUI.RemoveCharacter();
            Globals.background = background;

            selectedCharacter.ResetColorEffect();
            ((GameState)StateManager.GetState(1)).SetArmy(Armies.army);

            StateManager.ChangeState(Settings.STATES.MatchFinder);
        }
Ejemplo n.º 3
0
        public bool TestForAttack(GameTime gameTime)
        {
            if (selected >= 0 && canAttack[selected] && canAttackThis != null)
            {
                if (Armies.army[selected].special != Character.Special.Healer)
                {
                    for (int i = 0; i < canAttackThis.Count; i++)
                    {
                        Armies.opponentArmy[canAttackThis[i]].sprite.CurrentFrame = 1;
                    }
                    for (int i = 0; i < canAttackThis.Count; i++)
                    {
                        Rectangle hitbox = Armies.opponentArmy[canAttackThis[i]].Hitbox;
                        if (hitbox.Contains(Globals.mouseState.Position))
                        {
                            statsUI.RemoveCharacter();
                            Globals.multiplayerConnection.SendFight(selected, canAttackThis[i]);
                            ((GameState)StateManager.GetState(Settings.STATES.Game)).AttackUnit(Armies.army[selected], Armies.opponentArmy[canAttackThis[i]]);

                            canAttack[selected] = false;
                            if (!canMove[selected])
                            {
                                selected = -1;
                            }
                            return(true);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < canAttackThis.Count; i++)
                    {
                        Armies.army[canAttackThis[i]].sprite.CurrentFrame = 1;
                    }
                    for (int i = 0; i < canAttackThis.Count; i++)
                    {
                        Rectangle hitbox = Armies.army[canAttackThis[i]].Hitbox;
                        if (hitbox.Contains(Globals.mouseState.Position))
                        {
                            statsUI.RemoveCharacter();
                            Globals.multiplayerConnection.SendFight(selected, canAttackThis[i]);
                            ((GameState)StateManager.GetState(1)).AttackUnit(Armies.army[selected], Armies.army[canAttackThis[i]]);

                            canAttack[selected] = false;
                            if (!canMove[selected])
                            {
                                selected = -1;
                            }
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 4
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            StateManager.GetState(1).Draw(spriteBatch);

            background.Draw(spriteBatch);
            rewardText.Draw(spriteBatch);

            foreach (Sprite number in diamondsDisplay)
            {
                number.Draw(spriteBatch);
            }
        }
Ejemplo n.º 5
0
        private void SetMovable()
        {
            canMove   = new List <bool>();
            canAttack = new List <bool>();

            for (int i = 0; i < ((GameState)StateManager.GetState(1)).GetArmy().Count; i++)
            {
                canMove.Add(true);
                canAttack.Add(true);
            }
            canMove[canMove.Count - 1]     = false;
            canMove[canMove.Count - 2]     = false;
            canAttack[canAttack.Count - 1] = false;
            canAttack[canAttack.Count - 2] = false;
        }
Ejemplo n.º 6
0
        public void GetWalkable(GameTime gameTime)
        {
            int[,] level = ((GameState)StateManager.GetState(Settings.STATES.Game)).DuplicateLevel();

            ((GameState)StateManager.GetState(Settings.STATES.Game)).SetUnwalkable(ref level, Armies.army[selected]);

            // Uncomment to Print the grid

            /*for (int i = 0; i < level.GetLength(0); i++)
             * {
             *  Console.WriteLine();
             *  for (int j = 0; j < level.GetLength(1); j++)
             *      Console.Write(level[i, j]);
             * }*/
            // Uncomment to Print the grid

            // PATHFINDING FOR REACHABLE AREA
            List <List <Node> > field = new List <List <Node> >();

            for (int i = 0; i < level.GetLength(0); i++)
            {
                field.Add(new List <Node>());
                for (int j = 0; j < level.GetLength(1); j++)
                {
                    field[i].Add(new Node(i, j, level[i, j]));
                }
            }

            AStar.SetField(field);
            Point GPos = Armies.army[selected].GridPosition;

            AStar.Area(GPos.X, GPos.Y, Armies.army[selected].move);
            List <Node> nodes = AStar.GetClosed();

            canMoveTo = new List <Point>();

            moveArrows = new List <SpineAnimation>();
            for (int i = 1; i < nodes.Count; i++)
            {
                canMoveTo.Add(new Point(nodes[i].x, nodes[i].y));
                moveArrows.Add(AnimationAssets.ArrowIcon);
                GPos = Grid.ToPixelLocation(new Point(nodes[i].x, nodes[i].y), Globals.GridLocation, Globals.TileDimensions);
                moveArrows[i - 1].Position = new Vector2(GPos.X + Globals.TILE_WIDTH / 2, GPos.Y + Globals.TILE_HEIGHT / 2 - 20);
                moveArrows[i - 1].Update(gameTime);
                moveArrows[i - 1].Update(gameTime);
            }
            // END PATHFINDING FOR REACHABLE AREA
        }
Ejemplo n.º 7
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            StateManager.GetState(1).Draw(spriteBatch);

            /*if (selected >= 0)
             * {
             *  if (canMove[selected])
             *  {
             *      for (int i = 0; i < canMoveTo.Count; i++)
             *      {
             *          spriteBatch.DrawRectangle(new Rectangle(Grid.ToPixelLocation(new Point((int)canMoveTo[i].X, (int)canMoveTo[i].Y), Globals.GridLocation, Globals.TileDimensions).X, Grid.ToPixelLocation(new Point((int)canMoveTo[i].X, (int)canMoveTo[i].Y), Globals.GridLocation, Globals.TileDimensions).Y, Globals.TILE_WIDTH, Globals.TILE_HEIGHT), Color.BlueViolet * .50f);
             *      }
             *  }
             * }/**/

            statsUI.Draw(spriteBatch);
        }
Ejemplo n.º 8
0
        public void SelectUnit(GameTime gameTime)
        {
            for (int i = 0; i < Armies.army.Count; i++)
            {
                if (Armies.army[i].Hitbox.Contains(Globals.mouseState.Position) && (canMove[i] || canAttack[i]) && Armies.army[i].waypoints.Count == 0 && !Armies.army[i].IsDead)
                {
                    bool valid = true;
                    if (canAttackThis != null && selected >= 0 && Armies.army[selected].special == Character.Special.Healer)
                    {
                        for (int j = 0; j < canAttackThis.Count; j++)
                        {
                            if (i == canAttackThis[j])
                            {
                                valid = false;
                            }
                        }
                    }
                    if (valid && StateManager.GetState(1) is GameState)
                    {
                        selected = i;
                        statsUI.ChangeCharacter(((GameState)StateManager.GetState(1)).GetArmy()[i]);
                    }
                }
            }

            if (selected != -1)
            {
                if (canMove[selected])
                {
                    GetWalkable(gameTime);
                }
                if (canAttack[selected])
                {
                    GetAttackable(gameTime);
                }
            }
        }
Ejemplo n.º 9
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            // Background
            StateManager.GetState(2).Draw(spriteBatch);
            spriteBatch.DrawRectangle(Main.WindowRectangle, Color.Black * .5f);

            // UI
            background.Draw(spriteBatch);
            if (!isHealing)
            {
                vsText.Draw(spriteBatch);
            }

            myHealthBar.Draw(spriteBatch);
            enemyHealthbar.Draw(spriteBatch);

            myRankName.Draw(spriteBatch);
            enemyRankName.Draw(spriteBatch);

            switch (character.weapon)
            {
            case Character.Weapon.Axe: spriteBatch.DrawSprite(axeIcon, MyWeaponPosition); break;

            case Character.Weapon.Sword: spriteBatch.DrawSprite(swordIcon, MyWeaponPosition); break;

            case Character.Weapon.Shield: spriteBatch.DrawSprite(shieldIcon, MyWeaponPosition); break;
            }

            switch (enemyCharacter.weapon)
            {
            case Character.Weapon.Axe: spriteBatch.DrawSprite(axeIcon, EnemyWeaponPosition); break;

            case Character.Weapon.Sword: spriteBatch.DrawSprite(swordIcon, EnemyWeaponPosition); break;

            case Character.Weapon.Shield: spriteBatch.DrawSprite(shieldIcon, EnemyWeaponPosition); break;
            }
        }
Ejemplo n.º 10
0
        public override void DrawAnimation(Spine.SkeletonMeshRenderer skeletonRenderer)
        {
            StateManager.GetState(1).DrawAnimation(skeletonRenderer);

            if (selected >= 0)
            {
                if (moveArrows != null)
                {
                    for (int i = 0; i < moveArrows.Count; i++)
                    {
                        moveArrows[i].Draw(skeletonRenderer);
                    }
                }
                if (attackIcons != null && Armies.army[selected].waypoints.Count == 0)
                {
                    for (int i = 0; i < attackIcons.Count; i++)
                    {
                        attackIcons[i].Draw(skeletonRenderer);
                    }
                }
            }

            statsUI.DrawAnimation(skeletonRenderer);
        }
Ejemplo n.º 11
0
 public override void Draw(SpriteBatch spriteBatch)
 {
     StateManager.GetState(1).Draw(spriteBatch);
     spriteBatch.DrawRectangle(Main.WindowRectangle, Color.Black * .75f);
 }
Ejemplo n.º 12
0
        private void ReceivedArmy()
        {
            ((GameState)StateManager.GetState(1)).SetEnemyArmy(Armies.opponentArmy);

            StateManager.ChangeState(Settings.STATES.GameUI);
        }
Ejemplo n.º 13
0
        public override void Update(GameTime gameTime)
        {
            if (selected != -1 && Armies.army[selected].IsDead)
            {
                selected = -1;
            }
            if (!IsTurn)
            {
                buttons[0].enabled = false;
            }
            else
            {
                buttons[0].enabled = true;
            }
            // UPDATE ANIMTION
            if (moveArrows != null)
            {
                for (int i = 0; i < moveArrows.Count; i++)
                {
                    moveArrows[i].Update(gameTime);
                }
            }
            if (attackIcons != null)
            {
                for (int i = 0; i < attackIcons.Count; i++)
                {
                    attackIcons[i].Update(gameTime);
                }
            }
            if (selected >= 0 && canAttackThis != null && canAttack[selected])
            {
                for (int i = 0; i < canAttackThis.Count; i++)
                {
                    Character c = Armies.opponentArmy[canAttackThis[i]];

                    c.UpdateSpriteSheetAnimation(gameTime);

                    if (c.sprite.CurrentFrame == 1)
                    {
                        c.sprite.CurrentFrame = 2;
                    }
                }
            }
            // END UPDATE ANIMATION

            // UNFINISHED WIN/LOSE DEFINITION/EFFECT
            if (Armies.army[0].IsDead || Armies.opponentArmy[0].IsDead)
            {
                StateManager.ChangeState(Settings.STATES.Result);
            }
            // END UNFINISHED WIN/LOSE DEFINITION/EFFECT

            // CONNECTION LOST
            if (Globals.multiplayerConnection.ConnectionLost)
            {
                StateManager.ChangeState(Settings.STATES.Result);
            }
            // END CONNECTION LOST

            if (IsTurn && !Globals.multiplayerConnection.IsWaitingForResponse)
            {
                CheckIfCanAttack();

                if (selected != -1)
                {
                    if (Globals.mouseState.LeftButtonPressed && Main.WindowRectangle.Contains(Globals.mouseState.Position))
                    {
                        bool contains = false;
                        contains = TestForMove(gameTime);
                        if (!contains)
                        {
                            contains = TestForAttack(gameTime);
                        }

                        if (!contains)
                        {
                            canMoveTo = null;
                        }
                        moveArrows  = null;
                        attackIcons = null;
                    }
                }

                if (Globals.mouseState.LeftButtonPressed && Main.WindowRectangle.Contains(Globals.mouseState.Position))
                {
                    SelectUnit(gameTime);
                }
            }

            if (StateManager.GetState(1) is GameState)
            {
                ((GameState)StateManager.GetState(1)).Update(gameTime);
            }
            Globals.multiplayerConnection.Update(gameTime);

            statsUI.UpdateAnimation(gameTime);

            if (selected > -1 && !canAttack[selected])
            {
                canAttackThis = null;
            }
        }
Ejemplo n.º 14
0
 public void ReceivedFight(int charIndexAttacker, int charIndexDefender)
 {
     statsUI.RemoveCharacter();
     ((GameState)StateManager.GetState(1)).AttackUnit(Armies.opponentArmy[charIndexAttacker], Armies.opponentArmy[charIndexAttacker].special != Character.Special.Healer ? Armies.army[charIndexDefender] : Armies.opponentArmy[charIndexDefender]);
 }
Ejemplo n.º 15
0
 private void ReceivedMove(int charIndex, Point gridLocation)
 {
     ((GameState)StateManager.GetState(1)).MoveUnit(Armies.opponentArmy[charIndex], gridLocation);
 }
Ejemplo n.º 16
0
 private List <Character> GetArmy()
 {
     return(((GameState)StateManager.GetState(1)).GetArmy());
 }
Ejemplo n.º 17
0
 public List <Character> GetEnemyArmy()
 {
     return(((GameState)StateManager.GetState(1)).GetEnemyArmy());
 }
Ejemplo n.º 18
0
 public void AttackUnit(Character attacker, Character defender)
 {
     StateManager.AddState(Settings.STATES.Fight);
     ((FightState)StateManager.GetState(0)).SetUnits(attacker, defender);
 }