From 3a0cbe4b8e991c91d209095dfd819a85b0cf71f6 Mon Sep 17 00:00:00 2001 From: Tim Sarbin Date: Sat, 24 Nov 2018 22:34:16 -0500 Subject: [PATCH] Added initial pieces of the map engine. --- OpenDiablo2.Common/Interfaces/IGameState.cs | 20 +++ OpenDiablo2.Common/Interfaces/IMapEngine.cs | 18 +++ OpenDiablo2.Common/OpenDiablo2.Common.csproj | 2 + OpenDiablo2.Core/AutofacModule.cs | 4 +- OpenDiablo2.Core/GameState/GameState.cs | 18 ++- OpenDiablo2.Core/Map Engine/MapEngine.cs | 126 +++++++++++++++++++ OpenDiablo2.Core/OpenDiablo2.Core.csproj | 1 + OpenDiablo2.SDL2/SDL2Sprite.cs | 10 +- OpenDiablo2.Scenes/Game.cs | 56 +++++++-- OpenDiablo2.Scenes/SelectHeroClass.cs | 5 +- 10 files changed, 236 insertions(+), 24 deletions(-) create mode 100644 OpenDiablo2.Common/Interfaces/IGameState.cs create mode 100644 OpenDiablo2.Common/Interfaces/IMapEngine.cs create mode 100644 OpenDiablo2.Core/Map Engine/MapEngine.cs diff --git a/OpenDiablo2.Common/Interfaces/IGameState.cs b/OpenDiablo2.Common/Interfaces/IGameState.cs new file mode 100644 index 00000000..294bdeff --- /dev/null +++ b/OpenDiablo2.Common/Interfaces/IGameState.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using OpenDiablo2.Common.Enums; +using OpenDiablo2.Common.Models; + +namespace OpenDiablo2.Common.Interfaces +{ + public interface IGameState + { + MPQDS1 MapData { get; } + int Act { get; } + string MapName { get; } + Palette CurrentPalette { get; } + + void Initialize(string text, eHero value); + } +} diff --git a/OpenDiablo2.Common/Interfaces/IMapEngine.cs b/OpenDiablo2.Common/Interfaces/IMapEngine.cs new file mode 100644 index 00000000..10eea3c8 --- /dev/null +++ b/OpenDiablo2.Common/Interfaces/IMapEngine.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using OpenDiablo2.Common.Models; + +namespace OpenDiablo2.Common.Interfaces +{ + public interface IMapEngine + { + PointF CameraLocation { get; set; } + void Update(long ms); + void Render(); + void NotifyMapChanged(); + } +} diff --git a/OpenDiablo2.Common/OpenDiablo2.Common.csproj b/OpenDiablo2.Common/OpenDiablo2.Common.csproj index 78f520b0..598db43d 100644 --- a/OpenDiablo2.Common/OpenDiablo2.Common.csproj +++ b/OpenDiablo2.Common/OpenDiablo2.Common.csproj @@ -77,8 +77,10 @@ + + diff --git a/OpenDiablo2.Core/AutofacModule.cs b/OpenDiablo2.Core/AutofacModule.cs index e797cb40..a26cf38c 100644 --- a/OpenDiablo2.Core/AutofacModule.cs +++ b/OpenDiablo2.Core/AutofacModule.cs @@ -1,6 +1,7 @@ using Autofac; using OpenDiablo2.Common.Interfaces; using OpenDiablo2.Core.GameState_; +using OpenDiablo2.Core.Map_Engine; using OpenDiablo2.Core.UI; using System; using System.Collections.Generic; @@ -24,8 +25,9 @@ namespace OpenDiablo2.Core builder.RegisterType().As().SingleInstance(); builder.RegisterType