2013-12-12 11:58:14 +01:00
|
|
|
#ifndef _TESTGLOBABLS_HPP_
|
|
|
|
#define _TESTGLOBABLS_HPP_
|
|
|
|
|
|
|
|
#include <SFML/Window.hpp>
|
2013-12-20 17:02:46 +01:00
|
|
|
#include <engine/GameWorld.hpp>
|
2015-04-18 02:11:17 +02:00
|
|
|
#include <engine/GameData.hpp>
|
2016-04-15 02:06:10 +02:00
|
|
|
#include <engine/GameState.hpp>
|
2015-03-30 03:45:58 +02:00
|
|
|
#include <core/Logger.hpp>
|
2014-05-29 10:10:08 +02:00
|
|
|
#include <glm/gtx/string_cast.hpp>
|
2013-12-12 11:58:14 +01:00
|
|
|
|
2014-05-25 23:30:50 +02:00
|
|
|
#define ENV_GAME_PATH_NAME ("OPENRW_GAME_PATH")
|
2013-12-12 11:58:14 +01:00
|
|
|
|
2014-05-29 10:10:08 +02:00
|
|
|
std::ostream& operator<<( std::ostream& stream, glm::vec3 const& v );
|
|
|
|
|
|
|
|
namespace boost { namespace test_tools {
|
|
|
|
template<>
|
|
|
|
struct print_log_value<glm::vec3> {
|
|
|
|
void operator()( std::ostream& s , glm::vec3 const& v )
|
|
|
|
{
|
|
|
|
s << glm::to_string(v);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}}
|
|
|
|
|
2014-05-29 12:12:40 +02:00
|
|
|
namespace boost { namespace test_tools {
|
|
|
|
template<>
|
2014-08-11 18:58:43 +02:00
|
|
|
struct print_log_value<std::nullptr_t> {
|
|
|
|
void operator()( std::ostream& s , std::nullptr_t )
|
2014-05-29 12:12:40 +02:00
|
|
|
{
|
|
|
|
s << "nullptr";
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}}
|
|
|
|
|
2013-12-12 11:58:14 +01:00
|
|
|
class Global
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
sf::Window wnd;
|
2015-04-18 02:11:17 +02:00
|
|
|
GameData* d;
|
2013-12-20 17:02:46 +01:00
|
|
|
GameWorld* e;
|
2016-04-15 02:06:10 +02:00
|
|
|
GameState* s;
|
2015-04-18 02:11:17 +02:00
|
|
|
Logger log;
|
2015-04-27 04:55:18 +02:00
|
|
|
WorkContext work;
|
2013-12-12 11:58:14 +01:00
|
|
|
|
|
|
|
Global() {
|
|
|
|
wnd.create(sf::VideoMode(640, 360), "Testing");
|
2015-04-27 04:55:18 +02:00
|
|
|
d = new GameData(&log, &work, getGamePath());
|
2016-05-02 18:38:04 +02:00
|
|
|
|
|
|
|
d->loadIMG("/models/gta3");
|
|
|
|
d->loadIMG("/anim/cuts");
|
|
|
|
d->load();
|
|
|
|
|
2015-04-27 04:55:18 +02:00
|
|
|
e = new GameWorld(&log, &work, d);
|
2016-04-15 02:06:10 +02:00
|
|
|
s = new GameState;
|
|
|
|
e->state = s;
|
2014-02-28 12:23:51 +01:00
|
|
|
|
2015-04-18 02:11:17 +02:00
|
|
|
for(std::map<std::string, std::string>::iterator it = e->data->ideLocations.begin();
|
|
|
|
it != e->data->ideLocations.end();
|
2014-02-28 12:23:51 +01:00
|
|
|
++it) {
|
2015-04-24 19:09:21 +02:00
|
|
|
d->loadObjects(it->second);
|
2014-02-28 12:23:51 +01:00
|
|
|
}
|
2014-05-29 10:10:08 +02:00
|
|
|
|
|
|
|
e->dynamicsWorld->setGravity(btVector3(0.f, 0.f, 0.f));
|
2014-06-06 13:18:32 +02:00
|
|
|
|
|
|
|
while( ! e->_work->isEmpty() ) {
|
|
|
|
std::this_thread::yield();
|
|
|
|
}
|
2013-12-12 11:58:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
~Global() {
|
|
|
|
wnd.close();
|
2014-02-28 12:23:51 +01:00
|
|
|
delete e;
|
2013-12-12 11:58:14 +01:00
|
|
|
}
|
2014-05-25 23:30:50 +02:00
|
|
|
|
|
|
|
static std::string getGamePath()
|
|
|
|
{
|
|
|
|
// TODO: Is this "the way to do it" on windows.
|
|
|
|
auto v = getenv(ENV_GAME_PATH_NAME);
|
|
|
|
return v ? v : "";
|
|
|
|
}
|
2013-12-12 11:58:14 +01:00
|
|
|
|
|
|
|
static Global& get()
|
|
|
|
{
|
|
|
|
static Global g;
|
|
|
|
return g;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2014-02-28 12:23:51 +01:00
|
|
|
#endif
|