From 92f7c58068c6a7bfe0b32af5c1ace6bdde2f3951 Mon Sep 17 00:00:00 2001 From: Aki Date: Mon, 14 Mar 2022 18:37:12 +0100 Subject: Added instance retrieval method to GameWinDX9 I don't like having a singleton with inheritance. At all. It needs to be removed as soon as possible and functionalities need to be moved outside of this monolith and this is a step into that direction. I think. --- Stars45/GameWinDX9.cpp | 15 +++++++++++++++ Stars45/GameWinDX9.h | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/Stars45/GameWinDX9.cpp b/Stars45/GameWinDX9.cpp index bf7876f..efc825a 100644 --- a/Stars45/GameWinDX9.cpp +++ b/Stars45/GameWinDX9.cpp @@ -17,13 +17,28 @@ #include "Utils.h" +GameWinDX9* GameWinDX9::instance = nullptr; + + +GameWinDX9* +GameWinDX9::GetInstance() +{ + return instance; +} + + GameWinDX9::GameWinDX9() { + if (instance != nullptr) + Panic::Panic("Multiple instances of GameWinDX9"); + instance = this; } GameWinDX9::~GameWinDX9() { + if (instance != nullptr) + instance = nullptr; } diff --git a/Stars45/GameWinDX9.h b/Stars45/GameWinDX9.h index 9151bcd..5193a77 100644 --- a/Stars45/GameWinDX9.h +++ b/Stars45/GameWinDX9.h @@ -14,6 +14,8 @@ class GameWinDX9 : public Game { public: + static GameWinDX9* GetInstance(); + GameWinDX9(); virtual ~GameWinDX9(); @@ -28,6 +30,9 @@ public: protected: PALETTEENTRY standard_palette[256]; BYTE inverse_palette[32768]; + +private: + static GameWinDX9* instance; }; -- cgit v1.1