//Metod för utritning av item information när man har musen över dess position internal void DrawItemStats(Model.Item a_item, Vector2 a_itemPosition) { if (a_item.GetType() == Model.GameModel.QUEST_ITEM) { m_spriteBatch.Draw(m_textures[ITEM_STATS_BG_SMALL], new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width - 10, a_itemPosition.Y), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Quest Item", new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 8), Color.White); } else { m_spriteBatch.Draw(m_textures[ITEM_STATS_BACKGROUND], new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width - 10, a_itemPosition.Y), Color.White); if (a_item.GetType() == Model.GameModel.ARMOR) { Model.Armor armor = a_item as Model.Armor; //Kod som visar itemets stats när man håller musen över. if (armor.Type == Model.Armor.HEAD_ARMOR) { m_spriteBatch.DrawString(m_spriteFontSegoe, "Slot: Head", new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 4), Color.White); } m_spriteBatch.DrawString(m_spriteFontSegoe, "Armor: +" + armor.ArmorValue.ToString(), new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 19), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Resist: +" + armor.MagicResistValue.ToString(), new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 34), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Health: +" + armor.HealthValue.ToString(), new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 49), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Mana: +" + armor.ManaValue.ToString(), new Vector2(a_itemPosition.X + a_item.ThisItem.Bounds.Width, a_itemPosition.Y + 64), Color.White); } } }
/// <summary> /// Method for rendering item information when hovering over the item /// </summary> /// <param name="item">The item whos stats will be shown</param> /// <param name="itemPosition">The items position</param> internal void DrawItemStats(Model.Item item, Vector2 itemPosition) { if (item.GetType() == Model.GameModel.QUEST_ITEM) { _spriteBatch.Draw(_textures[Convert.ToInt32(Texture.ITEM_STATS_BG_SMALL)], new Vector2(itemPosition.X + item.ThisItem.Bounds.Width - 10, itemPosition.Y), Color.White); _spriteBatch.DrawString(_spriteFontSegoe, "Quest Item", new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 8), Color.White); } else { _spriteBatch.Draw(_textures[Convert.ToInt32(Texture.ITEM_STATS_BACKGROUND)], new Vector2(itemPosition.X + item.ThisItem.Bounds.Width - 10, itemPosition.Y), Color.White); if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor armor = item as Model.Armor; if (armor.Type == Model.Armor.HEAD_ARMOR) { _spriteBatch.DrawString(_spriteFontSegoe, "Slot: Head", new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 4), Color.White); } _spriteBatch.DrawString(_spriteFontSegoe, "Armor: +" + armor.ArmorValue.ToString(), new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 19), Color.White); _spriteBatch.DrawString(_spriteFontSegoe, "Resist: +" + armor.MagicResistValue.ToString(), new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 34), Color.White); _spriteBatch.DrawString(_spriteFontSegoe, "Health: +" + armor.HealthValue.ToString(), new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 49), Color.White); _spriteBatch.DrawString(_spriteFontSegoe, "Mana: +" + armor.ManaValue.ToString(), new Vector2(itemPosition.X + item.ThisItem.Bounds.Width, itemPosition.Y + 64), Color.White); } } }
//Metod för utritning av Items på kartan samt sättande spelarens Itemtarget private void DrawItems(float a_elapsedTime) { List <Model.Item> items = m_gameModel.m_itemSystem.m_items; Model.Player player = m_gameModel.m_playerSystem.m_player; foreach (Model.Item item in items) { if (m_inputHandler.MouseIsOver(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { m_inputHandler.MouseIsOverLoot = true; } //Kontrollerar om spelaren har targetat ett item. if (m_inputHandler.DidGetTargetedByLeftClick(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { player.ItemTarget = item; } if (player.ItemTarget == item) { if (m_inputHandler.DidGetTargetedByLeftClick(m_camera.VisualizeRectangle(item.ThisItem.Bounds)) && player.ItemTarget.ThisItem.Bounds.Intersects(player.CollisionArea) && !m_lootWatch.IsRunning) { item.WasLooted = true; } else { item.WasLooted = false; } } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { Vector2 position = m_camera.VisualizeCordinates(Armor.ThisItem.Bounds.Location.X, Armor.ThisItem.Bounds.Location.Y); int itemAnimation = 0; itemAnimation = AnimationSystem.FACING_CAMERA; m_animationSystem.UpdateAndDraw(a_elapsedTime, Color.White, position, itemAnimation, AnimationSystem.ITEM_PURPLE_CHEST); } } } }
/// <summary> /// Method for drawing of map Items as well as setting the players item targets /// </summary> /// <param name="elapsedTime">Elapsed time in milleseconds</param> private void DrawItems(float elapsedTime, Model.Player player) { List <Model.Item> items = _gameModel.ItemSystem._items; foreach (Model.Item item in items) { if (_inputHandler.MouseIsOver(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { _inputHandler.MouseIsOverLoot = true; } //Checks if the player targeted an item if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { player.ItemTarget = item; } if (player.ItemTarget == item) { if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(item.ThisItem.Bounds)) && player.ItemTarget.ThisItem.Bounds.Intersects(player.CollisionArea) && !_lootWatch.IsRunning) { item.WasLooted = true; } else { item.WasLooted = false; } } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { Vector2 position = _camera.VisualizeCordinates(Armor.ThisItem.Bounds.Location.X, Armor.ThisItem.Bounds.Location.Y); Model.State itemAnimation = 0; itemAnimation = Model.State.FACING_CAMERA; _animationSystem.UpdateAndDraw(elapsedTime, Color.White, position, itemAnimation, AnimationSystem.Texture.ITEM_PURPLE_CHEST); } } } }
//Metod för utritning av karaktärspanelen private void DrawCharacterPanel() { Vector2 pos = new Vector2(); Vector2 panelPos = new Vector2(m_player.CharPanel.Position.X, m_player.CharPanel.Position.Y); Model.Item statsItem = null; Rectangle charPanelRect = new Rectangle(0, 0, m_textures[CHAR_PANEL_BG].Width, m_textures[CHAR_PANEL_BG].Height); Rectangle closeCross = GetCloseButton(m_player.CharPanel.Position.X, m_player.CharPanel.Position.Y, CHAR_PANEL_BG); if (m_player.CharPanel.IsOpen) { m_spriteBatch.Draw(m_textures[CHAR_PANEL_BG], panelPos, charPanelRect, Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Health: +" + m_player.TotalHp.ToString(), panelPos + new Vector2(80, 70), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Mana: +" + m_player.TotalMana.ToString(), panelPos + new Vector2(80, 85), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Damage: +10", panelPos + new Vector2(80, 100), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Crit: 10%", panelPos + new Vector2(80, 115), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Armor: +" + m_player.Armor.ToString(), panelPos + new Vector2(80, 130), Color.White); m_spriteBatch.DrawString(m_spriteFontSegoe, "Resist: +" + m_player.Resist.ToString(), panelPos + new Vector2(80, 145), Color.White); if (m_inputHandler.MouseIsOver(new Rectangle((int)m_player.CharPanel.Position.X, (int)m_player.CharPanel.Position.Y, m_textures[CHAR_PANEL_BG].Bounds.Width, m_textures[CHAR_PANEL_BG].Bounds.Height))) { m_inputHandler.MouseIsOverInterface = true; } if (m_inputHandler.DidGetTargetedByLeftClick(closeCross)) { m_player.CharPanel.IsOpen = false; } } Vector2 position = new Vector2(m_player.CharPanel.Position.X + 13, m_player.CharPanel.Position.Y + 39); Rectangle itemRect = new Rectangle(0, 0, 32, 32); #region Ritar Equippade Items foreach (Model.Item item in m_player.CharPanel.EquipedItems) { item.ThisItem.Bounds.X = (int)m_player.CharPanel.Position.X + m_camera.GetScreenRectangle.X + 10; item.ThisItem.Bounds.Y = (int)m_player.CharPanel.Position.Y + m_camera.GetScreenRectangle.Y + 25; if (m_player.CharPanel.IsOpen) { if (m_inputHandler.DidGetTargetedByLeftClick(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { m_player.CharPanelTarget = item; } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { m_spriteBatch.Draw(m_textures[HEADARMOR], position, itemRect, Color.White, 0f, Vector2.Zero, 1.5f, SpriteEffects.None, 0f); } } } //Kollar om spelaren har musen över ett item. isf så ska stats visas. if (m_inputHandler.MouseIsOver(m_camera.VisualizeRectangle(item.ThisItem.Bounds))) { pos = position; statsItem = item; } } #endregion if (statsItem != null && m_player.CharPanel.IsOpen) { DrawItemStats(statsItem, pos); } }
/// <summary> /// Method for drawing of the CharacterPanel /// </summary> private void DrawCharacterPanel() { Vector2 pos = new Vector2(); Vector2 panelPos = new Vector2(_player.CharPanel.Position.X, _player.CharPanel.Position.Y); Model.Item statsItem = null; Rectangle charPanelRect = new Rectangle(0, 0, GetTexture(Texture.CHAR_PANEL_BG).Width, GetTexture(Texture.CHAR_PANEL_BG).Height); Rectangle closeCross = GetCloseButton(_player.CharPanel.Position.X, _player.CharPanel.Position.Y, Texture.CHAR_PANEL_BG); if (_player.CharPanel.IsOpen) { _spriteBatch.Draw(GetTexture(Texture.CHAR_PANEL_BG), panelPos, charPanelRect, Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Health: +" + _player.TotalHp.ToString(), panelPos + new Vector2(80, 70), Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Mana: +" + _player.TotalMana.ToString(), panelPos + new Vector2(80, 85), Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Damage: +10", panelPos + new Vector2(80, 100), Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Crit: 10%", panelPos + new Vector2(80, 115), Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Armor: +" + _player.Armor.ToString(), panelPos + new Vector2(80, 130), Color.White); _spriteBatch.DrawString(_common.SpriteFontSegoe, "Resist: +" + _player.Resist.ToString(), panelPos + new Vector2(80, 145), Color.White); if (_inputHandler.MouseIsOver(new Rectangle((int)_player.CharPanel.Position.X, (int)_player.CharPanel.Position.Y, GetTexture(Texture.CHAR_PANEL_BG).Bounds.Width, GetTexture(Texture.CHAR_PANEL_BG).Bounds.Height))) { _inputHandler.MouseIsOverInterface = true; } if (_inputHandler.DidGetTargetedByLeftClick(closeCross)) { _player.CharPanel.IsOpen = false; } } Vector2 position = new Vector2(_player.CharPanel.Position.X + 13, _player.CharPanel.Position.Y + 39); Rectangle itemRect = new Rectangle(0, 0, 32, 32); #region Ritar Equippade Items foreach (Model.Item item in _player.CharPanel.EquipedItems) { item.ThisItem.Bounds.X = (int)_player.CharPanel.Position.X + _camera.GetScreenRectangle.X + 10; item.ThisItem.Bounds.Y = (int)_player.CharPanel.Position.Y + _camera.GetScreenRectangle.Y + 25; if (_player.CharPanel.IsOpen) { if (_inputHandler.DidGetTargetedByLeftClick(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { _player.CharPanelTarget = item; } if (item.GetType() == Model.GameModel.ARMOR) { Model.Armor Armor = item as Model.Armor; if (Armor.Type == Model.Armor.HEAD_ARMOR) { _spriteBatch.Draw(GetTexture(Texture.HEADARMOR), position, itemRect, Color.White, 0f, Vector2.Zero, 1.5f, SpriteEffects.None, 0f); } } } //Checks if the ccursor is hovering the item if (_inputHandler.MouseIsOver(_camera.VisualizeRectangle(item.ThisItem.Bounds))) { pos = position; statsItem = item; } } #endregion if (statsItem != null && _player.CharPanel.IsOpen) { _common.DrawItemStats(statsItem, pos); } }