1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 06:52:34 +02:00

Move GameData from GameWorld

This commit is contained in:
Daniel Evans 2015-04-18 01:11:17 +01:00
parent 8ff137017c
commit e04f9a8d40
35 changed files with 198 additions and 177 deletions

View File

@ -4,7 +4,9 @@
class Logger;
#include <engine/GameData.hpp>
#include <GL/glew.h>
class GameData;
#include <engine/GameState.hpp>
#include <ai/AIGraphNode.hpp>
@ -20,6 +22,7 @@ class InstanceObject;
class VehicleObject;
#include <render/VisualFX.hpp>
#include <data/ObjectData.hpp>
struct WeaponScan;
@ -58,7 +61,7 @@ class GameWorld
{
public:
GameWorld(Logger* log, const std::string& gamepath);
GameWorld(Logger* log, GameData* dat);
~GameWorld();
@ -149,7 +152,7 @@ public:
/**
* Game data
*/
GameData gameData;
GameData* data;
/**
* Gameplay state

View File

@ -386,6 +386,7 @@ bool Activities::ExitVehicle::update(CharacterObject *character, CharacterContro
}
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
#include <render/Model.hpp>
bool Activities::ShootWeapon::update(CharacterObject *character, CharacterController *controller)
{
@ -397,7 +398,7 @@ bool Activities::ShootWeapon::update(CharacterObject *character, CharacterContro
if( wepdata->fireType == WeaponData::INSTANT_HIT ) {
if( _item->isFiring() ) {
auto shootanim = character->engine->gameData.animations[wepdata->animation1];
auto shootanim = character->engine->data->animations[wepdata->animation1];
if( shootanim ) {
if( character->animator->getAnimation() != shootanim ) {
character->playAnimation(shootanim, false);
@ -427,8 +428,8 @@ bool Activities::ShootWeapon::update(CharacterObject *character, CharacterContro
}
/// @todo Use Thrown flag instead of project (RPG isn't thrown eg.)
else if( wepdata->fireType == WeaponData::PROJECTILE ) {
auto shootanim = character->engine->gameData.animations[wepdata->animation1];
auto throwanim = character->engine->gameData.animations[wepdata->animation2];
auto shootanim = character->engine->data->animations[wepdata->animation1];
auto throwanim = character->engine->data->animations[wepdata->animation2];
if( character->animator->getAnimation() == shootanim ) {
if( character->animator->isCompleted() ) {

View File

@ -28,8 +28,8 @@ CollisionInstance::~CollisionInstance()
bool CollisionInstance::createPhysicsBody(GameObject *object, const std::string& modelName, DynamicObjectData *dynamics, VehicleHandlingInfo *handling)
{
auto phyit = object->engine->gameData.collisions.find(modelName);
if( phyit != object->engine->gameData.collisions.end()) {
auto phyit = object->engine->data->collisions.find(modelName);
if( phyit != object->engine->data->collisions.end()) {
btCompoundShape* cmpShape = new btCompoundShape;
auto p = object->getPosition();

View File

@ -550,7 +550,7 @@ int GameData::getWaterIndexAt(const glm::vec3 &ws) const
if( wX >= 0 && wX < WATER_HQ_DATA_SIZE && wY >= 0 && wY < WATER_HQ_DATA_SIZE ) {
int i = (wX*WATER_HQ_DATA_SIZE) + wY;
return engine->gameData.realWater[i];
return engine->data->realWater[i];
}
return 0;
}

View File

@ -1,4 +1,5 @@
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
#include <core/Logger.hpp>
@ -73,12 +74,12 @@ public:
}
};
GameWorld::GameWorld(Logger* log, const std::string& path)
: logger(log), gameTime(0.f), gameData(log, path), randomEngine(rand()),
GameWorld::GameWorld(Logger* log, GameData* dat)
: logger(log), gameTime(0.f), data(dat), randomEngine(rand()),
_work( new WorkContext( this ) ), cutsceneAudio(nullptr), missionAudio(nullptr),
paused(false)
{
gameData.engine = this;
data->engine = this;
collisionConfig = new btDefaultCollisionConfiguration;
collisionDispatcher = new WorldCollisionDispatcher(collisionConfig);
@ -110,7 +111,7 @@ GameWorld::~GameWorld()
bool GameWorld::defineItems(const std::string& name)
{
auto i = gameData.ideLocations.find(name);
auto i = data->ideLocations.find(name);
std::string path = name;
LoaderIDE idel;
@ -141,7 +142,7 @@ bool GameWorld::defineItems(const std::string& name)
bool GameWorld::placeItems(const std::string& name)
{
auto i = gameData.iplLocations.find(name);
auto i = data->iplLocations.find(name);
std::string path = name;
LoaderIPL ipll;
@ -194,19 +195,19 @@ InstanceObject *GameWorld::createInstance(const uint16_t id, const glm::vec3& po
// Ensure the relevant data is loaded.
if(! oi->modelName.empty()) {
if( modelname != "null" ) {
gameData.loadDFF(modelname + ".dff", false);
data->loadDFF(modelname + ".dff", false);
}
}
if(! texturename.empty()) {
gameData.loadTXD(texturename + ".txd", true);
data->loadTXD(texturename + ".txd", true);
}
ModelRef m = gameData.models[modelname];
ModelRef m = data->models[modelname];
// Check for dynamic data.
auto dyit = gameData.dynamicObjectData.find(oi->modelName);
auto dyit = data->dynamicObjectData.find(oi->modelName);
std::shared_ptr<DynamicObjectData> dydata;
if( dyit != gameData.dynamicObjectData.end() ) {
if( dyit != data->dynamicObjectData.end() ) {
dydata = dyit->second;
}
@ -335,15 +336,15 @@ CutsceneObject *GameWorld::createCutsceneObject(const uint16_t id, const glm::ve
}
if( modelname != "null" ) {
gameData.loadDFF(modelname + ".dff", false);
data->loadDFF(modelname + ".dff", false);
}
if(! texturename.empty()) {
gameData.loadTXD(texturename + ".txd", true);
data->loadTXD(texturename + ".txd", true);
}
ModelRef m = gameData.models[modelname];
ModelRef m = data->models[modelname];
auto instance = new CutsceneObject(
this,
@ -363,19 +364,19 @@ VehicleObject *GameWorld::createVehicle(const uint16_t id, const glm::vec3& pos,
logger->info("World", "Creating Vehicle ID " + std::to_string(id) + " (" + vti->gameName + ")");
if(! vti->modelName.empty()) {
gameData.loadDFF(vti->modelName + ".dff");
data->loadDFF(vti->modelName + ".dff");
}
if(! vti->textureName.empty()) {
gameData.loadTXD(vti->textureName + ".txd");
data->loadTXD(vti->textureName + ".txd");
}
glm::u8vec3 prim(255), sec(128);
auto palit = gameData.vehiclePalettes.find(vti->modelName); // modelname is conveniently lowercase (usually)
if(palit != gameData.vehiclePalettes.end() && palit->second.size() > 0 ) {
auto palit = data->vehiclePalettes.find(vti->modelName); // modelname is conveniently lowercase (usually)
if(palit != data->vehiclePalettes.end() && palit->second.size() > 0 ) {
std::uniform_int_distribution<int> uniform(0, palit->second.size()-1);
int set = uniform(randomEngine);
prim = gameData.vehicleColours[palit->second[set].first];
sec = gameData.vehicleColours[palit->second[set].second];
prim = data->vehicleColours[palit->second[set].first];
sec = data->vehicleColours[palit->second[set].second];
}
else {
logger->warning("World", "No colour palette for vehicle " + vti->modelName);
@ -385,14 +386,14 @@ VehicleObject *GameWorld::createVehicle(const uint16_t id, const glm::vec3& pos,
if( wi )
{
if(! wi->textureName.empty()) {
gameData.loadTXD(wi->textureName + ".txd");
data->loadTXD(wi->textureName + ".txd");
}
}
ModelRef& m = gameData.models[vti->modelName];
ModelRef& m = data->models[vti->modelName];
auto model = m->resource;
auto info = gameData.vehicleInfo.find(vti->handlingID);
if(model && info != gameData.vehicleInfo.end()) {
auto info = data->vehicleInfo.find(vti->handlingID);
if(model && info != data->vehicleInfo.end()) {
if( info->second->wheels.size() == 0 && info->second->seats.size() == 0 ) {
for( const ModelFrame* f : model->frames ) {
const std::string& name = f->getName();
@ -442,14 +443,14 @@ CharacterObject* GameWorld::createPedestrian(const uint16_t id, const glm::vec3
}
if( modelname != "null" ) {
gameData.loadDFF(modelname + ".dff");
data->loadDFF(modelname + ".dff");
}
}
if(! texturename.empty()) {
gameData.loadTXD(texturename + ".txd");
data->loadTXD(texturename + ".txd");
}
ModelRef m = gameData.models[modelname];
ModelRef m = data->models[modelname];
if(m && m->resource) {
auto ped = new CharacterObject( this, pos, rot, m, pt );
@ -714,7 +715,7 @@ void GameWorld::loadCutscene(const std::string &name)
std::string lowerName(name);
std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), ::tolower);
auto datfile = gameData.openFile(lowerName + ".dat");
auto datfile = data->openFile(lowerName + ".dat");
CutsceneData* cutscene = new CutsceneData;
@ -723,13 +724,13 @@ void GameWorld::loadCutscene(const std::string &name)
loaderdat.load(cutscene->tracks, datfile);
}
gameData.loadIFP(lowerName + ".ifp");
data->loadIFP(lowerName + ".ifp");
cutsceneAudioLoaded = gameData.loadAudioStream(name+".mp3");
cutsceneAudioLoaded = data->loadAudioStream(name+".mp3");
if ( !cutsceneAudioLoaded )
{
cutsceneAudioLoaded = gameData.loadAudioStream(name+".wav");
cutsceneAudioLoaded = data->loadAudioStream(name+".wav");
}
if ( !cutsceneAudioLoaded )

View File

@ -6,6 +6,7 @@
#include <engine/GameWorld.hpp>
#include <objects/ProjectileObject.hpp>
#include <data/Skeleton.hpp>
#include <engine/GameData.hpp>
void WeaponItem::fireHitscan()
{
@ -34,9 +35,9 @@ void WeaponItem::fireHitscan()
// - smoke emited at hit point
// - gunflash
auto tracerTex = _character->engine->gameData.findTexture("shad_exp")->getName();
auto flashTex = _character->engine->gameData.findTexture("gunflash2")->getName();
auto flashTex1 = _character->engine->gameData.findTexture("gunflash1")->getName();
auto tracerTex = _character->engine->data->findTexture("shad_exp")->getName();
auto flashTex = _character->engine->data->findTexture("gunflash2")->getName();
auto flashTex1 = _character->engine->data->findTexture("gunflash1")->getName();
float tracertime = 0.1f;
auto distance = glm::distance(fireOrigin, farTarget);

View File

@ -2,6 +2,7 @@
#include <ai/CharacterController.hpp>
#include <engine/GameWorld.hpp>
#include <engine/Animator.hpp>
#include <engine/GameData.hpp>
#include <objects/VehicleObject.hpp>
#include <items/InventoryItem.hpp>
#include <data/Skeleton.hpp>
@ -21,33 +22,33 @@ CharacterObject::CharacterObject(GameWorld* engine, const glm::vec3& pos, const
mHealth = 100.f;
// TODO move AnimationGroup creation somewhere else.
animations.idle = engine->gameData.animations["idle_stance"];
animations.walk = engine->gameData.animations["walk_player"];
animations.walk_start = engine->gameData.animations["walk_start"];
animations.run = engine->gameData.animations["run_player"];
animations.idle = engine->data->animations["idle_stance"];
animations.walk = engine->data->animations["walk_player"];
animations.walk_start = engine->data->animations["walk_start"];
animations.run = engine->data->animations["run_player"];
animations.walk_right = engine->gameData.animations["walk_player_right"];
animations.walk_right_start = engine->gameData.animations["walk_start_right"];
animations.walk_left = engine->gameData.animations["walk_player_left"];
animations.walk_left_start = engine->gameData.animations["walk_start_left"];
animations.walk_right = engine->data->animations["walk_player_right"];
animations.walk_right_start = engine->data->animations["walk_start_right"];
animations.walk_left = engine->data->animations["walk_player_left"];
animations.walk_left_start = engine->data->animations["walk_start_left"];
animations.walk_back = engine->gameData.animations["walk_player_back"];
animations.walk_back_start = engine->gameData.animations["walk_start_back"];
animations.walk_back = engine->data->animations["walk_player_back"];
animations.walk_back_start = engine->data->animations["walk_start_back"];
animations.jump_start = engine->gameData.animations["jump_launch"];
animations.jump_glide = engine->gameData.animations["jump_glide"];
animations.jump_land = engine->gameData.animations["jump_land"];
animations.jump_start = engine->data->animations["jump_launch"];
animations.jump_glide = engine->data->animations["jump_glide"];
animations.jump_land = engine->data->animations["jump_land"];
animations.car_sit = engine->gameData.animations["car_sit"];
animations.car_sit_low = engine->gameData.animations["car_lsit"];
animations.car_sit = engine->data->animations["car_sit"];
animations.car_sit_low = engine->data->animations["car_lsit"];
animations.car_open_lhs = engine->gameData.animations["car_open_lhs"];
animations.car_getin_lhs = engine->gameData.animations["car_getin_lhs"];
animations.car_getout_lhs = engine->gameData.animations["car_getout_lhs"];
animations.car_open_lhs = engine->data->animations["car_open_lhs"];
animations.car_getin_lhs = engine->data->animations["car_getin_lhs"];
animations.car_getout_lhs = engine->data->animations["car_getout_lhs"];
animations.car_open_rhs = engine->gameData.animations["car_open_rhs"];
animations.car_getin_rhs = engine->gameData.animations["car_getin_rhs"];
animations.car_getout_rhs = engine->gameData.animations["car_getout_rhs"];
animations.car_open_rhs = engine->data->animations["car_open_rhs"];
animations.car_getin_rhs = engine->data->animations["car_getin_rhs"];
animations.car_getout_rhs = engine->data->animations["car_getout_rhs"];
if(model) {
skeleton = new Skeleton;
@ -134,10 +135,10 @@ void CharacterObject::changeCharacterModel(const std::string &name)
auto modelName = std::string(name);
std::transform(modelName.begin(), modelName.end(), modelName.begin(), ::tolower);
engine->gameData.loadDFF(modelName + ".dff");
engine->gameData.loadTXD(modelName + ".txd");
engine->data->loadDFF(modelName + ".dff");
engine->data->loadTXD(modelName + ".txd");
auto& models = engine->gameData.models;
auto& models = engine->data->models;
auto mfind = models.find(modelName);
if( mfind != models.end() ) {
model = mfind->second;
@ -237,11 +238,11 @@ void CharacterObject::updateCharacter(float dt)
position = glm::vec3(Pos.x(), Pos.y(), Pos.z());
// Handle above waist height water.
auto wi = engine->gameData.getWaterIndexAt(getPosition());
auto wi = engine->data->getWaterIndexAt(getPosition());
if( wi != NO_WATER_INDEX ) {
float wh = engine->gameData.waterHeights[wi];
float wh = engine->data->waterHeights[wi];
auto ws = getPosition();
wh += engine->gameData.getWaveHeightAt(ws);
wh += engine->data->getWaveHeightAt(ws);
// If Not in water before
// If last position was above water

View File

@ -3,6 +3,7 @@
#include <data/CollisionModel.hpp>
#include <dynamics/CollisionInstance.hpp>
#include <engine/Animator.hpp>
#include <engine/GameData.hpp>
InstanceObject::InstanceObject(GameWorld* engine,
const glm::vec3& pos,
@ -60,10 +61,10 @@ void InstanceObject::tick(float dt)
if( wX >= 0 && wX < WATER_HQ_DATA_SIZE && wY >= 0 && wY < WATER_HQ_DATA_SIZE ) {
int i = (wX*WATER_HQ_DATA_SIZE) + wY;
int hI = engine->gameData.realWater[i];
int hI = engine->data->realWater[i];
if( hI < NO_WATER_INDEX ) {
wH = engine->gameData.waterHeights[hI];
wH += engine->gameData.getWaveHeightAt(ws);
wH = engine->data->waterHeights[hI];
wH += engine->data->getWaveHeightAt(ws);
if( vH <= wH ) {
inWater = true;
}
@ -83,12 +84,12 @@ void InstanceObject::tick(float dt)
// Damper motion
body->body->setDamping(0.95f, 0.9f);
auto wi = engine->gameData.getWaterIndexAt(ws);
auto wi = engine->data->getWaterIndexAt(ws);
if(wi != NO_WATER_INDEX) {
float h = engine->gameData.waterHeights[wi] + oZ;
float h = engine->data->waterHeights[wi] + oZ;
// Calculate wave height
h += engine->gameData.getWaveHeightAt(ws);
h += engine->data->getWaveHeightAt(ws);
if ( ws.z <= h ) {
/*if( dynamics->uprootForce > 0.f && (body->body->getCollisionFlags() & btRigidBody::CF_STATIC_OBJECT) != 0 ) {

View File

@ -1,6 +1,7 @@
#include <objects/PickupObject.hpp>
#include <objects/CharacterObject.hpp>
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
PickupObject::PickupObject(GameWorld *world, const glm::vec3 &position, int modelID)
: GameObject(world, position, glm::quat(), nullptr),
@ -22,7 +23,7 @@ PickupObject::PickupObject(GameWorld *world, const glm::vec3 &position, int mode
corona->particle.direction = glm::vec3(0.f, 0.f, 1.f);
corona->particle.orientation = VisualFX::ParticleData::Camera;
corona->particle.colour = glm::vec4(1.0f, 0.3f, 0.3f, 0.3f);
corona->particle.texture = engine->gameData.findTexture("coronacircle");
corona->particle.texture = engine->data->findTexture("coronacircle");
setEnabled(true);
}

View File

@ -1,5 +1,6 @@
#include <objects/ProjectileObject.hpp>
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
#include <data/WeaponData.hpp>
void ProjectileObject::checkPhysicsContact()
@ -71,7 +72,7 @@ void ProjectileObject::explode()
});
}
auto tex = engine->gameData.findTexture("explo02");
auto tex = engine->data->findTexture("explo02");
auto explosion = engine->createEffect(VisualFX::Particle);
explosion->particle.size = glm::vec2(exp_size);

View File

@ -7,6 +7,7 @@
#include <data/Skeleton.hpp>
#include <render/Model.hpp>
#include <engine/Animator.hpp>
#include <engine/GameData.hpp>
#define PART_CLOSE_VELOCITY 0.25f
@ -247,10 +248,10 @@ void VehicleObject::tickPhysics(float dt)
if( wX >= 0 && wX < WATER_HQ_DATA_SIZE && wY >= 0 && wY < WATER_HQ_DATA_SIZE ) {
int i = (wX*WATER_HQ_DATA_SIZE) + wY;
int hI = engine->gameData.realWater[i];
int hI = engine->data->realWater[i];
if( hI < NO_WATER_INDEX ) {
wH = engine->gameData.waterHeights[hI];
wH += engine->gameData.getWaveHeightAt(ws);
wH = engine->data->waterHeights[hI];
wH += engine->data->getWaveHeightAt(ws);
// If the vehicle is currently underwater
if( vH <= wH ) {
// and was not underwater here in the last tick
@ -520,12 +521,12 @@ void VehicleObject::setPartState(VehicleObject::Part* part, VehicleObject::Frame
void VehicleObject::applyWaterFloat(const glm::vec3 &relPt)
{
auto ws = getPosition() + relPt;
auto wi = engine->gameData.getWaterIndexAt(ws);
auto wi = engine->data->getWaterIndexAt(ws);
if(wi != NO_WATER_INDEX) {
float h = engine->gameData.waterHeights[wi];
float h = engine->data->waterHeights[wi];
// Calculate wave height
h += engine->gameData.getWaveHeightAt(ws);
h += engine->data->getWaveHeightAt(ws);
if ( ws.z <= h ) {
float x = (h - ws.z);

View File

@ -250,7 +250,7 @@ void GameRenderer::renderWorld(const ViewCamera &camera, float alpha)
// Requires a float 0-24
auto weatherID = static_cast<WeatherLoader::WeatherCondition>(engine->state.currentWeather * 24);
auto weather = engine->gameData.weatherLoader.getWeatherData(weatherID, tod);
auto weather = engine->data->weatherLoader.getWeatherData(weatherID, tod);
glm::vec3 skyTop = weather.skyTopColor;
glm::vec3 skyBottom = weather.skyBottomColor;
@ -374,10 +374,10 @@ void GameRenderer::renderWorld(const ViewCamera &camera, float alpha)
profObjects = renderer->popDebugGroup();
// Render arrows above anything that isn't radar only (or hidden)
ModelRef& arrowModel = engine->gameData.models["arrow"];
ModelRef& arrowModel = engine->data->models["arrow"];
if( arrowModel && arrowModel->resource )
{
auto arrowTex = engine->gameData.textures[{"copblue",""}];
auto arrowTex = engine->data->textures[{"copblue",""}];
auto arrowFrame = arrowModel->resource->findFrame( "arrow" );
for( auto& blip : engine->state.radarBlips )
{
@ -456,7 +456,7 @@ void GameRenderer::renderWorld(const ViewCamera &camera, float alpha)
GLuint splashTexName = 0;
auto fc = engine->state.fadeColour;
if((fc.r + fc.g + fc.b) == 0 && engine->state.currentSplash.size() > 0) {
auto splash = engine->gameData.findTexture(engine->state.currentSplash);
auto splash = engine->data->findTexture(engine->state.currentSplash);
if ( splash )
{
splashTexName = splash->getName();
@ -563,7 +563,7 @@ void GameRenderer::renderVehicle(VehicleObject *vehicle)
for( size_t w = 0; w < vehicle->info->wheels.size(); ++w) {
auto woi = engine->findObjectType<ObjectData>(vehicle->vehicle->wheelModelID);
if( woi ) {
Model* wheelModel = engine->gameData.models["wheels"]->resource;
Model* wheelModel = engine->data->models["wheels"]->resource;
auto& wi = vehicle->physVehicle->getWheelInfo(w);
if( wheelModel ) {
// Construct our own matrix so we can use the local transform
@ -713,7 +713,7 @@ void GameRenderer::renderPickup(PickupObject *pickup)
/// @todo Better determination of is this object a weapon.
if( odata->ID >= 170 && odata->ID <= 184 )
{
auto weapons = engine->gameData.models["weapons"];
auto weapons = engine->data->models["weapons"];
if( weapons && weapons->resource && odata ) {
model = weapons->resource;
itemModel = weapons->resource->findFrame(odata->modelName + "_l0");
@ -725,7 +725,7 @@ void GameRenderer::renderPickup(PickupObject *pickup)
}
else
{
auto handle = engine->gameData.models[odata->modelName];
auto handle = engine->data->models[odata->modelName];
if ( handle && handle->resource )
{
model = handle->resource;
@ -794,7 +794,7 @@ void GameRenderer::renderProjectile(ProjectileObject *projectile)
glm::mat4 modelMatrix = projectile->getTimeAdjustedTransform(_renderAlpha);
auto odata = engine->findObjectType<ObjectData>(projectile->getProjectileInfo().weapon->modelID);
auto weapons = engine->gameData.models["weapons"];
auto weapons = engine->data->models["weapons"];
if( weapons && weapons->resource ) {
auto itemModel = weapons->resource->findFrame(odata->modelName + "_l0");
auto matrix = glm::inverse(itemModel->getTransform());
@ -838,7 +838,7 @@ void GameRenderer::renderItem(InventoryItem *item, const glm::mat4 &modelMatrix)
{
// srhand
std::shared_ptr<ObjectData> odata = engine->findObjectType<ObjectData>(item->getModelID());
auto weapons = engine->gameData.models["weapons"];
auto weapons = engine->data->models["weapons"];
if( weapons && weapons->resource ) {
auto itemModel = weapons->resource->findFrame(odata->modelName + "_l0");
auto matrix = glm::inverse(itemModel->getTransform());
@ -878,7 +878,7 @@ void GameRenderer::renderGeometry(Model* model, size_t g, const glm::mat4& model
{
auto& tC = mat.textures[0].name;
auto& tA = mat.textures[0].alphaName;
tex = engine->gameData.findTexture(tC, tA);
tex = engine->data->findTexture(tC, tA);
if( ! tex )
{
//logger->warning("Renderer", "Missing texture: " + tC + " " + tA);
@ -938,7 +938,7 @@ void GameRenderer::renderAreaIndicator(const AreaIndicatorInfo* info)
glm::vec3 scale = info->radius + 0.15f * glm::sin(engine->gameTime * 5.f);
Renderer::DrawParameters dp;
dp.textures = {engine->gameData.findTexture("cloud1")->getName()};
dp.textures = {engine->data->findTexture("cloud1")->getName()};
dp.ambient = 1.f;
dp.colour = glm::u8vec4(50, 100, 255, 1);
dp.start = 0;

View File

@ -1,6 +1,7 @@
#include <render/MapRenderer.hpp>
#include <render/GameShaders.hpp>
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
#include <ai/PlayerController.hpp>
#include <objects/CharacterObject.hpp>
@ -122,7 +123,7 @@ void MapRenderer::draw(const MapInfo& mi)
{
std::string num = (m < 10 ? "0" : "");
std::string name = "radar" + num + std::to_string(m);
auto texture = world->gameData.textures[{name,""}];
auto texture = world->data->textures[{name,""}];
glBindTexture(GL_TEXTURE_2D, texture->getName());
@ -197,7 +198,7 @@ void MapRenderer::drawBlip(const glm::vec2& coord, const glm::mat4& model, const
GLuint tex = 0;
if ( !texture.empty() )
{
auto sprite= world->gameData.findTexture(texture);
auto sprite= world->data->findTexture(texture);
tex = sprite->getName();
renderer->setUniform(rectProg, "colour", glm::vec4(0.f));
}

View File

@ -235,7 +235,7 @@ void TextRenderer::renderText(const TextRenderer::TextInfo& ti)
Renderer::DrawParameters dp;
dp.start = 0;
dp.count = gb.getCount();
auto ftexture = engine->gameData.findTexture(fonts[ti.font]);
auto ftexture = engine->data->findTexture(fonts[ti.font]);
dp.textures = {ftexture->getName()};
renderer->getRenderer()->drawArrays(glm::mat4(), &db, dp);

View File

@ -107,7 +107,7 @@ void WaterRenderer::render(GameRenderer* renderer, GameWorld* world)
{
auto r = renderer->getRenderer();
auto waterTex = world->gameData.findTexture("water_old");
auto waterTex = world->data->findTexture("water_old");
Renderer::DrawParameters wdp;
wdp.start = 0;

View File

@ -10,6 +10,7 @@
#include <render/Model.hpp>
#include <engine/Animator.hpp>
#include <engine/GameState.hpp>
#include <engine/GameData.hpp>
#include <engine/GameWorld.hpp>
#include <engine/GameWorld.hpp>
#include <ai/PlayerController.hpp>
@ -29,7 +30,7 @@
void game_print_big(const ScriptArguments& args)
{
std::string id(args[0].string);
std::string str = args.getVM()->getWorld()->gameData.texts.text(id);
std::string str = args.getVM()->getWorld()->data->texts.text(id);
unsigned short style = args[2].integer;
args.getVM()->getWorld()->state.text.push_back({
id,
@ -43,7 +44,7 @@ void game_print_big(const ScriptArguments& args)
void game_print_now(const ScriptArguments& args)
{
std::string id(args[0].string);
std::string str = args.getVM()->getWorld()->gameData.texts.text(id);
std::string str = args.getVM()->getWorld()->data->texts.text(id);
int flags = args[2].integer;
args.getVM()->getWorld()->state.text.push_back({
id,
@ -123,8 +124,8 @@ void game_set_vehicle_generator_count(const ScriptArguments& args)
void game_set_zone_car_info(const ScriptArguments& args)
{
auto it = args.getVM()->getWorld()->gameData.zones.find(args[0].string);
if( it != args.getVM()->getWorld()->gameData.zones.end() )
auto it = args.getVM()->getWorld()->data->zones.find(args[0].string);
if( it != args.getVM()->getWorld()->data->zones.end() )
{
auto day = args[1].integer == 1;
for(int i = 2; i < args.getParameters().size(); ++i)
@ -158,8 +159,8 @@ void game_reset_camera(const ScriptArguments& args)
void game_set_zone_ped_info(const ScriptArguments& args)
{
auto it = args.getVM()->getWorld()->gameData.zones.find(args[0].string);
if( it != args.getVM()->getWorld()->gameData.zones.end() )
auto it = args.getVM()->getWorld()->data->zones.find(args[0].string);
if( it != args.getVM()->getWorld()->data->zones.end() )
{
auto day = args[1].integer == 1;
for(int i = 2; i < args.getParameters().size(); ++i)
@ -330,7 +331,7 @@ void game_get_runtime(const ScriptArguments& args)
void game_print_big_with_number(const ScriptArguments& args)
{
std::string id(args[0].string);
std::string str = args.getVM()->getWorld()->gameData.texts.text(id);
std::string str = args.getVM()->getWorld()->data->texts.text(id);
int number = args[1].integer;
str += "\n" + std::to_string(number);
@ -408,8 +409,8 @@ bool game_special_char_loaded(const ScriptArguments& args)
{
auto chartype = args.getVM()->getWorld()->findObjectType<CharacterData>(args[0].integer);
if( chartype ) {
auto modelfind = args.getVM()->getWorld()->gameData.models.find(chartype->modelName);
if( modelfind != args.getVM()->getWorld()->gameData.models.end() && modelfind->second->resource != nullptr ) {
auto modelfind = args.getVM()->getWorld()->data->models.find(chartype->modelName);
if( modelfind != args.getVM()->getWorld()->data->models.end() && modelfind->second->resource != nullptr ) {
return true;
}
}
@ -562,7 +563,7 @@ void game_set_cutscene_anim(const ScriptArguments& args)
GameObject* object = static_cast<GameObject*>(*args[0].handle);
std::string animName = args[1].string;
std::transform(animName.begin(), animName.end(), animName.begin(), ::tolower);
Animation* anim = args.getVM()->getWorld()->gameData.animations[animName];
Animation* anim = args.getVM()->getWorld()->data->animations[animName];
if( anim ) {
object->animator->setAnimation(anim, false);
}
@ -628,7 +629,7 @@ void game_set_head_animation(const ScriptArguments& args)
GameObject* object = static_cast<GameObject*>(*args[0].handle);
std::string animName = args[1].string;
std::transform(animName.begin(), animName.end(), animName.begin(), ::tolower);
Animation* anim = args.getVM()->getWorld()->gameData.animations[animName];
Animation* anim = args.getVM()->getWorld()->data->animations[animName];
if( anim ) {
object->animator->setAnimation(anim, false);
}
@ -659,8 +660,8 @@ void game_set_last_mission(const ScriptArguments& args)
void game_set_zone_ped_group(const ScriptArguments& args)
{
auto it = args.getVM()->getWorld()->gameData.zones.find(args[0].string);
if( it != args.getVM()->getWorld()->gameData.zones.end() )
auto it = args.getVM()->getWorld()->data->zones.find(args[0].string);
if( it != args.getVM()->getWorld()->data->zones.end() )
{
auto day = args[1].integer == 1;
if( day )
@ -678,7 +679,7 @@ void game_display_text(const ScriptArguments& args)
{
glm::vec2 pos(args[0].real, args[1].real);
std::string str(args[2].string);
str = args.getVM()->getWorld()->gameData.texts.text(str);
str = args.getVM()->getWorld()->data->texts.text(str);
args.getVM()->getWorld()->state.nextText.text = str;
args.getVM()->getWorld()->state.nextText.position = pos;
args.getVM()->getWorld()->state.texts.push_back(args.getVM()->getWorld()->state.nextText);
@ -718,9 +719,9 @@ void game_load_audio(const ScriptArguments& args)
{
std::string name = args[0].string;
std::transform(name.begin(), name.end(), name.begin(), ::tolower);
if(! args.getVM()->getWorld()->gameData.loadAudioClip(name + ".wav") )
if(! args.getVM()->getWorld()->data->loadAudioClip(name + ".wav") )
{
if(! args.getVM()->getWorld()->gameData.loadAudioClip(name + ".mp3") )
if(! args.getVM()->getWorld()->data->loadAudioClip(name + ".mp3") )
{
args.getVM()->getWorld()->logger->error("SCM", "Failed to load audio: " + name);
}
@ -755,7 +756,7 @@ void game_play_music_id(const ScriptArguments& args)
std::string name = "Miscom";
// TODO play anything other than Miscom.wav
if(! gw->gameData.loadAudioClip( name + ".wav" ) )
if(! gw->data->loadAudioClip( name + ".wav" ) )
{
args.getVM()->getWorld()->logger->error("SCM", "Error loading audio " + name);
return;
@ -793,7 +794,7 @@ void game_get_found_hidden_packages(const ScriptArguments& args)
void game_display_help(const ScriptArguments& args)
{
std::string id(args[0].string);
std::string str = args.getVM()->getWorld()->gameData.texts.text(id);
std::string str = args.getVM()->getWorld()->data->texts.text(id);
unsigned short style = OnscreenText::Help;
args.getVM()->getWorld()->state.text.push_back({
id,
@ -857,7 +858,7 @@ bool game_are_vehicle_cheats_enabled(const ScriptArguments& args)
void game_load_splash(const ScriptArguments& args)
{
args.getVM()->getWorld()->gameData.loadSplash(args[0].string);
args.getVM()->getWorld()->data->loadSplash(args[0].string);
}
GameModule::GameModule()

View File

@ -360,8 +360,8 @@ bool game_character_in_zone(const ScriptArguments& args)
auto controller = static_cast<CharacterController*>(*args[0].handle);
std::string zname(args[1].string);
auto zfind = args.getVM()->getWorld()->gameData.zones.find(zname);
if( zfind != args.getVM()->getWorld()->gameData.zones.end() ) {
auto zfind = args.getVM()->getWorld()->data->zones.find(zname);
if( zfind != args.getVM()->getWorld()->data->zones.end() ) {
auto player = controller->getCharacter()->getPosition();
auto& min = zfind->second.min;
auto& max = zfind->second.max;
@ -666,8 +666,8 @@ void game_create_pickup(const ScriptArguments& args)
std::transform(model.begin(), model.end(), model.begin(), ::tolower);
id = args.getVM()->getWorld()->findModelDefinition(model);
args.getVM()->getWorld()->gameData.loadDFF(model+".dff");
args.getVM()->getWorld()->gameData.loadTXD("icons.txd");
args.getVM()->getWorld()->data->loadDFF(model+".dff");
args.getVM()->getWorld()->data->loadTXD("icons.txd");
}
else
{
@ -675,9 +675,9 @@ void game_create_pickup(const ScriptArguments& args)
if ( ! ( id >= 170 && id <= 184 ) )
{
args.getVM()->getWorld()->gameData.loadDFF(data->modelName+".dff");
args.getVM()->getWorld()->data->loadDFF(data->modelName+".dff");
}
args.getVM()->getWorld()->gameData.loadTXD(data->textureName+".txd");
args.getVM()->getWorld()->data->loadTXD(data->textureName+".txd");
}
@ -760,7 +760,7 @@ void game_set_vehicle_colours(const ScriptArguments& args)
{
auto vehicle = (VehicleObject*)(*args[0].handle);
auto& colours = args.getVM()->getWorld()->gameData.vehicleColours;
auto& colours = args.getVM()->getWorld()->data->vehicleColours;
vehicle->colourPrimary = colours[args[1].integer];
vehicle->colourSecondary = colours[args[2].integer];
}
@ -907,10 +907,10 @@ void game_change_nearest_model(const ScriptArguments& args)
if( o->model->name != oldmodel ) continue;
float d = glm::distance(position, o->getPosition());
if( d < radius ) {
args.getVM()->getWorld()->gameData.loadDFF(newmodel + ".dff", false);
args.getVM()->getWorld()->data->loadDFF(newmodel + ".dff", false);
InstanceObject* inst = static_cast<InstanceObject*>(o);
inst->changeModel(nobj);
inst->model = args.getVM()->getWorld()->gameData.models[newmodel];
inst->model = args.getVM()->getWorld()->data->models[newmodel];
}
}
}

View File

@ -88,14 +88,16 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
throw std::runtime_error("Invalid game directory path, is " +envname+ " set?");
}
engine = new GameWorld(&log, gamepath);
data = new GameData(&log, gamepath);
engine = new GameWorld(&log, data);
// Initalize all the archives.
engine->gameData.loadIMG("/models/gta3");
//engine->gameData.loadIMG("/models/txd");
engine->gameData.loadIMG("/anim/cuts");
engine->data->loadIMG("/models/gta3");
//engine->data.loadIMG("/models/txd");
engine->data->loadIMG("/anim/cuts");
engine->gameData.load();
engine->data->load();
// Initialize renderer
renderer = new GameRenderer(&log, engine);
@ -110,21 +112,19 @@ RWGame::RWGame(const std::string& gamepath, int argc, char* argv[])
debug->setShaderProgram(renderer->worldProg);
engine->dynamicsWorld->setDebugDrawer(debug);
engine->gameData.loadDynamicObjects(gamepath + "/data/object.dat");
engine->data->loadDynamicObjects(gamepath + "/data/object.dat");
/// @TODO language choices.
engine->gameData.loadGXT("english.gxt");
engine->data->loadGXT("english.gxt");
getRenderer()->water.setWaterTable(engine->gameData.waterHeights, 48, engine->gameData.realWater, 128*128);
getRenderer()->water.setWaterTable(data->waterHeights, 48, engine->data->realWater, 128*128);
for(int m = 0; m < MAP_BLOCK_SIZE; ++m)
{
std::string num = (m < 10 ? "0" : "");
std::string name = "radar" + num + std::to_string(m);
engine->gameData.loadTXD(name + ".txd");
engine->data->loadTXD(name + ".txd");
}
getRenderer()->water.setWaterTable(engine->gameData.waterHeights, 48, engine->gameData.realWater, 128*128);
auto loading = new LoadingState(this);
if( newgame )
@ -150,7 +150,7 @@ RWGame::~RWGame()
void RWGame::startScript(const std::string& name)
{
SCMFile* f = engine->gameData.loadSCM(name);
SCMFile* f = engine->data->loadSCM(name);
if( f ) {
if( script ) delete script;

View File

@ -2,6 +2,7 @@
#define _RWGAME_HPP_
#include <core/Logger.hpp>
#include <engine/GameData.hpp>
#include <engine/GameWorld.hpp>
#include <render/GameRenderer.hpp>
#include <script/ScriptMachine.hpp>
@ -12,6 +13,7 @@
class RWGame
{
Logger log;
GameData* data;
GameWorld* engine;
// must be allocated after Logger setup.
GameRenderer* renderer;

View File

@ -28,12 +28,12 @@ void IngameState::startTest()
getWorld()->state.player = player;
/*auto bat = new WeaponItem(getWorld()->gameData.weaponData["ak47"]);
/*auto bat = new WeaponItem(getWorld()->data.weaponData["ak47"]);
_playerCharacter->addToInventory(bat);
_playerCharacter->setActiveItem(bat->getInventorySlot());*/
glm::vec3 itemspawn( 276.5f, -609.f, 36.5f);
for( auto& w : getWorld()->gameData.weaponData ) {
for( auto& w : getWorld()->data->weaponData ) {
if( w.first == "unarmed" ) continue;
getWorld()->objects.insert(new ItemPickup(getWorld(), itemspawn,
w.second));
@ -66,7 +66,7 @@ void IngameState::startTest()
void IngameState::startGame()
{
game->startScript("data/main.scm");
getWorld()->sound.playBackground( getWorld()->gameData.getDataPath() + "/audio/City.wav" );
getWorld()->sound.playBackground( getWorld()->data->getDataPath() + "/audio/City.wav" );
}
PlayerController *IngameState::getPlayer()

View File

@ -13,17 +13,17 @@ void LoadingState::enter()
auto world = getWorld();
// Loade all of the IDEs.
for(std::map<std::string, std::string>::iterator it = world->gameData.ideLocations.begin();
it != world->gameData.ideLocations.end();
for(std::map<std::string, std::string>::iterator it = world->data->ideLocations.begin();
it != world->data->ideLocations.end();
++it) {
world->defineItems(it->second);
}
// Load IPLs
for(std::map<std::string, std::string>::iterator it = world->gameData.iplLocations.begin();
it != world->gameData.iplLocations.end();
for(std::map<std::string, std::string>::iterator it = world->data->iplLocations.begin();
it != world->data->iplLocations.end();
++it) {
world->gameData.loadZone(it->second);
world->data->loadZone(it->second);
world->placeItems(it->second);
}
}

View File

@ -215,7 +215,7 @@ void ViewerWidget::exportModel()
#if 0
auto it = world()->objectTypes.find(currentObjectID);
if( it != world()->objectTypes.end() ) {
for( auto& archive : world()->gameData.archives ) {
for( auto& archive : world()->data.archives ) {
for(size_t i = 0; i < archive.second.getAssetCount(); ++i) {
auto& assetI = archive.second.getAssetInfoByIndex(i);
std::string q(assetI.name);

View File

@ -16,7 +16,7 @@
static int MaxRecentGames = 5;
ViewerWindow::ViewerWindow(QWidget* parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags), gameWorld(nullptr), renderer(nullptr)
: QMainWindow(parent, flags), gameData(nullptr), gameWorld(nullptr), renderer(nullptr)
{
setMinimumSize(640, 480);
@ -149,16 +149,17 @@ void ViewerWindow::loadGame(const QString &path)
QDir gameDir( path );
if( gameDir.exists() && path.size() > 0 ) {
gameWorld = new GameWorld( &engineLog, gameDir.absolutePath().toStdString() );
gameData = new GameData( &engineLog, gameDir.absolutePath().toStdString() );
gameWorld = new GameWorld( &engineLog, gameData );
renderer = new GameRenderer(&engineLog, gameWorld);
viewerWidget->setRenderer(renderer);
gameWorld->gameData.load();
gameWorld->data->load();
// Initalize all the archives.
gameWorld->gameData.loadIMG("/models/gta3");
gameWorld->gameData.loadIMG("/models/txd");
gameWorld->gameData.loadIMG("/anim/cuts");
gameWorld->data->loadIMG("/models/gta3");
gameWorld->data->loadIMG("/models/txd");
gameWorld->data->loadIMG("/anim/cuts");
loadedData(gameWorld);
}

View File

@ -2,6 +2,7 @@
#ifndef _VIEWERWINDOW_HPP_
#define _VIEWERWINDOW_HPP_
#include <QMainWindow>
#include <engine/GameData.hpp>
#include <engine/GameWorld.hpp>
#include <core/Logger.hpp>
#include <QGLContext>
@ -19,6 +20,7 @@ class ViewerWindow : public QMainWindow
Logger engineLog;
GameData* gameData;
GameWorld* gameWorld;
GameRenderer* renderer;

View File

@ -92,8 +92,8 @@ void ObjectViewer::showData(GameWorld *world)
_world = world;
// Loade all of the IDEs.
for(std::map<std::string, std::string>::iterator it = world->gameData.ideLocations.begin();
it != world->gameData.ideLocations.end();
for(std::map<std::string, std::string>::iterator it = world->data->ideLocations.begin();
it != world->data->ideLocations.end();
++it) {
world->defineItems(it->second);
}

View File

@ -14,8 +14,8 @@ BOOST_AUTO_TEST_CASE(test_matrix)
Animation animation;
/** Models are currently needed to relate animation bones <=> model frame #s. */
Global::get().e->gameData.loadDFF("player.dff");
ModelRef& test_model = Global::get().e->gameData.models["player"];
Global::get().e->data->loadDFF("player.dff");
ModelRef& test_model = Global::get().e->data->models["player"];
Animator animator(test_model->resource, &skeleton);

View File

@ -37,8 +37,8 @@ BOOST_AUTO_TEST_CASE(test_vehicle_buoyancy)
BOOST_CHECK( ! vehicle->isInWater() );
// TODO: fix magic numbers
auto orgval = Global::get().e->gameData.realWater[0];
Global::get().e->gameData.realWater[0] = NO_WATER_INDEX;
auto orgval = Global::get().e->data->realWater[0];
Global::get().e->data->realWater[0] = NO_WATER_INDEX;
vehicle->tickPhysics(0.0016f);
BOOST_CHECK( ! vehicle->isInWater() );
@ -48,7 +48,7 @@ BOOST_AUTO_TEST_CASE(test_vehicle_buoyancy)
vehicle->tickPhysics(0.0016f);
BOOST_CHECK( ! vehicle->isInWater() );
Global::get().e->gameData.realWater[0] = orgval;
Global::get().e->data->realWater[0] = orgval;
vehicle->tickPhysics(0.0016f);
BOOST_CHECK( ! vehicle->isInWater() );

View File

@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CutsceneTests)
BOOST_AUTO_TEST_CASE(test_load)
{
{
auto d = Global::get().e->gameData.openFile("intro.dat");
auto d = Global::get().e->data->openFile("intro.dat");
CutsceneTracks tracks;

View File

@ -3,6 +3,7 @@
#include <SFML/Window.hpp>
#include <engine/GameWorld.hpp>
#include <engine/GameData.hpp>
#include <core/Logger.hpp>
#include <glm/gtx/string_cast.hpp>
@ -34,20 +35,22 @@ class Global
{
public:
sf::Window wnd;
GameData* d;
GameWorld* e;
Logger log;
Global() {
wnd.create(sf::VideoMode(640, 360), "Testing");
glewExperimental = GL_TRUE;
glewInit();
Logger log;
e = new GameWorld(&log, getGamePath());
d = new GameData(&log, getGamePath());
e = new GameWorld(&log, d);
e->gameData.loadIMG("/models/gta3");
e->gameData.loadIMG("/anim/cuts");
e->gameData.load();
for(std::map<std::string, std::string>::iterator it = e->gameData.ideLocations.begin();
it != e->gameData.ideLocations.end();
e->data->loadIMG("/models/gta3");
e->data->loadIMG("/anim/cuts");
e->data->load();
for(std::map<std::string, std::string>::iterator it = e->data->ideLocations.begin();
it != e->data->ideLocations.end();
++it) {
e->defineItems(it->second);
}

View File

@ -11,7 +11,7 @@ BOOST_AUTO_TEST_CASE(test_character_inventory)
auto character = Global::get().e->createPedestrian(1, {0.f, 0.f, 0.f});
BOOST_REQUIRE( character != nullptr );
auto item = new WeaponItem(character, Global::get().e->gameData.weaponData["unarmed"]);
auto item = new WeaponItem(character, Global::get().e->data->weaponData["unarmed"]);
character->addToInventory(item);

View File

@ -9,7 +9,7 @@ BOOST_AUTO_TEST_SUITE(LoaderDFFTests)
BOOST_AUTO_TEST_CASE(test_load_dff)
{
{
auto d = Global::get().e->gameData.openFile("landstal.dff");
auto d = Global::get().e->data->openFile("landstal.dff");
LoaderDFF loader;
@ -46,7 +46,7 @@ BOOST_AUTO_TEST_CASE(test_loader_job)
ResourceHandle<Model>::Ref modelRef { new ResourceHandle<Model>("landstal.dff") };
auto index = &Global::get().e->gameData.index;
auto index = &Global::get().e->data->index;
auto job = new BackgroundLoaderJob<Model, LoaderDFF>{ &ctx, index, "landstal.dff", modelRef };
ctx.queueJob(job);

View File

@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE(test_item_pickup)
auto character = Global::get().e->createPedestrian(1, { 30.1f, 0.f, 0.f });
BOOST_REQUIRE( character != nullptr );
auto item = Global::get().e->gameData.weaponData["ak47"];
auto item = Global::get().e->data->weaponData["ak47"];
ItemPickup* p = new ItemPickup(Global::get().e, { 30.f, 0.f, 0.f }, item );

View File

@ -7,7 +7,7 @@ BOOST_AUTO_TEST_SUITE(RWBStreamTests)
BOOST_AUTO_TEST_CASE(iterate_stream_test)
{
{
auto d = Global::get().e->gameData.openFile("landstal.dff");
auto d = Global::get().e->data->openFile("landstal.dff");
RWBStream stream(d->data, d->length);

View File

@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(TextTests)
BOOST_AUTO_TEST_CASE(load_test)
{
{
auto d = Global::get().e->gameData.openFile("english.gxt");
auto d = Global::get().e->data->openFile("english.gxt");
GameTexts texts;

View File

@ -31,7 +31,7 @@ BOOST_AUTO_TEST_CASE(TestProjectile)
auto character = Global::get().e->createPedestrian(1, {25.f, 0.f, 0.f});
BOOST_REQUIRE( character != nullptr );
auto wepdata = Global::get().e->gameData.weaponData["grenade"];
auto wepdata = Global::get().e->data->weaponData["grenade"];
auto projectile = new ProjectileObject(Global::get().e, {26.f, 1.f, 10.f},
{
@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(TestProjectile)
auto character = Global::get().e->createPedestrian(1, {25.f, 0.f, 0.f});
BOOST_REQUIRE( character != nullptr );
auto wepdata = Global::get().e->gameData.weaponData["molotov"];
auto wepdata = Global::get().e->data->weaponData["molotov"];
auto projectile = new ProjectileObject(Global::get().e, {26.f, 1.f, 10.f},
{
@ -96,7 +96,7 @@ BOOST_AUTO_TEST_CASE(TestProjectile)
auto character = Global::get().e->createPedestrian(1, {25.f, 0.f, 0.f});
BOOST_REQUIRE( character != nullptr );
auto wepdata = Global::get().e->gameData.weaponData["rocketlauncher"];
auto wepdata = Global::get().e->data->weaponData["rocketlauncher"];
auto projectile = new ProjectileObject(Global::get().e, {26.f, 1.f, 10.f},
{