From a086bd0e8323faeeab36ad6373a0f458c6c78131 Mon Sep 17 00:00:00 2001 From: Hopson97 Date: Tue, 5 Jun 2018 10:32:13 +0100 Subject: [PATCH] add optional onOpen function to game states --- HopsonArcade.sln | 31 ----- HopsonArcade.vcxproj | 206 ++++++++++++++++++++++++++++ Source/Arcade/Game.cpp | 4 + Source/Arcade/Game.h | 4 +- Source/Arcade/StateGameSelect.cpp | 5 + Source/Arcade/StateGameSelect.h | 18 +++ Source/Framework/States/StateBase.h | 1 + res/thumbnails/space_invaders.png | Bin 0 -> 5918 bytes resource.h | 16 --- 9 files changed, 235 insertions(+), 50 deletions(-) delete mode 100644 HopsonArcade.sln create mode 100644 HopsonArcade.vcxproj create mode 100644 res/thumbnails/space_invaders.png delete mode 100644 resource.h diff --git a/HopsonArcade.sln b/HopsonArcade.sln deleted file mode 100644 index 9ab65a8..0000000 --- a/HopsonArcade.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.2027 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HopsonArcade", "HopsonArcade.vcxproj", "{435C121A-7CFC-4BF8-850A-F9E6D5134EDD}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Debug|x64.ActiveCfg = Debug|x64 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Debug|x64.Build.0 = Debug|x64 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Debug|x86.ActiveCfg = Debug|Win32 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Debug|x86.Build.0 = Debug|Win32 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Release|x64.ActiveCfg = Release|x64 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Release|x64.Build.0 = Release|x64 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Release|x86.ActiveCfg = Release|Win32 - {435C121A-7CFC-4BF8-850A-F9E6D5134EDD}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {6162E141-D5BB-46EA-B0C9-2A0929E27696} - EndGlobalSection -EndGlobal diff --git a/HopsonArcade.vcxproj b/HopsonArcade.vcxproj new file mode 100644 index 0000000..7d69b00 --- /dev/null +++ b/HopsonArcade.vcxproj @@ -0,0 +1,206 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {0b07dad7-ad02-4c09-ba90-a636b7f6dd8d} + HopsonArcade + 10.0.16299.0 + + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + Application + true + v141 + MultiByte + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + Level3 + Disabled + true + true + D:\_Programming_Libraries\C++\SFML\MSVC\include;%(AdditionalIncludeDirectories) + stdcpp17 + + + D:\_Programming_Libraries\C++\SFML\MSVC\lib;%(AdditionalLibraryDirectories) + sfml-graphics-d.lib;sfml-audio-d.lib;sfml-network-d.lib;sfml-window-d.lib;sfml-system-d.lib;%(AdditionalDependencies) + + + + + Level3 + Disabled + true + true + + + + + Level3 + MaxSpeed + true + true + true + true + D:\_Programming Libraries\C++\SFML\MSVC\include;%(AdditionalIncludeDirectories) + + + true + true + D:\_Programming Libraries\C++\SFML\MSVC\lib;%(AdditionalLibraryDirectories) + sfml-graphics.lib;sfml-audio.lib;sfml-network.lib;sfml-window.lib;sfml-system.lib;%(AdditionalDependencies) + + + + + Level3 + MaxSpeed + true + true + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Arcade/Game.cpp b/Source/Arcade/Game.cpp index 7de0b2d..c50ac60 100644 --- a/Source/Arcade/Game.cpp +++ b/Source/Arcade/Game.cpp @@ -81,6 +81,9 @@ void Game::tryPop() } m_states.pop_back(); + if (!m_states.empty()) { + getCurrentState().onOpen(); + } } } @@ -112,6 +115,7 @@ StateBase& Game::getCurrentState() void Game::pushState(std::unique_ptr state) { m_states.push_back(std::move(state)); + getCurrentState().onOpen(); } //Flags a boolean for the game to pop state diff --git a/Source/Arcade/Game.h b/Source/Arcade/Game.h index 1db3204..22f564b 100644 --- a/Source/Arcade/Game.h +++ b/Source/Arcade/Game.h @@ -16,7 +16,6 @@ */ class Game : public NonCopyable, public NonMovable { - friend class StateBase; public: Game(); @@ -32,10 +31,9 @@ class Game : public NonCopyable, public NonMovable const sf::RenderWindow& getWindow() const; - + void resizeWindow(unsigned width, unsigned height); private: - void resizeWindow(unsigned width, unsigned height); void handleEvent(); void tryPop(); diff --git a/Source/Arcade/StateGameSelect.cpp b/Source/Arcade/StateGameSelect.cpp index fe8bdc7..68f5f23 100644 --- a/Source/Arcade/StateGameSelect.cpp +++ b/Source/Arcade/StateGameSelect.cpp @@ -7,6 +7,11 @@ StateGameSelect::StateGameSelect(Game& game) { } +void StateGameSelect::onOpen() +{ + m_pGame->resizeWindow(1280, 720); +} + void StateGameSelect::handleEvent(sf::Event e) { diff --git a/Source/Arcade/StateGameSelect.h b/Source/Arcade/StateGameSelect.h index 1ea3c06..44a7533 100644 --- a/Source/Arcade/StateGameSelect.h +++ b/Source/Arcade/StateGameSelect.h @@ -2,16 +2,34 @@ #include "../Framework/States/StateBase.h" +#include + class Game; class StateGameSelect : public StateBase { + class GameSelect + { + public: + GameSelect(const std::string& name, const sf::Texture& thumbnail) + { } + + virtual std::unique_ptr getInitState() = 0; + + private: + sf::RectangleShape m_container; + sf::RectangleShape m_thumbnail; + }; + public: StateGameSelect(Game& game); + void onOpen() override; + void handleEvent(sf::Event e) override; void render(sf::RenderTarget& target) override; private: + void registerGame(); }; \ No newline at end of file diff --git a/Source/Framework/States/StateBase.h b/Source/Framework/States/StateBase.h index 836524f..9241382 100644 --- a/Source/Framework/States/StateBase.h +++ b/Source/Framework/States/StateBase.h @@ -15,6 +15,7 @@ class StateBase : public NonCopyable virtual ~StateBase() = default; + virtual void onOpen() {} virtual void handleEvent(sf::Event e) {} virtual void handleInput() {} virtual void update(sf::Time deltaTime) {} diff --git a/res/thumbnails/space_invaders.png b/res/thumbnails/space_invaders.png new file mode 100644 index 0000000000000000000000000000000000000000..556336222a1a9d1c70ba2c5002365d050913622a GIT binary patch literal 5918 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 literal 0 HcmV?d00001 diff --git a/resource.h b/resource.h deleted file mode 100644 index 00feee8..0000000 --- a/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by SpaceInvaders.rc -// -#define IDI_ICON1 102 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 103 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif