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); }
private void Ready() { statsUI.RemoveCharacter(); Globals.background = background; selectedCharacter.ResetColorEffect(); ((GameState)StateManager.GetState(1)).SetArmy(Armies.army); StateManager.ChangeState(Settings.STATES.MatchFinder); }
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); }
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); } }
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; }
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 }
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); }
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); } } }
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; } }
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); }
public override void Draw(SpriteBatch spriteBatch) { StateManager.GetState(1).Draw(spriteBatch); spriteBatch.DrawRectangle(Main.WindowRectangle, Color.Black * .75f); }
private void ReceivedArmy() { ((GameState)StateManager.GetState(1)).SetEnemyArmy(Armies.opponentArmy); StateManager.ChangeState(Settings.STATES.GameUI); }
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; } }
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]); }
private void ReceivedMove(int charIndex, Point gridLocation) { ((GameState)StateManager.GetState(1)).MoveUnit(Armies.opponentArmy[charIndex], gridLocation); }
private List <Character> GetArmy() { return(((GameState)StateManager.GetState(1)).GetArmy()); }
public List <Character> GetEnemyArmy() { return(((GameState)StateManager.GetState(1)).GetEnemyArmy()); }
public void AttackUnit(Character attacker, Character defender) { StateManager.AddState(Settings.STATES.Fight); ((FightState)StateManager.GetState(0)).SetUnits(attacker, defender); }