public Cursor(Game game) : base(game) { pos = new Vector2(20, 0); this.game = game; Initialize(); LoadContent(); map = (BattleMap)game.Services.GetService(typeof(BattleMap)); currentTile = SelectTile(0, 0); screenManager = (ScreenManager)game.Services.GetService(typeof(ScreenManager)); gameStateManager = (GameStateManager)game.Services.GetService(typeof(GameStateManager)); playerManager = (PlayerManager)game.Services.GetService(typeof(PlayerManager)); }
public void RandomMap() { int mapTheme = random.RandomNumber(1, 1); switch (mapTheme) { case 1: //Grassland for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (random.RandomNumber(1, 100) >= 30) { map[i, j] = new Tile("grass"); } else { map[i, j] = new Tile("dirt"); } } } break; } }
public override void Update(GameTime gameTime) { if (gameStateManager.State == GameState.playing) { currentButtonState = GamePad.GetState(PlayerIndex.One); currentKeyState = Keyboard.GetState(PlayerIndex.One); if ((currentButtonState.DPad.Left == ButtonState.Pressed || currentButtonState.ThumbSticks.Left.X < 0 || currentKeyState.IsKeyDown(Keys.Left))) { currentTile.TileDeselect(); pos.X -= 60; if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.DPad.Left == ButtonState.Pressed && oldButtonState.DPad.Left == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Left) && oldKeyState.IsKeyDown(Keys.Left))) { pos.X += 60; } else { buttonFlag = 0; } if (pos.X < 0) pos.X = 20; currentTile = SelectTile((int)pos.Y / 60, (int)pos.X / 60); } if ((currentButtonState.DPad.Right == ButtonState.Pressed || currentButtonState.ThumbSticks.Left.X > 0 || currentKeyState.IsKeyDown(Keys.Right))) { currentTile.TileDeselect(); pos.X += 60; if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.DPad.Right == ButtonState.Pressed && oldButtonState.DPad.Right == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Right) && oldKeyState.IsKeyDown(Keys.Right))) { pos.X -= 60; } else { buttonFlag = 0; } if ((int)pos.X / 60 > map.getWidth() - 1) pos.X -= 60; currentTile = SelectTile((int)pos.Y / 60, (int)pos.X / 60); } if ((currentButtonState.DPad.Up == ButtonState.Pressed || currentButtonState.ThumbSticks.Left.Y > 0 || currentKeyState.IsKeyDown(Keys.Up))) { currentTile.TileDeselect(); pos.Y -= 60; if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.DPad.Up == ButtonState.Pressed && oldButtonState.DPad.Up == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Up) && oldKeyState.IsKeyDown(Keys.Up))) { pos.Y += 60; } else { buttonFlag = 0; } if (pos.Y < 0) pos.Y = 0; currentTile = SelectTile((int)pos.Y / 60, (int)pos.X / 60); } if ((currentButtonState.DPad.Down == ButtonState.Pressed || currentButtonState.ThumbSticks.Left.Y < 0 || currentKeyState.IsKeyDown(Keys.Down))) { currentTile.TileDeselect(); pos.Y += 60; if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.DPad.Down == ButtonState.Pressed && oldButtonState.DPad.Down == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Down) && oldKeyState.IsKeyDown(Keys.Down))) { pos.Y -= 60; } else { buttonFlag = 0; } if ((int)pos.Y / 60 > map.getHeight() - 1) pos.Y -= 60; currentTile = SelectTile((int)pos.Y / 60, (int)pos.X / 60); } if ((currentButtonState.Buttons.A == ButtonState.Pressed || currentKeyState.IsKeyDown(Keys.Space))) { if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.Buttons.A == ButtonState.Pressed && oldButtonState.Buttons.A == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Space) && oldKeyState.IsKeyDown(Keys.Space))) { //Do Nothing buttonFlag = 0; } else { selectedCharacter = map.GetSquare((int)pos.Y / 60, (int)pos.X / 60).getCurrentChar(); if (selectedCharacter == null && moveFlag == 0 && attackFlag == 0) { screenManager.AddScreen(new PopupScreen(game, null), null); buttonFlag = 1; } if (selectedCharacter != null && moveFlag == 0 && attackFlag == 0 && selectedCharacter.PlayerIndex == playerManager.GetCurrentPlayer()) { screenManager.AddScreen(new PopupScreen(game, selectedCharacter), null); buttonFlag = 1; } if (moveFlag == 1 && buttonFlag == 1 && map.GetSquare((int)pos.Y / 60, (int)pos.X / 60).getCurrentChar() == null ) { if(map.GetSquare((int)pos.X / 60, (int)pos.Y / 60).IsMovable) { movingCharacter.Move((int)pos.X / 60, (int)pos.Y / 60); ClearBoard(); } } if (attackFlag == 1 && buttonFlag == 1 && map.GetSquare((int)pos.Y / 60, (int)pos.X / 60).getCurrentChar() != null) { if (map.GetSquare((int)pos.X / 60, (int)pos.Y / 60).IsAttackable) { attackedCharacter = map.GetSquare((int)pos.Y / 60, (int)pos.X / 60).getCurrentChar(); attackedCharacter.Attacked = 1; attackingCharacter.Attacking = 1; attackingCharacter.Attack((int)pos.Y / 60, (int)pos.X / 60); screenManager.AddScreen(new BattleScreen(game, attackingCharacter, attackedCharacter), null); gameStateManager.State = GameState.combat; ClearBoard(); } } } } if ((currentButtonState.Buttons.B == ButtonState.Pressed || currentKeyState.IsKeyDown(Keys.B))) { if (buttonFlag == 0) { buttonFlag = 1; } if ((currentButtonState.Buttons.A == ButtonState.Pressed && oldButtonState.Buttons.A == ButtonState.Pressed) || (currentKeyState.IsKeyDown(Keys.Space) && oldKeyState.IsKeyDown(Keys.Space))) { //Do Nothing buttonFlag = 0; } if (moveFlag == 1 && buttonFlag == 1) { movingCharacter.HasMoved = false; movingCharacter = null; selectedCharacter = null; moveFlag = 0; buttonFlag = 0; for (int i = 0; i < map.getHeight(); i++) { for (int j = 0; j < map.getWidth(); j++) { map.GetSquare(i, j).IsMovable = false; } } } if (attackFlag == 1 && buttonFlag == 1) { attackingCharacter.HasAttacked = false; attackingCharacter = null; attackFlag = 0; buttonFlag = 0; for (int i = 0; i < map.getHeight(); i++) { for (int j = 0; j < map.getWidth(); j++) { map.GetSquare(i, j).IsAttackable = false; } } } } oldButtonState = currentButtonState; oldKeyState = currentKeyState; } base.Update(gameTime); }