1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-01 16:32:31 +01:00
openrw/rwgame/State.cpp

88 lines
1.7 KiB
C++
Raw Normal View History

#include "State.hpp"
2018-12-09 22:43:42 +01:00
#include "RWGame.hpp"
2018-12-10 01:51:05 +01:00
#include <glm/gtc/quaternion.hpp>
// This serves as the "initial" camera position.
2018-02-18 01:47:44 +01:00
const ViewCamera defaultView{{-250.f, -550.f, 75.f},
2016-09-09 22:13:20 +02:00
glm::angleAxis(glm::radians(5.f),
2018-02-18 01:47:44 +01:00
glm::vec3(0.f, 1.f, 0.f))};
2016-09-09 22:13:20 +02:00
2018-12-26 21:48:16 +01:00
State::State(RWGame *game) : game(game) {
}
2018-12-01 18:57:06 +01:00
void State::draw(GameRenderer& r) {
2018-12-26 21:48:16 +01:00
auto& menu = getCurrentMenu();
if (menu) {
menu->draw(r);
}
}
std::optional<Menu> &State::getCurrentMenu() {
refreshMenu();
return menu;
}
2016-09-09 22:13:20 +02:00
void State::handleEvent(const SDL_Event& e) {
2018-12-26 21:48:16 +01:00
auto& m = getCurrentMenu();
2016-09-09 22:13:20 +02:00
if (!m) return;
switch (e.type) {
2018-12-09 22:43:42 +01:00
case SDL_MOUSEBUTTONUP:
if (e.button.button == SDL_BUTTON_LEFT)
2016-09-09 22:13:20 +02:00
m->click(e.button.x, e.button.y);
break;
case SDL_MOUSEMOTION:
m->hover(e.motion.x, e.motion.y);
break;
case SDL_KEYDOWN:
switch (e.key.keysym.sym) {
case SDLK_UP:
m->move(-1);
break;
case SDLK_DOWN:
m->move(1);
break;
case SDLK_RETURN:
m->activate();
break;
}
}
}
Fix some warnings openrw/rwengine/src/engine/GameData.cpp:358:26: warning: moving a temporary object prevents copy elision [-Wpessimizing-move] textureslots[slot] = std::move(loadTextureArchive(name)); ^ openrw/rwengine/src/engine/GameData.cpp:358:26: note: remove std::move call here textureslots[slot] = std::move(loadTextureArchive(name)); ^~~~~~~~~~ ~ openrw/rwengine/src/objects/CharacterObject.cpp:16:18: warning: unused variable 'enter_offset' [-Wunused-variable] static glm::vec3 enter_offset(0.81756252f, 0.34800607f, -0.486281008f); ^ In file included from openrw/rwgame/RWGame.cpp:5: openrw/rwgame/states/BenchmarkState.hpp:33:23: warning: 'BenchmarkState::getCamera' hides overloaded virtual function [-Woverloaded-virtual] const ViewCamera& getCamera(); ^ openrw/rwgame/State.hpp:51:31: note: hidden overloaded virtual function 'State::getCamera' declared here: different number of parameters (1 vs 0) virtual const ViewCamera& getCamera(float alpha); ^ In file included from openrw/rwgame/RWGame.cpp:6: openrw/rwgame/states/IngameState.hpp:53:18: warning: 'draw' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] virtual void draw(GameRenderer* r); ^ openrw/rwgame/State.hpp:28:18: note: overridden virtual function is here virtual void draw(GameRenderer* r) { ^ In file included from openrw/rwgame/RWGame.cpp:6: openrw/rwgame/states/IngameState.hpp:60:23: warning: 'getCamera' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] const ViewCamera& getCamera(float alpha); ^ openrw/rwgame/State.hpp:51:31: note: overridden virtual function is here virtual const ViewCamera& getCamera(float alpha); ^ openrw/rwgame/RWGame.cpp:242:22: warning: unused variable 'vehicleModel' [-Wunused-variable] uint16_t vehicleModel = 110; // @todo Which cars are spawned?! ^ In file included from openrw/rwengine/src/script/modules/GTA3Module.cpp:1: In file included from openrw/rwengine/src/engine/GameState.hpp:7: openrw/rwengine/src/engine/ScreenText.hpp:140:63: warning: suggest braces around initialization of subobject [-Wmissing-braces] const std::array<GameString, sizeof...(args)> vals = {args...}; ^~~~ { } openrw/rwengine/src/script/modules/GTA3ModuleImpl.inl:5669:16: note: in instantiation of function template specialization 'ScreenText::format<std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > >' requested here ScreenText::format( ^ In file included from openrw/rwengine/src/script/modules/GTA3Module.cpp:1: In file included from openrw/rwengine/src/engine/GameState.hpp:7: openrw/rwengine/src/engine/ScreenText.hpp:140:63: warning: suggest braces around initialization of subobject [-Wmissing-braces] const std::array<GameString, sizeof...(args)> vals = {args...}; ^~~~ { } openrw/rwengine/src/script/modules/GTA3ModuleImpl.inl:10214:18: note: in instantiation of function template specialization 'ScreenText::format<std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >, std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > >' requested here ScreenText::format(script::gxt(args, gxtEntry), ^ openrw/rwgame/State.cpp:40:42: warning: unused parameter 'alpha' [-Wunused-parameter] const ViewCamera& State::getCamera(float alpha) { ^ openrw/rwengine/src/render/ObjectRenderer.cpp:20:17: warning: unused variable 'kWorldDrawDistanceFactor' [-Wunused-const-variable] constexpr float kWorldDrawDistanceFactor = kDrawDistanceFactor; ^
2017-09-21 16:45:44 +02:00
const ViewCamera& State::getCamera(float) {
2016-09-09 22:13:20 +02:00
return defaultView;
}
2016-09-09 22:13:20 +02:00
bool State::shouldWorldUpdate() {
return false;
}
GameWorld* State::getWorld() const {
2016-09-09 22:13:20 +02:00
return game->getWorld();
}
2016-09-09 22:13:20 +02:00
GameWindow& State::getWindow() {
return game->getWindow();
}
2018-12-26 21:48:16 +01:00
bool State::hasExited() const {
return hasExited_;
}
void State::refreshMenu() {
if (nextMenu) {
menu = std::move(nextMenu);
nextMenu = std::nullopt;
}
}
void State::done() {
hasExited_ = true;
}