mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
380 lines
19 KiB
C#
380 lines
19 KiB
C#
|
using System;
|
|||
|
using Microsoft.Xna.Framework;
|
|||
|
using Microsoft.Xna.Framework.Graphics;
|
|||
|
using ProjectZ.InGame.Controls;
|
|||
|
using ProjectZ.InGame.GameObjects.Base;
|
|||
|
using ProjectZ.InGame.SaveLoad;
|
|||
|
using ProjectZ.InGame.Things;
|
|||
|
|
|||
|
namespace ProjectZ.InGame.Overlay
|
|||
|
{
|
|||
|
public class MapOverlay
|
|||
|
{
|
|||
|
public bool IsSelected;
|
|||
|
|
|||
|
private RenderTarget2D _renderTarget;
|
|||
|
|
|||
|
private readonly Rectangle _recMap = new Rectangle(8, 0, 144, 144);
|
|||
|
private readonly Rectangle _recHide = new Rectangle(167, 103, 9, 9);
|
|||
|
private readonly Rectangle _recIcon = new Rectangle(161, 1, 30, 30);
|
|||
|
|
|||
|
private Point _selectionPosition;
|
|||
|
private Point _iconPosition;
|
|||
|
|
|||
|
private Animator _animationPlayer = new Animator();
|
|||
|
private Animator _animationSelection = new Animator();
|
|||
|
|
|||
|
private readonly int[,] _mapIcons = new int[16, 16];
|
|||
|
|
|||
|
private readonly string[,] _mapDialog = new string[,] {
|
|||
|
{ "map_tal_tal", "map_tal_tal", "map_tal_tal", "map_tal_tal", "map_tal_tal", "map_tal_tal", "map_wind_fishs_egg", "map_mt_tamaranch", "map_owl_bridge", "map_tal_tal", "map_hen_house", "map_tal_tal", "map_tal_tal", "map_tal_tal", "map_level_7", "map_tal_tal" },
|
|||
|
{ "map_level_8","map_telephone_booth","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal","map_owl_fish","map_owl_mountain","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal","map_tal_tal" },
|
|||
|
{ "map_goponga_swamp","map_goponga_swamp","map_goponga_swamp","map_goponga_swamp","map_level_2","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_level_4","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights" },
|
|||
|
{ "map_weird_mr_write","map_telephone_booth","map_goponga_swamp","map_goponga_swamp","map_goponga_swamp","map_tal_tal_heights","map_owl_tal_tal_heights","map_photo_both","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_tal_tal_heights","map_raft_shop" },
|
|||
|
{ "map_mysterious_woods","map_owl_woods","map_mysterious_woods","map_mysterious_woods","map_koholint_prairie","map_crazy_tracy","map_tabahl_wasteland","map_tabahl_wasteland","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_telephone_booth","map_rapids_ride","map_rapids_ride","map_rapids_ride","map_rapids_ride" },
|
|||
|
{ "map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_koholint_prairie","map_koholint_prairie","map_tabahl_wasteland","map_tabahl_wasteland","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_rapids_ride","map_rapids_ride","map_rapids_ride","map_rapids_ride" },
|
|||
|
{ "map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_owl_prairie","map_witchs_hut","map_cementry","map_cementry","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_rapids_ride","map_rapids_ride","map_rapids_ride","map_rapids_ride" },
|
|||
|
{ "map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_mysterious_woods","map_koholint_prairie","map_koholint_prairie","map_cementry","map_cementry","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_kanalet_castle","map_rapids_ride","map_rapids_ride","map_rapids_ride","map_rapids_ride" },
|
|||
|
{ "map_owl_woods_entry","map_fishing_pond","map_quadruplets_house","map_dream_shrine","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_telephone_booth","map_ukuku_prairie","map_seashell_mansion","map_ukuku_prairie","map_level_6","map_face_shrine","map_rapids_ride","map_rapids_ride" },
|
|||
|
{ "map_mysterious_woods","map_mysterious_woods","map_mabe_village","map_town_tool_shop","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_owl_level_6_post","map_owl_level_6","map_rapids_ride","map_rapids_ride"},
|
|||
|
{ "map_mabe_village","map_madam_meow","map_marin_tarin","map_mabe_village","map_telephone_booth","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_owl_shrine","map_face_shrine","map_face_shrine","map_face_shrine" },
|
|||
|
{ "map_village_library","map_old_man_house","map_telephone_booth","map_trendy_game","map_ukuku_prairie","map_level_3","map_owl_level_3","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_ukuku_prairie","map_face_shrine","map_face_shrine","map_face_shrine","map_face_shrine"},
|
|||
|
{ "map_south_village","map_south_village","map_south_village","map_south_village","map_signpost_maze","map_signpost_maze","map_pothole_field","map_pothole_field","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_animal_village","map_animal_village","map_yarna_desert","map_yarna_desert"},
|
|||
|
{ "map_south_village","map_south_village","map_owl_level_1","map_level_1","map_signpost_maze","map_signpost_maze","map_richards_villa","map_pothole_field","map_maraths_bay","map_level_5","map_maraths_bay","map_telephone_booth","map_animal_village","map_animal_village","map_yarna_desert","map_yarna_desert"},
|
|||
|
{ "map_toronbo_shores","map_toronbo_shores","map_toronbo_shores","map_banana_house","map_toronbo_shores","map_toronbo_shores","map_maraths_bay","map_maraths_bay","map_telephone_booth","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_bay_east","map_bay_east","map_owl_desert","map_yarna_desert"},
|
|||
|
{ "map_toronbo_shores","map_toronbo_shores","map_owl_shore","map_toronbo_shores","map_toronbo_shores","map_toronbo_shores","map_house_bay","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_maraths_bay","map_bay_east","map_bay_east","map_yarna_desert","map_yarna_desert"}};
|
|||
|
|
|||
|
private float _animationCount;
|
|||
|
private float _animationState;
|
|||
|
|
|||
|
private int _width;
|
|||
|
private int _height;
|
|||
|
private int _margin;
|
|||
|
|
|||
|
private int _iconAnimationDirection;
|
|||
|
private int _shownSelection;
|
|||
|
|
|||
|
private double _buttonDownCounter;
|
|||
|
|
|||
|
private bool _iconAnimationRunning;
|
|||
|
private bool _fullMap;
|
|||
|
|
|||
|
public MapOverlay(int width, int height, int margin, bool fullMap)
|
|||
|
{
|
|||
|
_width = width;
|
|||
|
_height = height;
|
|||
|
_margin = margin;
|
|||
|
|
|||
|
_fullMap = fullMap;
|
|||
|
|
|||
|
// 1 shop
|
|||
|
// 2 ?
|
|||
|
// 3 cave
|
|||
|
// 4 owl
|
|||
|
_mapIcons[6, 0] = 2;
|
|||
|
_mapIcons[8, 0] = 4;
|
|||
|
_mapIcons[10, 0] = 2;
|
|||
|
_mapIcons[14, 0] = 3;
|
|||
|
|
|||
|
_mapIcons[0, 1] = 3;
|
|||
|
_mapIcons[1, 1] = 2;
|
|||
|
_mapIcons[6, 1] = 4;
|
|||
|
_mapIcons[7, 1] = 4;
|
|||
|
|
|||
|
_mapIcons[4, 2] = 3;
|
|||
|
_mapIcons[11, 2] = 3;
|
|||
|
|
|||
|
_mapIcons[0, 3] = 2;
|
|||
|
_mapIcons[1, 3] = 2;
|
|||
|
_mapIcons[6, 3] = 4;
|
|||
|
_mapIcons[7, 3] = 1;
|
|||
|
_mapIcons[15, 3] = 3;
|
|||
|
|
|||
|
_mapIcons[1, 4] = 4;
|
|||
|
_mapIcons[5, 4] = 1;
|
|||
|
_mapIcons[11, 4] = 2;
|
|||
|
|
|||
|
_mapIcons[4, 6] = 4;
|
|||
|
_mapIcons[5, 6] = 1;
|
|||
|
|
|||
|
_mapIcons[0, 8] = 4;
|
|||
|
_mapIcons[1, 8] = 1;
|
|||
|
_mapIcons[2, 8] = 2;
|
|||
|
_mapIcons[3, 8] = 2;
|
|||
|
_mapIcons[8, 8] = 2;
|
|||
|
_mapIcons[10, 8] = 2;
|
|||
|
_mapIcons[12, 8] = 3;
|
|||
|
|
|||
|
_mapIcons[3, 9] = 2;
|
|||
|
_mapIcons[12, 9] = 4;
|
|||
|
_mapIcons[13, 9] = 4;
|
|||
|
|
|||
|
_mapIcons[1, 10] = 2;
|
|||
|
_mapIcons[2, 10] = 2;
|
|||
|
_mapIcons[4, 10] = 2;
|
|||
|
_mapIcons[12, 10] = 4;
|
|||
|
|
|||
|
_mapIcons[0, 11] = 2;
|
|||
|
_mapIcons[1, 11] = 2;
|
|||
|
_mapIcons[2, 11] = 2;
|
|||
|
_mapIcons[3, 11] = 1;
|
|||
|
_mapIcons[5, 11] = 3;
|
|||
|
_mapIcons[6, 11] = 4;
|
|||
|
|
|||
|
_mapIcons[2, 13] = 4;
|
|||
|
_mapIcons[3, 13] = 3;
|
|||
|
_mapIcons[6, 13] = 2;
|
|||
|
_mapIcons[9, 13] = 3;
|
|||
|
_mapIcons[11, 13] = 2;
|
|||
|
|
|||
|
_mapIcons[3, 14] = 2;
|
|||
|
_mapIcons[8, 14] = 2;
|
|||
|
_mapIcons[14, 14] = 4;
|
|||
|
|
|||
|
_mapIcons[2, 15] = 4;
|
|||
|
_mapIcons[6, 15] = 2;
|
|||
|
}
|
|||
|
|
|||
|
public void Load()
|
|||
|
{
|
|||
|
_animationPlayer = AnimatorSaveLoad.LoadAnimator("mapPlayer");
|
|||
|
_animationSelection = AnimatorSaveLoad.LoadAnimator("mapSelector");
|
|||
|
|
|||
|
_animationPlayer.Play("idle");
|
|||
|
_animationSelection.Play("idle");
|
|||
|
}
|
|||
|
|
|||
|
public void UpdateRenderTarget()
|
|||
|
{
|
|||
|
if (_renderTarget == null || _renderTarget.Width != _width * Game1.UiScale || _renderTarget.Height != _height * Game1.UiScale)
|
|||
|
_renderTarget = new RenderTarget2D(Game1.Graphics.GraphicsDevice, _width * Game1.UiScale, _height * Game1.UiScale);
|
|||
|
}
|
|||
|
|
|||
|
public void Update()
|
|||
|
{
|
|||
|
_animationPlayer.Update();
|
|||
|
|
|||
|
var mapIcon = _mapIcons[_selectionPosition.X, _selectionPosition.Y];
|
|||
|
|
|||
|
// for owl icons we only show the icon if the owl key was already set
|
|||
|
if (mapIcon == 4 && Game1.GameManager.SaveManager.GetString(_mapDialog[_selectionPosition.Y, _selectionPosition.X], "0") != "1")
|
|||
|
mapIcon = 0;
|
|||
|
|
|||
|
if ((mapIcon != _shownSelection || (mapIcon != 0 && !IsSelected)) && !_iconAnimationRunning)
|
|||
|
{
|
|||
|
if (mapIcon != 0 && _shownSelection == 0 && IsSelected)
|
|||
|
PlayStartAnimation();
|
|||
|
else
|
|||
|
PlayStopAnimation();
|
|||
|
}
|
|||
|
|
|||
|
// update the icon run animation
|
|||
|
if (_iconAnimationRunning)
|
|||
|
{
|
|||
|
_animationCount += Game1.DeltaTime / 100f * _iconAnimationDirection;
|
|||
|
|
|||
|
if (_animationCount >= Math.PI / 2)
|
|||
|
{
|
|||
|
_iconAnimationRunning = false;
|
|||
|
_animationCount = (float)(Math.PI / 2);
|
|||
|
}
|
|||
|
else if (_animationCount < 0)
|
|||
|
{
|
|||
|
_iconAnimationRunning = false;
|
|||
|
_shownSelection = 0;
|
|||
|
}
|
|||
|
|
|||
|
_animationState = (float)Math.Sin(_animationCount);
|
|||
|
}
|
|||
|
|
|||
|
if (!IsSelected)
|
|||
|
return;
|
|||
|
|
|||
|
_animationSelection.Update();
|
|||
|
|
|||
|
if (!Game1.GameManager.InGameOverlay.TextboxOverlay.IsOpen)
|
|||
|
UpdateInput();
|
|||
|
}
|
|||
|
|
|||
|
private void UpdateInput()
|
|||
|
{
|
|||
|
if (ControlHandler.ButtonDown(CButtons.Left) || ControlHandler.ButtonDown(CButtons.Right) ||
|
|||
|
ControlHandler.ButtonDown(CButtons.Up) || ControlHandler.ButtonDown(CButtons.Down))
|
|||
|
_buttonDownCounter -= Game1.DeltaTime;
|
|||
|
else
|
|||
|
_buttonDownCounter = 225;
|
|||
|
|
|||
|
if (ControlHandler.ButtonPressed(CButtons.Left) || (ControlHandler.ButtonDown(CButtons.Left) && _buttonDownCounter < 0))
|
|||
|
{
|
|||
|
_buttonDownCounter += 50;
|
|||
|
MoveSelection(_selectionPosition + new Point(-1, 0));
|
|||
|
}
|
|||
|
if (ControlHandler.ButtonPressed(CButtons.Right) || (ControlHandler.ButtonDown(CButtons.Right) && _buttonDownCounter < 0))
|
|||
|
{
|
|||
|
_buttonDownCounter += 50;
|
|||
|
MoveSelection(_selectionPosition + new Point(1, 0));
|
|||
|
}
|
|||
|
if (ControlHandler.ButtonPressed(CButtons.Up) || (ControlHandler.ButtonDown(CButtons.Up) && _buttonDownCounter < 0))
|
|||
|
{
|
|||
|
_buttonDownCounter += 50;
|
|||
|
MoveSelection(_selectionPosition + new Point(0, -1));
|
|||
|
}
|
|||
|
if (ControlHandler.ButtonPressed(CButtons.Down) || (ControlHandler.ButtonDown(CButtons.Down) && _buttonDownCounter < 0))
|
|||
|
{
|
|||
|
_buttonDownCounter += 50;
|
|||
|
MoveSelection(_selectionPosition + new Point(0, 1));
|
|||
|
}
|
|||
|
|
|||
|
if (ControlHandler.ButtonPressed(CButtons.A))
|
|||
|
{
|
|||
|
if (0 <= _selectionPosition.X && _selectionPosition.X < _mapDialog.GetLength(1) &&
|
|||
|
0 <= _selectionPosition.Y && _selectionPosition.Y < _mapDialog.GetLength(0))
|
|||
|
Game1.GameManager.RunDialog(_mapDialog[_selectionPosition.Y, _selectionPosition.X]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void PlayStartAnimation()
|
|||
|
{
|
|||
|
_iconPosition = new Point(8, 8);
|
|||
|
|
|||
|
_iconPosition.X += _selectionPosition.X >= _mapIcons.GetLength(0) / 2 ? 8 : _mapIcons.GetLength(0) * 8 - _recIcon.Width - 8;
|
|||
|
_iconPosition.Y += _selectionPosition.Y >= _mapIcons.GetLength(1) / 2 ? _mapIcons.GetLength(1) * 8 - _recIcon.Height - 8 : 8;
|
|||
|
|
|||
|
_animationCount = 0;
|
|||
|
_iconAnimationDirection = 1;
|
|||
|
_iconAnimationRunning = true;
|
|||
|
_shownSelection = _mapIcons[_selectionPosition.X, _selectionPosition.Y];
|
|||
|
}
|
|||
|
|
|||
|
public void PlayStopAnimation()
|
|||
|
{
|
|||
|
_animationCount = (float)(Math.PI / 2);
|
|||
|
_iconAnimationDirection = -1;
|
|||
|
_iconAnimationRunning = true;
|
|||
|
}
|
|||
|
|
|||
|
public void OnFocus()
|
|||
|
{
|
|||
|
_shownSelection = 0;
|
|||
|
_animationState = 0;
|
|||
|
|
|||
|
if (Game1.GameManager.PlayerMapPosition != null)
|
|||
|
_selectionPosition = Game1.GameManager.PlayerMapPosition.Value;
|
|||
|
}
|
|||
|
|
|||
|
public void MoveSelection(Point newPosition)
|
|||
|
{
|
|||
|
if (newPosition.X < 0)
|
|||
|
newPosition.X += Game1.GameManager.MapVisibility.GetLength(0);
|
|||
|
if (newPosition.X >= Game1.GameManager.MapVisibility.GetLength(0))
|
|||
|
newPosition.X -= Game1.GameManager.MapVisibility.GetLength(0);
|
|||
|
if (newPosition.Y < 0)
|
|||
|
newPosition.Y += Game1.GameManager.MapVisibility.GetLength(1);
|
|||
|
if (newPosition.Y >= Game1.GameManager.MapVisibility.GetLength(1))
|
|||
|
newPosition.Y -= Game1.GameManager.MapVisibility.GetLength(1);
|
|||
|
|
|||
|
// only move the selection if the new position is visible
|
|||
|
if (newPosition.X >= 0 && newPosition.Y >= 0 &&
|
|||
|
newPosition.X < Game1.GameManager.MapVisibility.GetLength(0) &&
|
|||
|
newPosition.Y < Game1.GameManager.MapVisibility.GetLength(1) &&
|
|||
|
(_fullMap || Game1.GameManager.MapVisibility[newPosition.X, newPosition.Y]))
|
|||
|
{
|
|||
|
_selectionPosition = newPosition;
|
|||
|
|
|||
|
_animationSelection.Stop();
|
|||
|
_animationSelection.Play("idle");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void Draw(SpriteBatch spriteBatch, Rectangle drawPosition, Color color, Matrix? matrix = null)
|
|||
|
{
|
|||
|
Resources.RoundedCornerEffect.Parameters["scale"].SetValue(Game1.UiRtScale);
|
|||
|
Resources.RoundedCornerEffect.Parameters["radius"].SetValue(2f);
|
|||
|
Resources.RoundedCornerEffect.Parameters["width"].SetValue(_width);
|
|||
|
Resources.RoundedCornerEffect.Parameters["height"].SetValue(_height);
|
|||
|
|
|||
|
spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, Resources.RoundedCornerEffect, matrix);
|
|||
|
|
|||
|
spriteBatch.Draw(_renderTarget, drawPosition, color);
|
|||
|
|
|||
|
spriteBatch.End();
|
|||
|
|
|||
|
spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, matrix);
|
|||
|
|
|||
|
if (Game1.GameManager.PlayerMapPosition != null)
|
|||
|
{
|
|||
|
var mapRectangle = new Point(drawPosition.X + _margin, drawPosition.Y + _margin);
|
|||
|
// draw the player
|
|||
|
var position = new Vector2(
|
|||
|
mapRectangle.X + (8 + Game1.GameManager.PlayerMapPosition.Value.X * 8 + 2) * Game1.UiRtScale,
|
|||
|
mapRectangle.Y + (8 + Game1.GameManager.PlayerMapPosition.Value.Y * 8 + 2) * Game1.UiRtScale);
|
|||
|
_animationPlayer.DrawBasic(spriteBatch, position, color, Game1.UiRtScale);
|
|||
|
|
|||
|
// draw the selection
|
|||
|
if (IsSelected)
|
|||
|
{
|
|||
|
position = new Vector2(
|
|||
|
mapRectangle.X + (8 + _selectionPosition.X * 8 + 1) * Game1.UiRtScale,
|
|||
|
mapRectangle.Y + (8 + _selectionPosition.Y * 8 + 1) * Game1.UiRtScale);
|
|||
|
_animationSelection.DrawBasic(spriteBatch, position, color, Game1.UiRtScale);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
spriteBatch.End();
|
|||
|
}
|
|||
|
|
|||
|
public void DrawRenderTarget(SpriteBatch spriteBatch)
|
|||
|
{
|
|||
|
Game1.Graphics.GraphicsDevice.SetRenderTarget(_renderTarget);
|
|||
|
Game1.Graphics.GraphicsDevice.Clear(Color.Transparent);
|
|||
|
|
|||
|
// draw the map
|
|||
|
spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, Matrix.CreateScale(Game1.UiRtScale));
|
|||
|
DrawMap(spriteBatch);
|
|||
|
spriteBatch.End();
|
|||
|
}
|
|||
|
|
|||
|
public void DrawMap(SpriteBatch spriteBatch)
|
|||
|
{
|
|||
|
var mapRectangle = new Point(_margin, _margin);
|
|||
|
|
|||
|
// draw the map
|
|||
|
spriteBatch.Draw(Resources.SprMiniMap,
|
|||
|
new Rectangle(mapRectangle.X, mapRectangle.Y, _recMap.Width, _recMap.Height), _recMap, Color.White);
|
|||
|
|
|||
|
// overlay the not discovered parts of the map
|
|||
|
if (!_fullMap)
|
|||
|
for (var x = 0; x < 16; x++)
|
|||
|
{
|
|||
|
for (var y = 0; y < 16; y++)
|
|||
|
{
|
|||
|
if (!Game1.GameManager.MapVisibility[x, y])
|
|||
|
spriteBatch.Draw(Resources.SprMiniMap, new Rectangle(
|
|||
|
mapRectangle.X + 8 + x * 8,
|
|||
|
mapRectangle.Y + 8 + y * 8,
|
|||
|
_recHide.Width, _recHide.Height), _recHide, Color.White);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// draw icon of the selection
|
|||
|
if (_shownSelection > 0)
|
|||
|
{
|
|||
|
DrawIcon(spriteBatch, new Point(
|
|||
|
mapRectangle.X + _iconPosition.X,
|
|||
|
mapRectangle.Y + _iconPosition.Y), _shownSelection, 1, _animationState);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void DrawIcon(SpriteBatch spriteBatch, Point position, int icon, int scale, float animationPercentage)
|
|||
|
{
|
|||
|
var width = (int)(_recIcon.Width * animationPercentage) / 2;
|
|||
|
var height = (int)(_recIcon.Height * animationPercentage) / 2;
|
|||
|
var posX = position.X + (_recIcon.Width / 2 - width);
|
|||
|
var posY = position.Y + (_recIcon.Height / 2 - height);
|
|||
|
|
|||
|
spriteBatch.Draw(Resources.SprMiniMap, new Rectangle(posX, posY, width * 2, height * 2),
|
|||
|
new Rectangle(_recIcon.X + _recIcon.Width * (icon - 1),
|
|||
|
_recIcon.Y, _recIcon.Width, _recIcon.Height), Color.White);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|