2018-11-23 21:56:30 -05:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using OpenDiablo2.Common;
|
|
|
|
|
using OpenDiablo2.Common.Attributes;
|
2018-11-24 10:54:02 -05:00
|
|
|
|
using OpenDiablo2.Common.Enums;
|
2018-11-23 21:56:30 -05:00
|
|
|
|
using OpenDiablo2.Common.Interfaces;
|
2018-11-24 10:54:02 -05:00
|
|
|
|
using OpenDiablo2.Core.GameState_;
|
2018-11-23 21:56:30 -05:00
|
|
|
|
|
|
|
|
|
namespace OpenDiablo2.Scenes
|
|
|
|
|
{
|
|
|
|
|
[Scene("Game")]
|
|
|
|
|
public sealed class Game : IScene
|
|
|
|
|
{
|
|
|
|
|
private readonly IRenderWindow renderWindow;
|
|
|
|
|
private readonly IResourceManager resourceManager;
|
2018-11-24 10:54:02 -05:00
|
|
|
|
private GameState gameState;
|
|
|
|
|
|
|
|
|
|
private ISprite testSprite;
|
2018-11-23 21:56:30 -05:00
|
|
|
|
|
|
|
|
|
private ISprite panelSprite, healthManaSprite, gameGlobeOverlapSprite;
|
|
|
|
|
|
2018-11-24 10:54:02 -05:00
|
|
|
|
public Game(IRenderWindow renderWindow, IResourceManager resourceManager, GameState gameState)
|
2018-11-23 21:56:30 -05:00
|
|
|
|
{
|
|
|
|
|
this.renderWindow = renderWindow;
|
|
|
|
|
this.resourceManager = resourceManager;
|
2018-11-24 10:54:02 -05:00
|
|
|
|
this.gameState = gameState;
|
2018-11-23 21:56:30 -05:00
|
|
|
|
|
|
|
|
|
panelSprite = renderWindow.LoadSprite(ResourcePaths.GamePanels, Palettes.Act1);
|
|
|
|
|
healthManaSprite = renderWindow.LoadSprite(ResourcePaths.HealthMana, Palettes.Act1);
|
|
|
|
|
gameGlobeOverlapSprite = renderWindow.LoadSprite(ResourcePaths.GameGlobeOverlap, Palettes.Act1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Render()
|
|
|
|
|
{
|
2018-11-24 10:54:02 -05:00
|
|
|
|
if (gameState.MapDirty)
|
|
|
|
|
RedrawMap();
|
|
|
|
|
|
|
|
|
|
renderWindow.Draw(testSprite);
|
2018-11-23 21:56:30 -05:00
|
|
|
|
|
|
|
|
|
DrawPanel();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DrawPanel()
|
|
|
|
|
{
|
|
|
|
|
// Render the background bottom bar
|
|
|
|
|
renderWindow.Draw(panelSprite, 0, new Point(0, 600));
|
|
|
|
|
renderWindow.Draw(panelSprite, 1, new Point(166, 600));
|
|
|
|
|
renderWindow.Draw(panelSprite, 2, new Point(294, 600));
|
|
|
|
|
renderWindow.Draw(panelSprite, 3, new Point(422, 600));
|
|
|
|
|
renderWindow.Draw(panelSprite, 4, new Point(550, 600));
|
|
|
|
|
renderWindow.Draw(panelSprite, 5, new Point(685, 600));
|
|
|
|
|
|
|
|
|
|
// Render the health bar
|
|
|
|
|
renderWindow.Draw(healthManaSprite, 0, new Point(28, 590));
|
|
|
|
|
renderWindow.Draw(gameGlobeOverlapSprite, 0, new Point(28, 595));
|
|
|
|
|
|
|
|
|
|
// Render the mana bar
|
|
|
|
|
renderWindow.Draw(healthManaSprite, 1, new Point(691, 590));
|
|
|
|
|
renderWindow.Draw(gameGlobeOverlapSprite, 1, new Point(693, 591));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Update(long ms)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2018-11-24 10:54:02 -05:00
|
|
|
|
|
|
|
|
|
private void RedrawMap()
|
|
|
|
|
{
|
|
|
|
|
gameState.MapDirty = false;
|
|
|
|
|
|
|
|
|
|
var x = 0;
|
|
|
|
|
var y = 0;
|
|
|
|
|
testSprite = renderWindow.GenerateMapCell(gameState.MapData, 0, 0, eRenderCellType.Floor, gameState.CurrentPalette);
|
|
|
|
|
testSprite.Location = new Point(((x * 80) - (y * 80)) + 100, ((x * 40) + (y * 40)) + 100);
|
|
|
|
|
}
|
2018-11-23 21:56:30 -05:00
|
|
|
|
}
|
|
|
|
|
}
|