Moved the template scenes to the libcommon submodule
This commit is contained in:
@@ -12,6 +12,7 @@ Out/
|
|||||||
release/
|
release/
|
||||||
debug/
|
debug/
|
||||||
out/
|
out/
|
||||||
|
bin/
|
||||||
|
|
||||||
#Project generated files
|
#Project generated files
|
||||||
*.db
|
*.db
|
||||||
|
|||||||
+1
-1
Submodule common updated: 6bcaf460b9...47d464ed3a
@@ -1,188 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#include "application.hpp"
|
|
||||||
|
|
||||||
#include <chrono>
|
|
||||||
#include <sstream>
|
|
||||||
#include <stdexcept>
|
|
||||||
|
|
||||||
void Application::Init(int argc, char* argv[]) {
|
|
||||||
//create and check the window
|
|
||||||
window = SDL_CreateWindow(
|
|
||||||
"Example Caption",
|
|
||||||
SDL_WINDOWPOS_UNDEFINED,
|
|
||||||
SDL_WINDOWPOS_UNDEFINED,
|
|
||||||
screenWidth,
|
|
||||||
screenHeight,
|
|
||||||
SDL_WINDOW_RESIZABLE);
|
|
||||||
|
|
||||||
if (!window) {
|
|
||||||
std::ostringstream msg;
|
|
||||||
msg << "Failed to create the window: " << SDL_GetError();
|
|
||||||
throw(std::runtime_error(msg.str()));
|
|
||||||
}
|
|
||||||
|
|
||||||
//create and check the renderer
|
|
||||||
renderer = SDL_CreateRenderer(window, -1, 0);
|
|
||||||
|
|
||||||
if (!renderer) {
|
|
||||||
std::ostringstream msg;
|
|
||||||
msg << "Failed to create the renderer: " << SDL_GetError();
|
|
||||||
throw(std::runtime_error(msg.str()));
|
|
||||||
}
|
|
||||||
|
|
||||||
//screen scaling
|
|
||||||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "best");
|
|
||||||
SDL_RenderSetLogicalSize(renderer, 800, 600);
|
|
||||||
|
|
||||||
//set the hook for the renderer
|
|
||||||
BaseScene::SetRenderer(renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Application::Proc() {
|
|
||||||
//load the first scene
|
|
||||||
ProcessSceneSignal(SceneSignal::FIRST);
|
|
||||||
|
|
||||||
//fixed frame rate
|
|
||||||
typedef std::chrono::steady_clock Clock;
|
|
||||||
|
|
||||||
Clock::time_point simTime = Clock::now();
|
|
||||||
Clock::time_point realTime;
|
|
||||||
constexpr std::chrono::duration<int, std::milli> frameDelay(16); //~60FPS
|
|
||||||
|
|
||||||
//the game loop continues until the scenes signal QUIT
|
|
||||||
while(activeScene->GetSceneSignal() != SceneSignal::QUIT) {
|
|
||||||
//switch scenes if necessary
|
|
||||||
if(activeScene->GetSceneSignal() != SceneSignal::CONTINUE) {
|
|
||||||
ProcessSceneSignal(activeScene->GetSceneSignal());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//update the current time
|
|
||||||
realTime = Clock::now();
|
|
||||||
|
|
||||||
//simulate the game or give the machine a break
|
|
||||||
if (simTime < realTime) {
|
|
||||||
while(simTime < realTime) {
|
|
||||||
//call the user defined functions
|
|
||||||
activeScene->FrameStart();
|
|
||||||
ProcessEvents();
|
|
||||||
activeScene->Update();
|
|
||||||
activeScene->FrameEnd();
|
|
||||||
|
|
||||||
//step to the next frame
|
|
||||||
simTime += frameDelay;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SDL_Delay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_RenderClear(renderer);
|
|
||||||
activeScene->RenderFrame(renderer);
|
|
||||||
SDL_RenderPresent(renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
//cleanup
|
|
||||||
ClearScene();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Application::Quit() {
|
|
||||||
//clean up after the program
|
|
||||||
BaseScene::SetRenderer(nullptr);
|
|
||||||
SDL_DestroyRenderer(renderer);
|
|
||||||
SDL_DestroyWindow(window);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//Scene management
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
void Application::ProcessEvents() {
|
|
||||||
SDL_Event event;
|
|
||||||
while(SDL_PollEvent(&event)) {
|
|
||||||
switch(event.type) {
|
|
||||||
case SDL_QUIT:
|
|
||||||
activeScene->QuitEvent();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEMOTION:
|
|
||||||
activeScene->MouseMotion(event.motion);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
activeScene->MouseButtonDown(event.button);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
activeScene->MouseButtonUp(event.button);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_MOUSEWHEEL:
|
|
||||||
activeScene->MouseWheel(event.wheel);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_KEYDOWN:
|
|
||||||
activeScene->KeyDown(event.key);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_KEYUP:
|
|
||||||
activeScene->KeyUp(event.key);
|
|
||||||
break;
|
|
||||||
|
|
||||||
//TODO: joystick and controller events
|
|
||||||
|
|
||||||
//window events are handled internally
|
|
||||||
case SDL_WINDOWEVENT:
|
|
||||||
switch(event.window.event) {
|
|
||||||
case SDL_WINDOWEVENT_RESIZED:
|
|
||||||
SDL_RenderSetLogicalSize(renderer, event.window.data1, event.window.data2);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Add the custom scene headers here
|
|
||||||
#include "example_scene.hpp"
|
|
||||||
|
|
||||||
void Application::ProcessSceneSignal(SceneSignal signal) {
|
|
||||||
ClearScene();
|
|
||||||
|
|
||||||
switch(signal) {
|
|
||||||
case SceneSignal::FIRST:
|
|
||||||
case SceneSignal::EXAMPLE_SCENE:
|
|
||||||
activeScene = new ExampleScene();
|
|
||||||
break;
|
|
||||||
default: {
|
|
||||||
std::ostringstream msg;
|
|
||||||
msg << "Failed to recognize the scene signal: " << signal;
|
|
||||||
throw(std::logic_error(msg.str()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Application::ClearScene() {
|
|
||||||
delete activeScene;
|
|
||||||
activeScene = nullptr;
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "base_scene.hpp"
|
|
||||||
#include "scene_signal.hpp"
|
|
||||||
|
|
||||||
#include "SDL2/SDL.h"
|
|
||||||
|
|
||||||
//TODO: do something with these
|
|
||||||
constexpr int screenWidth = 800;
|
|
||||||
constexpr int screenHeight = 600;
|
|
||||||
|
|
||||||
//DOCS: The Application class handles scene switching, utilizing only one window
|
|
||||||
class Application {
|
|
||||||
public:
|
|
||||||
Application() = default;
|
|
||||||
~Application() = default;
|
|
||||||
|
|
||||||
void Init(int argc, char* argv[]);
|
|
||||||
void Proc();
|
|
||||||
void Quit();
|
|
||||||
|
|
||||||
private:
|
|
||||||
//scene management
|
|
||||||
void ProcessEvents();
|
|
||||||
void ProcessSceneSignal(SceneSignal);
|
|
||||||
void ClearScene();
|
|
||||||
|
|
||||||
BaseScene* activeScene = nullptr;
|
|
||||||
|
|
||||||
//TODO: build a "window" class?
|
|
||||||
SDL_Window* window = nullptr;
|
|
||||||
SDL_Renderer* renderer = nullptr;
|
|
||||||
};
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#include "base_scene.hpp"
|
|
||||||
|
|
||||||
SDL_Renderer* BaseScene::rendererHandle = nullptr;
|
|
||||||
|
|
||||||
BaseScene::BaseScene() {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
BaseScene::~BaseScene() {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::RenderFrame(SDL_Renderer* renderer) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::SetRenderer(SDL_Renderer* r) {
|
|
||||||
rendererHandle = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Renderer* BaseScene::GetRenderer() {
|
|
||||||
return rendererHandle;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::SetSceneSignal(SceneSignal signal) {
|
|
||||||
sceneSignal = signal;
|
|
||||||
}
|
|
||||||
|
|
||||||
SceneSignal BaseScene::GetSceneSignal() {
|
|
||||||
return sceneSignal;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//frame phases
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
void BaseScene::FrameStart() {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::Update() {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::FrameEnd() {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//input events
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
void BaseScene::QuitEvent() {
|
|
||||||
sceneSignal = SceneSignal::QUIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::MouseMotion(SDL_MouseMotionEvent const& event) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::MouseButtonDown(SDL_MouseButtonEvent const& event) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::MouseButtonUp(SDL_MouseButtonEvent const& event) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::MouseWheel(SDL_MouseWheelEvent const& event) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::KeyDown(SDL_KeyboardEvent const& event) {
|
|
||||||
//preference as a default
|
|
||||||
switch(event.keysym.sym) {
|
|
||||||
case SDLK_ESCAPE:
|
|
||||||
QuitEvent();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BaseScene::KeyUp(SDL_KeyboardEvent const& event) {
|
|
||||||
//EMPTY
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "scene_signal.hpp"
|
|
||||||
|
|
||||||
#include "SDL2/SDL.h"
|
|
||||||
|
|
||||||
class BaseScene {
|
|
||||||
public:
|
|
||||||
BaseScene();
|
|
||||||
virtual ~BaseScene();
|
|
||||||
|
|
||||||
virtual void RenderFrame(SDL_Renderer*);
|
|
||||||
static void SetRenderer(SDL_Renderer*);
|
|
||||||
SceneSignal GetSceneSignal();
|
|
||||||
|
|
||||||
//frame phases
|
|
||||||
virtual void FrameStart();
|
|
||||||
virtual void Update();
|
|
||||||
virtual void FrameEnd();
|
|
||||||
|
|
||||||
//input events
|
|
||||||
virtual void QuitEvent();
|
|
||||||
virtual void MouseMotion(SDL_MouseMotionEvent const& event);
|
|
||||||
virtual void MouseButtonDown(SDL_MouseButtonEvent const& event);
|
|
||||||
virtual void MouseButtonUp(SDL_MouseButtonEvent const& event);
|
|
||||||
virtual void MouseWheel(SDL_MouseWheelEvent const& event);
|
|
||||||
virtual void KeyDown(SDL_KeyboardEvent const& event);
|
|
||||||
virtual void KeyUp(SDL_KeyboardEvent const& event);
|
|
||||||
|
|
||||||
//TODO: joystick and controller events
|
|
||||||
|
|
||||||
protected:
|
|
||||||
//control
|
|
||||||
static SDL_Renderer* GetRenderer();
|
|
||||||
void SetSceneSignal(SceneSignal);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static SDL_Renderer* rendererHandle;
|
|
||||||
SceneSignal sceneSignal = SceneSignal::CONTINUE;
|
|
||||||
};
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#include "example_scene.hpp"
|
|
||||||
|
|
||||||
ExampleScene::ExampleScene() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
ExampleScene::~ExampleScene() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//frame phases
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
void ExampleScene::FrameStart() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::Update() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::FrameEnd() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::RenderFrame(SDL_Renderer* renderer) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//input events
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
void ExampleScene::MouseMotion(SDL_MouseMotionEvent const& event) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::MouseButtonDown(SDL_MouseButtonEvent const& event) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::MouseButtonUp(SDL_MouseButtonEvent const& event) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::MouseWheel(SDL_MouseWheelEvent const& event) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::KeyDown(SDL_KeyboardEvent const& event) {
|
|
||||||
//preference as a default
|
|
||||||
switch(event.keysym.sym) {
|
|
||||||
case SDLK_ESCAPE:
|
|
||||||
QuitEvent();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExampleScene::KeyUp(SDL_KeyboardEvent const& event) {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "base_scene.hpp"
|
|
||||||
|
|
||||||
class ExampleScene : public BaseScene {
|
|
||||||
public:
|
|
||||||
ExampleScene();
|
|
||||||
~ExampleScene();
|
|
||||||
|
|
||||||
void RenderFrame(SDL_Renderer* renderer) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
//frame phases
|
|
||||||
void FrameStart() override;
|
|
||||||
void Update() override;
|
|
||||||
void FrameEnd() override;
|
|
||||||
|
|
||||||
//input events
|
|
||||||
void MouseMotion(SDL_MouseMotionEvent const& event) override;
|
|
||||||
void MouseButtonDown(SDL_MouseButtonEvent const& event) override;
|
|
||||||
void MouseButtonUp(SDL_MouseButtonEvent const& event) override;
|
|
||||||
void MouseWheel(SDL_MouseWheelEvent const& event) override;
|
|
||||||
void KeyDown(SDL_KeyboardEvent const& event) override;
|
|
||||||
void KeyUp(SDL_KeyboardEvent const& event) override;
|
|
||||||
};
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#include "application.hpp"
|
|
||||||
|
|
||||||
#include "SDL2/SDL.h"
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <stdexcept>
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
|
||||||
std::cout << "Beginning " << argv[0] << std::endl;
|
|
||||||
try {
|
|
||||||
Application app;
|
|
||||||
app.Init(argc, argv);
|
|
||||||
app.Proc();
|
|
||||||
app.Quit();
|
|
||||||
}
|
|
||||||
catch(std::exception& e) {
|
|
||||||
std::cerr << "Fatal Error: " << e.what() << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
std::cout << "Clean exit from " << argv[0] << std::endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
#include directories
|
|
||||||
INCLUDES+=.
|
|
||||||
|
|
||||||
#libraries
|
|
||||||
#the order of the $(LIBS) is important, at least for MinGW
|
|
||||||
LIBS+=
|
|
||||||
ifeq ($(OS),Windows_NT)
|
|
||||||
LIBS+=-lmingw32
|
|
||||||
endif
|
|
||||||
LIBS+=-lSDL2main -lSDL2
|
|
||||||
|
|
||||||
#flags
|
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
|
||||||
ifeq ($(shell uname), Linux)
|
|
||||||
#read data about the current install
|
|
||||||
CXXFLAGS+=$(shell sdl-config --cflags --static-libs)
|
|
||||||
endif
|
|
||||||
|
|
||||||
#source
|
|
||||||
CXXSRC=$(wildcard *.cpp)
|
|
||||||
|
|
||||||
#objects
|
|
||||||
OBJDIR=obj
|
|
||||||
OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o))
|
|
||||||
|
|
||||||
#output
|
|
||||||
OUTDIR=out
|
|
||||||
OUT=$(addprefix $(OUTDIR)/,scenes)
|
|
||||||
|
|
||||||
#targets
|
|
||||||
all: $(OBJ) $(OUT)
|
|
||||||
$(CXX) $(CXXFLAGS) -o $(OUT) $(OBJ) $(LIBS)
|
|
||||||
|
|
||||||
$(OBJ): | $(OBJDIR)
|
|
||||||
|
|
||||||
$(OUT): | $(OUTDIR)
|
|
||||||
|
|
||||||
$(OBJDIR):
|
|
||||||
mkdir $(OBJDIR)
|
|
||||||
|
|
||||||
$(OUTDIR):
|
|
||||||
mkdir $(OUTDIR)
|
|
||||||
|
|
||||||
$(OBJDIR)/%.o: %.cpp
|
|
||||||
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
clean:
|
|
||||||
ifeq ($(OS),Windows_NT)
|
|
||||||
$(RM) *.o *.a *.exe
|
|
||||||
else ifeq ($(shell uname), Linux)
|
|
||||||
find . -type f -name '*.o' -exec rm -f -r -v {} \;
|
|
||||||
find . -type f -name '*.a' -exec rm -f -r -v {} \;
|
|
||||||
rm -f -v $(OUT)
|
|
||||||
endif
|
|
||||||
|
|
||||||
rebuild: clean all
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
/* Copyright: (c) Kayne Ruse 2015
|
|
||||||
*
|
|
||||||
* This software is provided 'as-is', without any express or implied
|
|
||||||
* warranty. In no event will the authors be held liable for any damages
|
|
||||||
* arising from the use of this software.
|
|
||||||
*
|
|
||||||
* Permission is granted to anyone to use this software for any purpose,
|
|
||||||
* including commercial applications, and to alter it and redistribute it
|
|
||||||
* freely, subject to the following restrictions:
|
|
||||||
*
|
|
||||||
* 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
* claim that you wrote the original software. If you use this software
|
|
||||||
* in a product, an acknowledgment in the product documentation would be
|
|
||||||
* appreciated but is not required.
|
|
||||||
*
|
|
||||||
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
* misrepresented as being the original software.
|
|
||||||
*
|
|
||||||
* 3. This notice may not be removed or altered from any source
|
|
||||||
* distribution.
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
enum SceneSignal {
|
|
||||||
//reserved members for internal use
|
|
||||||
QUIT = -1,
|
|
||||||
CONTINUE = 0,
|
|
||||||
FIRST = 1,
|
|
||||||
|
|
||||||
//custom scenes
|
|
||||||
EXAMPLE_SCENE
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user