-
Notifications
You must be signed in to change notification settings - Fork 108
/
Game.cpp
57 lines (45 loc) · 1.37 KB
/
Game.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <glPortal/Game.hpp>
#include <glPortal/GameState.hpp>
#include <iostream>
#include <radix/component/Trigger.hpp>
#include <radix/component/Player.hpp>
#include <glPortal/trigger/PortalTeleport.hpp>
using namespace radix;
namespace glPortal {
Game::Game() {
windowTitle = "GlPortal";
defaultMap = "/packages/test/maps/teleportTriggerTerminalVelocity.xml";
}
void Game::initHook() {
initFunctionStack();
gameController = std::make_unique<GameController>(this);
initRenderers();
addRenderers();
}
void Game::customTriggerHook() {
customTriggers.push_back(PortalTeleport());
}
void Game::initFunctionStack() {
world.stateFunctionStack.push(&GameState::handleRunning);
world.stateFunctionStack.push(&GameState::handleSplash);
}
void Game::processInput() {
gameController->processInput();
}
void Game::update() {
BaseGame::update();
dtime = (currentTime-lastRender)/1000.;
}
void Game::initRenderers() {
World& worldReference = static_cast<glPortal::World&>(world);
radix::Renderer& rendererReference = *renderer.get();
gameRenderer =
std::make_unique<GameRenderer>(worldReference, rendererReference, world.camera.get(), &dtime);
uiRenderer =
std::make_unique<UiRenderer>(worldReference, rendererReference);
}
void Game::addRenderers() {
renderer->addRenderer(*gameRenderer);
renderer->addRenderer(*uiRenderer);
}
} /* namespace glPortal */