/// <summary> /// /// </summary> /// <param name="spriteBatch"></param> public static void Draw(SpriteBatch spriteBatch) { spriteBatch.DrawString(Game1.font, $"Hp: {Hp}", new Vector2(20, 10), Color.Black); spriteBatch.DrawString(Game1.font, $"Money: {Money}", new Vector2(20, 30), Color.Black); spriteBatch.DrawString(Game1.font, $"Wave: {EntitySpawner.wave}", new Vector2(20, 50), Color.Black); spriteBatch.Draw(ActivateSpellTex, ActivateSpellBox, Color.White); spriteBatch.DrawString(Game1.font, spellCount.ToString(), new Vector2(ActivateSpellBox.Right, ActivateSpellBox.Top), Color.Black); spriteBatch.Draw(HotbarTex, new Rectangle(0, 560, 800, 80), Color.White); spriteBatch.Draw(NextWaveTex, NextWaveBox, Color.White); foreach (Tower tower in TowerTypes.Keys) { Rectangle hotbarBox; TowerTypes.TryGetValue(tower, out hotbarBox); if (hotbarBox.Contains(Game1.mouseState.Position)) { spriteBatch.DrawString(Game1.font, tower.Name, new Vector2(hotbarBox.X + 10, hotbarBox.Y - 25), Color.DarkGreen); } if (Money < tower.Cost) { spriteBatch.Draw(tower.Texture, hotbarBox, Color.DimGray); } else { spriteBatch.Draw(tower.Texture, hotbarBox, Color.White); } } if (TowerSelected != null) { TowerSelected.Draw(spriteBatch); } }
bool CheckIfTowerHover() { TowerDeselected?.Invoke(); RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(mouse.position.ReadValue()); if (Physics.Raycast(ray, out hit, Mathf.Infinity, towerLayer)) { TowerSelected?.Invoke(hit.transform.position); return(true); } return(false); }
/// <summary> /// /// </summary> /// <param name="towers"></param> public static void Update(List <Tower> towers) { if (TowerSelected != null) { TowerSelected.Drawbox = new Rectangle(Game1.mouseState.Position.X - TowerSelected.Drawbox.Width / 2, Game1.mouseState.Position.Y - TowerSelected.Drawbox.Height / 2, TowerSelected.Drawbox.Width, TowerSelected.Drawbox.Height); TowerSelected.Update(); } int n = 0; foreach (Tower tower in TowerTypes.Keys) { Rectangle hotbarBox; TowerTypes.TryGetValue(tower, out hotbarBox); if (Game1.mouseState.LeftButton == ButtonState.Pressed && Game1.prevMouseState.LeftButton != ButtonState.Pressed && hotbarBox.Contains(Game1.mouseState.Position) || Game1.KeyState.IsKeyDown(Options.hotbarKeys[n]) && Game1.prevKeyState.IsKeyUp(Options.hotbarKeys[n]) && Money >= tower.Cost) { TowerSelected = tower; } n++; } int tempCounter = 0; foreach (Tower tower in towers) { if (tower is SpellTower) { if ((tower as SpellTower).SpellReady) { tempCounter++; if (Game1.mouseState.LeftButton == ButtonState.Pressed && Game1.prevMouseState.LeftButton != ButtonState.Pressed && ActivateSpellBox.Contains(Game1.mouseState.Position) || Game1.KeyState.IsKeyDown(Options.activateSpell) && Game1.prevKeyState.IsKeyUp(Options.activateSpell)) { (tower as SpellTower).SpellActivate = true; break; } } } } spellCount = tempCounter; }
private void OnTowerSelected(ICanSelect tower) { TowerSelected?.Invoke(tower as TowerBase); }