diff --git a/src/app/app.cpp b/src/app/app.cpp index c787927e..1d67745d 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -132,6 +132,20 @@ CApplication::CApplication() m_language = LANG_ENGLISH; m_lowCPU = true; + + for (int i = 0; i < DIR_MAX; ++i) + m_dataDirs[i] = nullptr; + + m_dataDirs[DIR_AI] = "ai"; + m_dataDirs[DIR_FONT] = "fonts"; + m_dataDirs[DIR_HELP] = "help"; + m_dataDirs[DIR_I18N] = "i18n"; + m_dataDirs[DIR_ICON] = "icons"; + m_dataDirs[DIR_LEVEL] = "levels"; + m_dataDirs[DIR_MODEL] = "models"; + m_dataDirs[DIR_MUSIC] = "music"; + m_dataDirs[DIR_SOUND] = "sounds"; + m_dataDirs[DIR_TEXTURE] = "textures"; } CApplication::~CApplication() @@ -299,7 +313,7 @@ bool CApplication::Create() putenv(S_LANGUAGE); setlocale(LC_ALL, locale.c_str()); - std::string trPath = m_dataPath + std::string("/i18n"); + std::string trPath = m_dataPath + "/" + m_dataDirs[DIR_I18N]; bindtextdomain("colobot", trPath.c_str()); bind_textdomain_codeset("colobot", "UTF-8"); textdomain("colobot"); @@ -1345,9 +1359,31 @@ bool CApplication::GetJoystickEnabled() return m_joystickEnabled; } -std::string CApplication::GetDataFilePath(const std::string& dirName, const std::string& fileName) +std::string CApplication::GetDataDirPath() { - return m_dataPath + "/" + dirName + "/" + fileName; + return m_dataPath; +} + +std::string CApplication::GetDataFilePath(DataDir dataDir, const std::string& subpath) +{ + int index = static_cast(dataDir); + assert(index >= 0 && index < DIR_MAX); + std::stringstream str; + str << m_dataPath; + str << "/"; + str << m_dataDirs[index]; + str << "/"; + str << subpath; + return str.str(); +} + +std::string CApplication::GetDataFilePath(const std::string& subpath) +{ + std::stringstream str; + str << m_dataPath; + str << "/"; + str << subpath; + return str.str(); } Language CApplication::GetLanguage() diff --git a/src/app/app.h b/src/app/app.h index f5383ce1..f1e2c7fc 100644 --- a/src/app/app.h +++ b/src/app/app.h @@ -283,8 +283,14 @@ public: bool GetDebugMode(); //@} - //! Returns the full path to a file in data directory - std::string GetDataFilePath(const std::string &dirName, const std::string &fileName); + //! Returns the full path to data directory + std::string GetDataDirPath(); + + //! Returns the full path to a file in data directory given standard dir and subpath + std::string GetDataFilePath(DataDir dir, const std::string &subpath); + + //! Returns the full path to a file in data directory given custom subpath in data dir + std::string GetDataFilePath(const std::string &subpath); //! Management of language //@{ @@ -397,6 +403,8 @@ protected: //! Path to directory with data files std::string m_dataPath; + const char* m_dataDirs[DIR_MAX]; + //! Application language Language m_language; diff --git a/src/common/global.h b/src/common/global.h index 3433aeb8..2f2104ac 100644 --- a/src/common/global.h +++ b/src/common/global.h @@ -35,6 +35,26 @@ enum Language LANG_POLISH = 3 }; +/** + * \enum DataDir + * \brief Directories in data directory + */ +enum DataDir +{ + DIR_AI, //! < ai scripts + DIR_FONT, //! < fonts + DIR_HELP, //! < help files + DIR_I18N, //! < translations + DIR_ICON, //! < icons & images + DIR_LEVEL, //! < levels + DIR_MODEL, //! < models + DIR_MUSIC, //! < music + DIR_SOUND, //! < sounds + DIR_TEXTURE, //! < textures + + DIR_MAX //! < number of dirs +}; + /** * \enum BuildType * \brief Construction actions (buildings, etc.) available to user diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp index b737555c..beb7508d 100644 --- a/src/graphics/engine/engine.cpp +++ b/src/graphics/engine/engine.cpp @@ -210,7 +210,6 @@ CEngine::CEngine(CInstanceManager *iMan, CApplication *app) m_lastFrameTime = CreateTimeStamp(); m_currentFrameTime = CreateTimeStamp(); - m_texPath = "textures/"; m_defaultTexParams.format = TEX_IMG_AUTO; m_defaultTexParams.mipmap = true; m_defaultTexParams.minFilter = TEX_MIN_FILTER_LINEAR_MIPMAP_LINEAR; @@ -497,11 +496,6 @@ Math::IntPoint CEngine::InterfaceToWindowSize(Math::Point size) static_cast(size.y * m_size.y)); } -std::string CEngine::GetTextureDir() -{ - return m_texPath; -} - void CEngine::AddStatisticTriangle(int count) { m_statisticTriangle += count; @@ -2108,7 +2102,7 @@ Texture CEngine::CreateTexture(const std::string& texName, const TextureCreatePa // TODO: detect alpha channel? CImage img; - if (! img.Load(m_app->GetDataFilePath(m_texPath, texName))) + if (! img.Load(m_app->GetDataFilePath(DIR_TEXTURE, texName))) { std::string error = img.GetError(); GetLogger()->Error("Couldn't load texture '%s': %s, blacklisting\n", texName.c_str(), error.c_str()); diff --git a/src/graphics/engine/engine.h b/src/graphics/engine/engine.h index 9d69a287..e36865c9 100644 --- a/src/graphics/engine/engine.h +++ b/src/graphics/engine/engine.h @@ -738,9 +738,6 @@ public: Math::IntPoint InterfaceToWindowSize(Math::Point size); //@} - //! Returns the name of directory with textures - std::string GetTextureDir(); - //! Increments the triangle counter for the current frame void AddStatisticTriangle(int nb); //! Returns the number of triangles in current frame @@ -1349,8 +1346,6 @@ protected: Math::Point m_highlightP2; //@} - //! Texture directory name - std::string m_texPath; //! Default texture create params TextureCreateParams m_defaultTexParams; diff --git a/src/graphics/engine/terrain.cpp b/src/graphics/engine/terrain.cpp index 05b7a2db..427e7f6e 100644 --- a/src/graphics/engine/terrain.cpp +++ b/src/graphics/engine/terrain.cpp @@ -197,7 +197,7 @@ void CTerrain::AddMaterial(int id, const std::string& texName, const Math::Point bool CTerrain::LoadResources(const std::string& fileName) { CImage img; - if (! img.Load(CApplication::GetInstance().GetDataFilePath(m_engine->GetTextureDir(), fileName))) + if (! img.Load(CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName))) return false; ImageData *data = img.GetData(); @@ -268,7 +268,7 @@ bool CTerrain::LoadRelief(const std::string &fileName, float scaleRelief, m_scaleRelief = scaleRelief; CImage img; - if (! img.Load(CApplication::GetInstance().GetDataFilePath(m_engine->GetTextureDir(), fileName))) + if (! img.Load(CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName))) return false; ImageData *data = img.GetData(); diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp index 7e226a09..36ad660b 100644 --- a/src/graphics/engine/text.cpp +++ b/src/graphics/engine/text.cpp @@ -58,7 +58,6 @@ CText::CText(CInstanceManager *iMan, CEngine* engine) m_engine = engine; m_defaultSize = 12.0f; - m_fontPath = "fonts"; m_lastFontType = FONT_COLOBOT; m_lastFontSize = 0; @@ -738,7 +737,7 @@ CachedFont* CText::GetOrOpenFont(FontType font, float size) return m_lastCachedFont; } - std::string path = CApplication::GetInstance().GetDataFilePath(m_fontPath, mf->fileName); + std::string path = CApplication::GetInstance().GetDataFilePath(DIR_FONT, mf->fileName); m_lastCachedFont = new CachedFont(); m_lastCachedFont->font = TTF_OpenFont(path.c_str(), pointSize); diff --git a/src/graphics/engine/text.h b/src/graphics/engine/text.h index 61996b80..e5876093 100644 --- a/src/graphics/engine/text.h +++ b/src/graphics/engine/text.h @@ -301,7 +301,6 @@ protected: std::string m_error; float m_defaultSize; - std::string m_fontPath; std::map m_fonts; diff --git a/src/object/motion/motion.cpp b/src/object/motion/motion.cpp index df8a4be1..ff038ae5 100644 --- a/src/object/motion/motion.cpp +++ b/src/object/motion/motion.cpp @@ -14,14 +14,16 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motion.cpp - #include "object/motion/motion.h" +#include "app/app.h" + #include "common/iman.h" + #include "script/cmdtoken.h" + #include #include @@ -33,9 +35,10 @@ CMotion::CMotion(CInstanceManager* iMan, CObject* object) m_iMan = iMan; m_iMan->AddInstance(CLASS_MOTION, this, 100); + m_app = CApplication::GetInstancePointer(); m_engine = static_cast< Gfx::CEngine* >(m_iMan->SearchInstance(CLASS_ENGINE)); m_light = static_cast< Gfx::CLight* >(m_iMan->SearchInstance(CLASS_LIGHT)); - m_particle = static_cast< Gfx::CParticle* >(m_iMan->SearchInstance(CLASS_PARTICULE)); + m_particle = static_cast< Gfx::CParticle* >(m_iMan->SearchInstance(CLASS_PARTICULE)); m_terrain = static_cast< Gfx::CTerrain* >(m_iMan->SearchInstance(CLASS_TERRAIN)); m_water = static_cast< Gfx::CWater* >(m_iMan->SearchInstance(CLASS_WATER)); m_camera = static_cast< Gfx::CCamera* >(m_iMan->SearchInstance(CLASS_CAMERA)); diff --git a/src/object/motion/motion.h b/src/object/motion/motion.h index d195e650..81bcb085 100644 --- a/src/object/motion/motion.h +++ b/src/object/motion/motion.h @@ -21,11 +21,10 @@ #include "common/event.h" #include "common/global.h" + #include "object/object.h" -class CInstanceManager; - namespace Gfx { class CEngine; class CLight; @@ -35,6 +34,8 @@ class CWater; class CCamera; } +class CInstanceManager; +class CApplication; class CBrain; class CPhysics; class CObject; @@ -74,6 +75,7 @@ protected: protected: CInstanceManager* m_iMan; + CApplication* m_app; Gfx::CEngine* m_engine; Gfx::CLight* m_light; Gfx::CParticle* m_particle; diff --git a/src/object/motion/motionant.cpp b/src/object/motion/motionant.cpp index da7880f3..07ee6b84 100644 --- a/src/object/motion/motionant.cpp +++ b/src/object/motion/motionant.cpp @@ -14,18 +14,19 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionant.cpp - - -#include #include "object/motion/motionant.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" #include "graphics/engine/particle.h" + #include "physics/physics.h" +#include + #define ADJUST_ANGLE false // true -> adjusts the angles of the members const float START_TIME = 1000.0f; // beginning of the relative time @@ -82,7 +83,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/ant1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); @@ -98,7 +99,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/ant2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(2.0f, 0.0f, 0.0f)); @@ -107,7 +108,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/ant3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(-1.0f, 0.0f, 0.0f)); @@ -116,7 +117,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(-0.4f, -0.1f, -0.3f)); @@ -125,7 +126,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 3); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -134,7 +135,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 4); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -143,7 +144,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.1f, -0.1f, -0.4f)); @@ -152,7 +153,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 6); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -161,7 +162,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 7); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -170,7 +171,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(1.4f, -0.1f, -0.6f)); @@ -179,7 +180,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10, rank); m_object->SetObjectParent(10, 9); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(10, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -188,7 +189,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(11, rank); m_object->SetObjectParent(11, 10); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(11, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -197,7 +198,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(12, rank); m_object->SetObjectParent(12, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(12, Math::Vector(-0.4f, -0.1f, 0.3f)); @@ -207,7 +208,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(13, rank); m_object->SetObjectParent(13, 12); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(13, Math::Vector(0.0f, 0.0f, 1.0f)); @@ -217,7 +218,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(14, rank); m_object->SetObjectParent(14, 13); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(14, Math::Vector(0.0f, 0.0f, 2.0f)); @@ -227,7 +228,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(15, rank); m_object->SetObjectParent(15, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(15, Math::Vector(0.1f, -0.1f, 0.4f)); @@ -237,7 +238,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(16, rank); m_object->SetObjectParent(16, 15); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(16, Math::Vector(0.0f, 0.0f, 1.0f)); @@ -247,7 +248,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(17, rank); m_object->SetObjectParent(17, 16); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(17, Math::Vector(0.0f, 0.0f, 2.0f)); @@ -257,7 +258,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(18, rank); m_object->SetObjectParent(18, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(18, Math::Vector(1.4f, -0.1f, 0.6f)); @@ -267,7 +268,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(19, rank); m_object->SetObjectParent(19, 18); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(19, Math::Vector(0.0f, 0.0f, 1.0f)); @@ -277,7 +278,7 @@ bool CMotionAnt::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank,Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(20, rank); m_object->SetObjectParent(20, 19); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(20, Math::Vector(0.0f, 0.0f, 2.0f)); diff --git a/src/object/motion/motionbee.cpp b/src/object/motion/motionbee.cpp index 026be7a6..a3421b8d 100644 --- a/src/object/motion/motionbee.cpp +++ b/src/object/motion/motionbee.cpp @@ -14,17 +14,18 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionbee.cpp - - -#include #include "object/motion/motionbee.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" + #include "physics/physics.h" +#include + #define ADJUST_ANGLE false // true -> adjusts the angles of the members const float START_TIME = 1000.0f; // beginning of the relative time @@ -80,7 +81,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/bee1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "bee1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); @@ -96,7 +97,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/bee2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "bee2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(1.6f, 0.3f, 0.0f)); @@ -105,7 +106,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/bee3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "bee3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(-0.8f, 0.0f, 0.0f)); @@ -114,7 +115,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(-0.3f, -0.1f, -0.2f)); @@ -123,7 +124,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 3); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -132,7 +133,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 4); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -141,7 +142,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.3f, -0.1f, -0.4f)); @@ -150,7 +151,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 6); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -159,7 +160,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 7); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -168,7 +169,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(1.0f, -0.1f, -0.7f)); @@ -177,7 +178,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10, rank); m_object->SetObjectParent(10, 9); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(10, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -186,7 +187,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(11, rank); m_object->SetObjectParent(11, 10); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(11, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -195,7 +196,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(12, rank); m_object->SetObjectParent(12, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(12, Math::Vector(-0.3f, -0.1f, 0.2f)); m_object->SetAngleY(12, Math::PI); @@ -205,7 +206,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(13, rank); m_object->SetObjectParent(13, 12); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(13, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -214,7 +215,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(14, rank); m_object->SetObjectParent(14, 13); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(14, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -223,7 +224,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(15, rank); m_object->SetObjectParent(15, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(15, Math::Vector(0.3f, -0.1f, 0.4f)); m_object->SetAngleY(15, Math::PI); @@ -233,7 +234,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(16, rank); m_object->SetObjectParent(16, 15); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(16, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -242,7 +243,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(17, rank); m_object->SetObjectParent(17, 16); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(17, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -251,7 +252,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(18, rank); m_object->SetObjectParent(18, 0); - pModFile->ReadModel("data/models/ant4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(18, Math::Vector(1.0f, -0.1f, 0.7f)); m_object->SetAngleY(18, Math::PI); @@ -261,7 +262,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(19, rank); m_object->SetObjectParent(19, 18); - pModFile->ReadModel("data/models/ant5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(19, Math::Vector(0.0f, 0.0f, -1.0f)); @@ -270,7 +271,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(20, rank); m_object->SetObjectParent(20, 19); - pModFile->ReadModel("data/models/ant6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ant6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(20, Math::Vector(0.0f, 0.0f, -2.0f)); @@ -279,7 +280,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(21, rank); m_object->SetObjectParent(21, 0); - pModFile->ReadModel("data/models/bee7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "bee7.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(21, Math::Vector(0.8f, 0.4f, -0.5f)); @@ -288,7 +289,7 @@ bool CMotionBee::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(22, rank); m_object->SetObjectParent(22, 0); - pModFile->ReadModel("data/models/bee7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "bee7.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(22, Math::Vector(0.8f, 0.4f, 0.5f)); diff --git a/src/object/motion/motionhuman.cpp b/src/object/motion/motionhuman.cpp index 6d849d7a..a9b79b53 100644 --- a/src/object/motion/motionhuman.cpp +++ b/src/object/motion/motionhuman.cpp @@ -14,21 +14,25 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionhuman.cpp - - -#include #include "object/motion/motionhuman.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" #include "graphics/engine/terrain.h" #include "graphics/engine/water.h" + #include "math/geometry.h" + #include "object/robotmain.h" + #include "physics/physics.h" +#include + + #define ADJUST_ANGLE false // true -> adjusts the angles of the members const int ADJUST_ACTION = (3*3*3*3*MH_SPEC+3*3*3*MHS_SATCOM); @@ -99,18 +103,22 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, // if ( m_engine->GetRestCreate() < 16 ) return false; + pModFile = new Gfx::CModelFile(m_iMan); m_object->SetType(type); option = m_object->GetOption(); + std::string baseName; + if ( m_main->GetGamerOnlyHead() ) { rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); face = m_main->GetGamerFace(); - sprintf(filename, "data/models/human2h%d.mod", face+1); + baseName = m_app->GetDataFilePath(DIR_MODEL, "human2h%d.mod"); + sprintf(filename, baseName.c_str(), face+1); pModFile->ReadModel(filename); pModFile->CreateEngineObject(rank); @@ -121,7 +129,8 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - sprintf(filename, "data/models/human2g%d.mod", glasses); + baseName = m_app->GetDataFilePath(DIR_MODEL, "human2g%d.mod"); + sprintf(filename, baseName.c_str(), glasses); pModFile->ReadModel(filename); pModFile->CreateEngineObject(rank); } @@ -142,15 +151,15 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, if ( option == 0 ) // head in helmet? { - pModFile->ReadModel("data/models/human1c.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1c.mod")); } if ( option == 1 ) // head without helmet? { - pModFile->ReadModel("data/models/human1h.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1h.mod")); } if ( option == 2 ) // without a backpack? { - pModFile->ReadModel("data/models/human1v.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human1v.mod")); } pModFile->CreateEngineObject(rank); @@ -172,20 +181,22 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, if ( option == 0 ) // head in helmet? { face = m_main->GetGamerFace(); - sprintf(filename, "data/models/human2c%d.mod", face+1); + baseName = m_app->GetDataFilePath(DIR_MODEL, "human2c%d.mod"); + sprintf(filename, baseName.c_str(), face+1); pModFile->ReadModel(filename); } if ( option == 1 || // head without helmet? option == 2 ) // without a backpack? { face = m_main->GetGamerFace(); - sprintf(filename, "data/models/human2h%d.mod", face+1); + baseName = m_app->GetDataFilePath(DIR_MODEL, "human2h%d.mod"); + sprintf(filename, baseName.c_str(), face+1); pModFile->ReadModel(filename); } } if ( type == OBJECT_TECH ) { - pModFile->ReadModel("data/models/human2t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human2t.mod")); } pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 2.7f, 0.0f)); @@ -203,7 +214,8 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(15, rank); m_object->SetObjectParent(15, 1); - sprintf(filename, "data/models/human2g%d.mod", glasses); + baseName = m_app->GetDataFilePath(DIR_MODEL, "human2g%d.mod"); + sprintf(filename, baseName.c_str(), glasses); pModFile->ReadModel(filename); pModFile->CreateEngineObject(rank); } @@ -213,7 +225,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/human3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(0.0f, 2.3f, -1.2f)); m_object->SetAngle(2, Math::Vector(90.0f*Math::PI/180.0f, 90.0f*Math::PI/180.0f, -50.0f*Math::PI/180.0f)); @@ -223,7 +235,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/human4r.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human4r.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(1.3f, 0.0f, 0.0f)); m_object->SetAngle(3, Math::Vector(0.0f*Math::PI/180.0f, -20.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f)); @@ -233,7 +245,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 3); - pModFile->ReadModel("data/models/human5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(1.2f, 0.0f, 0.0f)); @@ -242,7 +254,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 0); - pModFile->ReadModel("data/models/human6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(0.0f, 0.0f, -0.7f)); m_object->SetAngle(5, Math::Vector(10.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f)); @@ -252,7 +264,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 5); - pModFile->ReadModel("data/models/human7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human7.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, -1.5f, 0.0f)); m_object->SetAngle(6, Math::Vector(0.0f*Math::PI/180.0f, 0.0f*Math::PI/180.0f, -10.0f*Math::PI/180.0f)); @@ -262,7 +274,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 6); - pModFile->ReadModel("data/models/human8.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human8.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, -1.5f, 0.0f)); m_object->SetAngle(7, Math::Vector(-10.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f, 5.0f*Math::PI/180.0f)); @@ -272,7 +284,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/human3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human3.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(0.0f, 2.3f, 1.2f)); @@ -283,7 +295,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 8); - pModFile->ReadModel("data/models/human4l.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human4l.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(1.3f, 0.0f, 0.0f)); @@ -294,7 +306,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10, rank); m_object->SetObjectParent(10, 9); - pModFile->ReadModel("data/models/human5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human5.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(10, Math::Vector(1.2f, 0.0f, 0.0f)); @@ -304,7 +316,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(11, rank); m_object->SetObjectParent(11, 0); - pModFile->ReadModel("data/models/human6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human6.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(11, Math::Vector(0.0f, 0.0f, 0.7f)); @@ -315,7 +327,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(12, rank); m_object->SetObjectParent(12, 11); - pModFile->ReadModel("data/models/human7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human7.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(12, Math::Vector(0.0f, -1.5f, 0.0f)); @@ -326,7 +338,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(13, rank); m_object->SetObjectParent(13, 12); - pModFile->ReadModel("data/models/human8.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human8.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(13, Math::Vector(0.0f, -1.5f, 0.0f)); @@ -339,7 +351,7 @@ bool CMotionHuman::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(14, rank); m_object->SetObjectParent(14, 0); - pModFile->ReadModel("data/models/human9.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "human9.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(14, Math::Vector(-1.5f, 0.3f, -1.35f)); m_object->SetAngleZ(14, Math::PI); diff --git a/src/object/motion/motionmother.cpp b/src/object/motion/motionmother.cpp index 9f02e31e..8ea77a58 100644 --- a/src/object/motion/motionmother.cpp +++ b/src/object/motion/motionmother.cpp @@ -14,17 +14,18 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionmother.cpp - - -#include #include "object/motion/motionmother.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" + #include "physics/physics.h" +#include + #define ADJUST_ANGLE false // true -> adjusts the angles of the members const float START_TIME = 1000.0f; // beginning of the relative time @@ -81,7 +82,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/mother1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); @@ -97,7 +98,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/mother2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(16.0f, 3.0f, 0.0f)); @@ -106,7 +107,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(-5.0f, -1.0f, -12.0f)); @@ -115,7 +116,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -124,7 +125,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(3.5f, -1.0f, -12.0f)); @@ -133,7 +134,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 4); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -142,7 +143,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(10.0f, -1.0f, -10.0f)); @@ -151,7 +152,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 6); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -160,7 +161,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(-5.0f, -1.0f, 12.0f)); m_object->SetAngleY(8, Math::PI); @@ -170,7 +171,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 8); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -179,7 +180,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10, rank); m_object->SetObjectParent(10, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(10, Math::Vector(3.5f, -1.0f, 12.0f)); m_object->SetAngleY(10, Math::PI); @@ -189,7 +190,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(11, rank); m_object->SetObjectParent(11, 10); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(11, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -198,7 +199,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(12, rank); m_object->SetObjectParent(12, 0); - pModFile->ReadModel("data/models/mother3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(12, Math::Vector(10.0f, -1.0f, 10.0f)); m_object->SetAngleY(12, Math::PI); @@ -208,7 +209,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(13, rank); m_object->SetObjectParent(13, 12); - pModFile->ReadModel("data/models/mother4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(13, Math::Vector(0.0f, 0.0f, -8.5f)); @@ -217,7 +218,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(14, rank); m_object->SetObjectParent(14, 1); - pModFile->ReadModel("data/models/mother5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(14, Math::Vector(6.0f, 1.0f, -2.5f)); @@ -225,7 +226,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(15, rank); m_object->SetObjectParent(15, 14); - pModFile->ReadModel("data/models/mother6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(15, Math::Vector(8.0f, 0.0f, 0.0f)); @@ -234,7 +235,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(16, rank); m_object->SetObjectParent(16, 1); - pModFile->ReadModel("data/models/mother5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(16, Math::Vector(6.0f, 1.0f, 2.5f)); @@ -242,7 +243,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(17, rank); m_object->SetObjectParent(17, 16); - pModFile->ReadModel("data/models/mother6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(17, Math::Vector(8.0f, 0.0f, 0.0f)); @@ -251,7 +252,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(18, rank); m_object->SetObjectParent(18, 1); - pModFile->ReadModel("data/models/mother7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother7.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(18, Math::Vector(-4.0f, -3.5f, -8.0f)); m_object->SetZoomX(18, 1.2f); @@ -261,7 +262,7 @@ bool CMotionMother::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(19, rank); m_object->SetObjectParent(19, 1); - pModFile->ReadModel("data/models/mother7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mother7.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(19, Math::Vector(-4.0f, -3.5f, 8.0f)); diff --git a/src/object/motion/motionspider.cpp b/src/object/motion/motionspider.cpp index 0c0996af..516ec6e5 100644 --- a/src/object/motion/motionspider.cpp +++ b/src/object/motion/motionspider.cpp @@ -14,17 +14,18 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionspider.cpp - - -#include #include "object/motion/motionspider.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" #include "graphics/engine/particle.h" + #include "physics/physics.h" +#include + #define ADJUST_ANGLE false // true -> adjusts the angles of the members @@ -72,6 +73,8 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, int rank, i, j, parent; char name[50]; + std::string baseName; + float table[] = { // x y z @@ -106,7 +109,7 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/spider0.mod"); // doesn't exist + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "spider0.mod")); // doesn't exist pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); m_object->SetAngleY(0, angle); @@ -121,7 +124,7 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/spider1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "spider1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(1.0f, 0.0f, 0.0f)); @@ -130,7 +133,7 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/spider2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "spider2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(1.0f, 0.0f, 0.0f)); @@ -139,7 +142,8 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, { for ( j=0 ; j<4 ; j++ ) { - sprintf(name, "data/models/spider%d.mod", j+3); // 3..6 + baseName = m_app->GetDataFilePath(DIR_MODEL, "spider%d.mod"); + sprintf(name, baseName.c_str(), j+3); // 3..6 // Creates the right leg. rank = m_engine->CreateObject(); @@ -177,7 +181,7 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(35, rank); m_object->SetObjectParent(35, 1); - pModFile->ReadModel("data/models/spider7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "spider7.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(35, Math::Vector(0.0f, 0.0f, -0.3f)); @@ -186,7 +190,7 @@ bool CMotionSpider::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(36, rank); m_object->SetObjectParent(36, 1); - pModFile->ReadModel("data/models/spider7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "spider7.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(36, Math::Vector(0.0f, 0.0f, 0.3f)); diff --git a/src/object/motion/motiontoto.cpp b/src/object/motion/motiontoto.cpp index 70685649..274f171b 100644 --- a/src/object/motion/motiontoto.cpp +++ b/src/object/motion/motiontoto.cpp @@ -14,20 +14,23 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motiontoto.cpp - - -#include #include "object/motion/motiontoto.h" +#include "app/app.h" + #include "math/geometry.h" + #include "graphics/engine/terrain.h" #include "graphics/engine/water.h" #include "graphics/engine/modelfile.h" + #include "object/robotmain.h" +#include + + const float START_TIME = 1000.0f; // beginning of the relative time @@ -91,7 +94,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/toto1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); m_object->SetAngleY(0, angle); @@ -101,7 +104,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/toto2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(1.00f, 0.17f, 0.00f)); @@ -110,7 +113,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/toto3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto3.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(0.85f, 1.04f, 0.25f)); @@ -121,7 +124,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 0); - pModFile->ReadModel("data/models/toto3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(0.85f, 1.04f, -0.25f)); m_object->SetAngleY(3, 20.0f*Math::PI/180.0f); @@ -131,7 +134,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 0); - pModFile->ReadModel("data/models/toto4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(0.0f, 1.9f, 0.3f)); m_object->SetAngleX(4, 30.0f*Math::PI/180.0f); @@ -140,7 +143,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 4); - pModFile->ReadModel("data/models/toto4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(0.0f, 0.67f, 0.0f)); m_object->SetAngleX(5, 30.0f*Math::PI/180.0f); @@ -149,7 +152,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 5); - pModFile->ReadModel("data/models/toto5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, 0.70f, 0.0f)); m_object->SetAngleX(6, 30.0f*Math::PI/180.0f); @@ -159,7 +162,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/toto4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 1.9f, -0.3f)); m_object->SetAngleX(7, -30.0f*Math::PI/180.0f); @@ -168,7 +171,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 7); - pModFile->ReadModel("data/models/toto4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(0.0f, 0.67f, 0.0f)); m_object->SetAngleX(8, -30.0f*Math::PI/180.0f); @@ -177,7 +180,7 @@ bool CMotionToto::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 8); - pModFile->ReadModel("data/models/toto5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "toto5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(0.0f, 0.70f, 0.0f)); m_object->SetAngleX(9, -30.0f*Math::PI/180.0f); diff --git a/src/object/motion/motionvehicle.cpp b/src/object/motion/motionvehicle.cpp index ff74f718..849d53e0 100644 --- a/src/object/motion/motionvehicle.cpp +++ b/src/object/motion/motionvehicle.cpp @@ -14,16 +14,19 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionvehicle.cpp - #include "object/motion/motionvehicle.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" #include "graphics/engine/particle.h" #include "graphics/engine/terrain.h" + #include "math/geometry.h" + #include "object/brain.h" + #include "physics/physics.h" #include @@ -111,14 +114,14 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, type == OBJECT_MOBILEfi || type == OBJECT_MOBILEfs ) { - pModFile->ReadModel("data/models/lem1f.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem1f.mod")); } if ( type == OBJECT_MOBILEta || type == OBJECT_MOBILEtc || type == OBJECT_MOBILEti || type == OBJECT_MOBILEts ) { - pModFile->ReadModel("data/models/lem1t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem1t.mod")); } if ( type == OBJECT_MOBILEwa || type == OBJECT_MOBILEwc || @@ -127,11 +130,11 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, { if ( m_object->GetTrainer() ) { - pModFile->ReadModel("data/models/lem1wt.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem1wt.mod")); } else { - pModFile->ReadModel("data/models/lem1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem1w.mod")); } } if ( type == OBJECT_MOBILEia || @@ -139,46 +142,46 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, type == OBJECT_MOBILEii || type == OBJECT_MOBILEis ) { - pModFile->ReadModel("data/models/lem1i.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem1i.mod")); } if ( type == OBJECT_MOBILErt || type == OBJECT_MOBILErc || type == OBJECT_MOBILErr || type == OBJECT_MOBILErs ) { - pModFile->ReadModel("data/models/roller1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller1.mod")); } if ( type == OBJECT_MOBILEsa ) { - pModFile->ReadModel("data/models/subm1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm1.mod")); } if ( type == OBJECT_MOBILEtg ) { - pModFile->ReadModel("data/models/target.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "target.mod")); } if ( type == OBJECT_MOBILEwt ) { - pModFile->ReadModel("data/models/trainerw.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "trainerw.mod")); } if ( type == OBJECT_MOBILEft ) { - pModFile->ReadModel("data/models/trainerf.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "trainerf.mod")); } if ( type == OBJECT_MOBILEtt ) { - pModFile->ReadModel("data/models/trainert.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "trainert.mod")); } if ( type == OBJECT_MOBILEit ) { - pModFile->ReadModel("data/models/traineri.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "traineri.mod")); } if ( type == OBJECT_MOBILEdr ) { - pModFile->ReadModel("data/models/drawer1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer1.mod")); } if ( type == OBJECT_APOLLO2 ) { - pModFile->ReadModel("data/models/apolloj1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj1.mod")); } pModFile->CreateEngineObject(rank); @@ -225,7 +228,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/lem2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 5.3f, 0.0f)); m_object->SetAngleZ(1, ARM_NEUTRAL_ANGLE1); @@ -235,7 +238,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/lem3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(5.0f, 0.0f, 0.0f)); m_object->SetAngleZ(2, ARM_NEUTRAL_ANGLE2); @@ -245,7 +248,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/lem4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(3.5f, 0.0f, 0.0f)); m_object->SetAngleZ(3, ARM_NEUTRAL_ANGLE3); @@ -256,7 +259,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 3); - pModFile->ReadModel("data/models/lem5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(1.5f, 0.0f, 0.0f)); m_object->SetAngleZ(4, -Math::PI*0.10f); @@ -266,7 +269,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 3); - pModFile->ReadModel("data/models/lem6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem6.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(1.5f, 0.0f, 0.0f)); m_object->SetAngleZ(5, Math::PI*0.10f); @@ -282,7 +285,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/lem2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 5.3f, 0.0f)); m_object->SetAngleZ(1, 110.0f*Math::PI/180.0f); @@ -292,7 +295,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/lem3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(5.0f, 0.0f, 0.0f)); m_object->SetAngleZ(2, -110.0f*Math::PI/180.0f); @@ -302,7 +305,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/lem4s.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem4s.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(3.5f, 0.0f, 0.0f)); m_object->SetAngleZ(3, -65.0f*Math::PI/180.0f); @@ -318,7 +321,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/canon.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "canon.mod")); pModFile->CreateEngineObject(rank); //? m_object->SetPosition(1, Math::Vector(0.0f, 5.3f, 0.0f)); m_object->SetPosition(1, Math::Vector(0.0f, 5.3f, 0.0f)); @@ -335,7 +338,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/canoni1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "canoni1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 5.3f, 0.0f)); m_object->SetAngleZ(1, 0.0f); @@ -344,7 +347,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/canoni2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "canoni2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(0.0f, 2.5f, 0.0f)); m_object->SetAngleZ(2, 0.0f); @@ -361,7 +364,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(-3.0f, 1.0f, -3.0f)); @@ -370,7 +373,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(-3.0f, 1.0f, 3.0f)); m_object->SetAngleY(7, Math::PI); @@ -380,7 +383,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(2.0f, 1.0f, -3.0f)); @@ -389,7 +392,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(2.0f, 1.0f, 3.0f)); m_object->SetAngleY(9, Math::PI); @@ -402,7 +405,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(-2.0f, 1.0f, -3.0f)); @@ -411,7 +414,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(-2.0f, 1.0f, 3.0f)); m_object->SetAngleY(7, Math::PI); @@ -421,7 +424,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(3.0f, 1.0f, -3.0f)); @@ -430,7 +433,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 0); - pModFile->ReadModel("data/models/lem2w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2w.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(3.0f, 1.0f, 3.0f)); m_object->SetAngleY(9, Math::PI); @@ -446,7 +449,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/lem2t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2t.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, 2.0f, -3.0f)); @@ -455,7 +458,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/lem3t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem3t.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 2.0f, 3.0f)); } @@ -470,7 +473,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/roller2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, 2.0f, -3.0f)); @@ -479,7 +482,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/roller3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 2.0f, 3.0f)); } @@ -491,7 +494,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/subm4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, 1.0f, -3.0f)); @@ -500,7 +503,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/subm5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm5.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 1.0f, 3.0f)); } @@ -512,7 +515,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/drawer2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(0.0f, 1.0f, -3.0f)); @@ -521,7 +524,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/drawer3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(0.0f, 1.0f, 3.0f)); } @@ -537,7 +540,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/lem2f.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2f.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(1.7f, 3.0f, 0.0f)); @@ -546,7 +549,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/lem2f.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2f.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(-1.8f, 3.0f, -1.5f)); m_object->SetAngleY(7, 120.0f*Math::PI/180.0f); @@ -556,7 +559,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/lem2f.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "lem2f.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(-1.8f, 3.0f, 1.5f)); m_object->SetAngleY(8, -120.0f*Math::PI/180.0f); @@ -587,7 +590,8 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, { for ( j=0 ; j<3 ; j++ ) { - sprintf(name, "data/models/ant%d.mod", j+4); // 4..6 + std::string baseName = m_app->GetDataFilePath(DIR_MODEL, "ant%d.mod"); + sprintf(name, baseName.c_str(), j+4); // 4..6 // Creates the right leg. rank = m_engine->CreateObject(); @@ -628,7 +632,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/roller2t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller2t.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 0.0f, 0.0f)); m_object->SetAngleZ(1, 0.0f); @@ -638,7 +642,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/roller3t.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller3t.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(9.0f, 4.0f, 0.0f)); m_object->SetAngleZ(2, 0.0f); @@ -651,7 +655,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/roller2c.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller2c.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(3.0f, 4.6f, 0.0f)); m_object->SetAngleZ(1, Math::PI/8.0f); @@ -661,7 +665,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/roller3p.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller3p.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(7.0f, 6.5f, 0.0f)); m_object->SetAngleZ(2, 0.0f); @@ -674,7 +678,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/recover1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "recover1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(2.0f, 5.0f, 0.0f)); @@ -683,7 +687,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/recover2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "recover2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(0.1f, 0.0f, -5.0f)); m_object->SetAngleZ(2, 126.0f*Math::PI/180.0f); @@ -693,7 +697,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/recover3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "recover3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(5.0f, 0.0f, -0.5f)); m_object->SetAngleZ(3, -144.0f*Math::PI/180.0f); @@ -703,7 +707,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(4, rank); m_object->SetObjectParent(4, 1); - pModFile->ReadModel("data/models/recover2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "recover2.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(4, Math::Vector(0.1f, 0.0f, 5.0f)); @@ -714,7 +718,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(5, rank); m_object->SetObjectParent(5, 4); - pModFile->ReadModel("data/models/recover3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "recover3.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(5, Math::Vector(5.0f, 0.0f, 0.5f)); @@ -728,7 +732,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/roller2s.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller2s.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(0.0f, 0.0f, 0.0f)); m_object->SetAngleZ(1, 0.0f); @@ -738,7 +742,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/roller3s.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller3s.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(7.0f, 4.5f, 0.0f)); m_object->SetAngleZ(2, 0.0f); @@ -748,7 +752,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 2); - pModFile->ReadModel("data/models/roller4s.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller4s.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(0.0f, 1.0f, 0.0f)); m_object->SetAngleZ(3, 0.0f); @@ -761,7 +765,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/subm2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(4.2f, 3.0f, 0.0f)); @@ -770,7 +774,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 1); - pModFile->ReadModel("data/models/subm3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(0.5f, 0.0f, -1.5f)); @@ -779,7 +783,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(3, rank); m_object->SetObjectParent(3, 1); - pModFile->ReadModel("data/models/subm3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "subm3.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); m_object->SetPosition(3, Math::Vector(0.5f, 0.0f, 1.5f)); @@ -792,7 +796,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/drawer4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer4.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(-3.0f, 3.0f, 0.0f)); @@ -803,7 +807,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/drawer5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer5.mod")); pModFile->CreateEngineObject(rank); m_posKey = Math::Vector(3.0f, 5.7f, 0.0f); m_object->SetPosition(2, m_posKey); @@ -817,7 +821,8 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10+i, rank); m_object->SetObjectParent(10+i, 1); - sprintf(name, "data/models/drawer%d.mod", 10+i); + std::string baseName = m_app->GetDataFilePath(DIR_MODEL, "drawer%d.mod"); + sprintf(name, baseName.c_str(), 10+i); pModFile->ReadModel(name); pModFile->CreateEngineObject(rank); m_object->SetPosition(10+i, Math::Vector(0.0f, 0.0f, 0.0f)); @@ -834,7 +839,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/drawer5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "drawer5.mod")); pModFile->CreateEngineObject(rank); m_posKey = Math::Vector(0.2f, 4.1f, 0.0f); m_object->SetPosition(2, m_posKey); @@ -849,7 +854,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/apolloj2.mod"); // antenna + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj2.mod")); // antenna pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(5.5f, 8.8f, 2.0f)); m_object->SetAngleY(1, -120.0f*Math::PI/180.0f); @@ -859,7 +864,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2, rank); m_object->SetObjectParent(2, 0); - pModFile->ReadModel("data/models/apolloj3.mod"); // camera + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj3.mod")); // camera pModFile->CreateEngineObject(rank); m_object->SetPosition(2, Math::Vector(5.5f, 2.8f, -2.0f)); m_object->SetAngleY(2, 30.0f*Math::PI/180.0f); @@ -869,7 +874,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(6, rank); m_object->SetObjectParent(6, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(6, Math::Vector(-5.75f, 1.65f, -5.0f)); @@ -877,7 +882,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(7, rank); m_object->SetObjectParent(7, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(7, Math::Vector(-5.75f, 1.65f, 5.0f)); @@ -885,7 +890,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(8, rank); m_object->SetObjectParent(8, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(8, Math::Vector(5.75f, 1.65f, -5.0f)); @@ -893,7 +898,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(9, rank); m_object->SetObjectParent(9, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(9, Math::Vector(5.75f, 1.65f, 5.00f)); @@ -902,7 +907,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(10, rank); m_object->SetObjectParent(10, 0); - pModFile->ReadModel("data/models/apolloj6.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj6.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(10, Math::Vector(-5.75f, 1.65f, -5.0f)); @@ -910,7 +915,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(11, rank); m_object->SetObjectParent(11, 0); - pModFile->ReadModel("data/models/apolloj6.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj6.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(11, Math::Vector(-5.75f, 1.65f, 5.0f)); @@ -918,7 +923,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(12, rank); m_object->SetObjectParent(12, 0); - pModFile->ReadModel("data/models/apolloj5.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj5.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(12, Math::Vector(5.75f, 1.65f, -5.0f)); @@ -926,7 +931,7 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(13, rank); m_object->SetObjectParent(13, 0); - pModFile->ReadModel("data/models/apolloj5.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj5.mod")); // wheel pModFile->CreateEngineObject(rank); m_object->SetPosition(13, Math::Vector(5.75f, 1.65f, 5.00f)); } @@ -1038,8 +1043,8 @@ bool CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); pPower->SetObjectRank(0, rank); - if ( power <= 1.0f ) pModFile->ReadModel("data/models/power.mod"); - else pModFile->ReadModel("data/models/atomic.mod"); + if ( power <= 1.0f ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "power.mod")); + else pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "atomic.mod")); pModFile->CreateEngineObject(rank); pPower->SetPosition(0, m_object->GetCharacter()->posPower); diff --git a/src/object/motion/motionworm.cpp b/src/object/motion/motionworm.cpp index dc8ecf05..2401ebde 100644 --- a/src/object/motion/motionworm.cpp +++ b/src/object/motion/motionworm.cpp @@ -14,20 +14,23 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// motionworm.cpp - - -#include #include "object/motion/motionworm.h" +#include "app/app.h" + #include "graphics/engine/modelfile.h" #include "graphics/engine/particle.h" #include "graphics/engine/terrain.h" + #include "math/geometry.h" + #include "physics/physics.h" +#include + + const float START_TIME = 1000.0f; // beginning of the relative time @@ -92,7 +95,7 @@ bool CMotionWorm::Create(Math::Vector pos, float angle, ObjectType type, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICULE); // this is a moving object m_object->SetObjectRank(0, rank); - pModFile->ReadModel("data/models/worm0.mod"); // there is no purpose! + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "worm0.mod")); // there is no purpose! pModFile->CreateEngineObject(rank); m_object->SetPosition(0, pos); m_object->SetAngleY(0, angle); @@ -108,7 +111,7 @@ bool CMotionWorm::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(1, rank); m_object->SetObjectParent(1, 0); - pModFile->ReadModel("data/models/worm1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "worm1.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(1, Math::Vector(px, 0.0f, 0.0f)); px -= 1.0f; @@ -120,7 +123,7 @@ bool CMotionWorm::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2+i, rank); m_object->SetObjectParent(2+i, 0); - pModFile->ReadModel("data/models/worm2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "worm2.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2+i, Math::Vector(px, 0.0f, 0.0f)); px -= 1.0f; @@ -131,7 +134,7 @@ bool CMotionWorm::Create(Math::Vector pos, float angle, ObjectType type, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); m_object->SetObjectRank(2+WORM_PART, rank); m_object->SetObjectParent(2+WORM_PART, 0); - pModFile->ReadModel("data/models/worm3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "worm3.mod")); pModFile->CreateEngineObject(rank); m_object->SetPosition(2+WORM_PART, Math::Vector(px, 0.0f, 0.0f)); diff --git a/src/object/object.cpp b/src/object/object.cpp index 1a4c5277..953de940 100644 --- a/src/object/object.cpp +++ b/src/object/object.cpp @@ -14,18 +14,18 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// object.cpp + +#include "object/object.h" -//---------CBot #include "CBot/CBotDll.h" -//---------Common +#include "app/app.h" + #include "common/global.h" #include "common/iman.h" #include "common/restext.h" -//---------Graphic #include "graphics/engine/lightman.h" #include "graphics/engine/lightning.h" #include "graphics/engine/modelfile.h" @@ -33,10 +33,8 @@ #include "graphics/engine/pyro.h" #include "graphics/engine/terrain.h" -//---------Math #include "math/geometry.h" -//---------Object #include "object/auto/auto.h" #include "object/auto/autobase.h" #include "object/auto/autoconvert.h" @@ -73,17 +71,13 @@ #include "object/motion/motiontoto.h" #include "object/motion/motionvehicle.h" #include "object/motion/motionworm.h" -#include "object/object.h" #include "object/robotmain.h" -//---------Physics #include "physics/physics.h" -//---------Script #include "script/cbottoken.h" #include "script/cmdtoken.h" -//---------Ui #include "ui/displaytext.h" @@ -223,6 +217,7 @@ CObject::CObject(CInstanceManager* iMan) m_iMan = iMan; m_iMan->AddInstance(CLASS_OBJECT, this, 500); + m_app = CApplication::GetInstancePointer(); m_engine = static_cast(m_iMan->SearchInstance(CLASS_ENGINE)); m_lightMan = static_cast(m_iMan->SearchInstance(CLASS_LIGHT)); m_terrain = static_cast(m_iMan->SearchInstance(CLASS_TERRAIN)); @@ -356,14 +351,21 @@ CObject::~CObject() { m_botVar->SetUserPtr(OBJECTDELETED); delete m_botVar; + m_botVar = nullptr; } delete m_physics; + m_physics = nullptr; delete m_brain; + m_brain = nullptr; delete m_motion; + m_motion = nullptr; delete m_auto; + m_auto = nullptr; m_iMan->DeleteInstance(CLASS_OBJECT, this); + + m_app = nullptr; } @@ -2372,7 +2374,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_PORTICO ) { - pModFile->ReadModel("data/models/portico1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2382,7 +2384,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/portico2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 67.0f, 0.0f)); @@ -2390,7 +2392,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/portico3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 0.0f, -33.0f)); SetAngleY(2, 45.0f*Math::PI/180.0f); @@ -2399,7 +2401,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3, rank); SetObjectParent(3, 2); - pModFile->ReadModel("data/models/portico4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico4.mod")); pModFile->CreateEngineObject(rank); SetPosition(3, Math::Vector(50.0f, 0.0f, 0.0f)); SetAngleY(3, -60.0f*Math::PI/180.0f); @@ -2408,7 +2410,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(4, rank); SetObjectParent(4, 3); - pModFile->ReadModel("data/models/portico5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico5.mod")); pModFile->CreateEngineObject(rank); SetPosition(4, Math::Vector(35.0f, 0.0f, 0.0f)); SetAngleY(4, -55.0f*Math::PI/180.0f); @@ -2417,7 +2419,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(5, rank); SetObjectParent(5, 1); - pModFile->ReadModel("data/models/portico3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico3.mod")); pModFile->CreateEngineObject(rank); SetPosition(5, Math::Vector(0.0f, 0.0f, 33.0f)); SetAngleY(5, -45.0f*Math::PI/180.0f); @@ -2426,7 +2428,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(6, rank); SetObjectParent(6, 5); - pModFile->ReadModel("data/models/portico4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico4.mod")); pModFile->CreateEngineObject(rank); SetPosition(6, Math::Vector(50.0f, 0.0f, 0.0f)); SetAngleY(6, 60.0f*Math::PI/180.0f); @@ -2435,7 +2437,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(7, rank); SetObjectParent(7, 6); - pModFile->ReadModel("data/models/portico5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico5.mod")); pModFile->CreateEngineObject(rank); SetPosition(7, Math::Vector(35.0f, 0.0f, 0.0f)); SetAngleY(7, 55.0f*Math::PI/180.0f); @@ -2444,7 +2446,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(8, rank); SetObjectParent(8, 0); - pModFile->ReadModel("data/models/portico6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico6.mod")); pModFile->CreateEngineObject(rank); SetPosition(8, Math::Vector(-35.0f, 50.0f, -35.0f)); SetAngleY(8, -Math::PI/2.0f); @@ -2454,7 +2456,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(9, rank); SetObjectParent(9, 8); - pModFile->ReadModel("data/models/portico7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico7.mod")); pModFile->CreateEngineObject(rank); SetPosition(9, Math::Vector(0.0f, 4.5f, 1.9f)); @@ -2462,7 +2464,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(10, rank); SetObjectParent(10, 0); - pModFile->ReadModel("data/models/portico6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico6.mod")); pModFile->CreateEngineObject(rank); SetPosition(10, Math::Vector(-35.0f, 50.0f, 35.0f)); SetAngleY(10, -Math::PI/2.0f); @@ -2472,7 +2474,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(11, rank); SetObjectParent(11, 10); - pModFile->ReadModel("data/models/portico7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "portico7.mod")); pModFile->CreateEngineObject(rank); SetPosition(11, Math::Vector(0.0f, 4.5f, 1.9f)); @@ -2494,7 +2496,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_BASE ) { - pModFile->ReadModel("data/models/base1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "base1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2506,7 +2508,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1+i, rank); SetObjectParent(1+i, 0); - pModFile->ReadModel("data/models/base2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "base2.mod")); pModFile->CreateEngineObject(rank); p = Math::RotatePoint(-Math::PI/4.0f*i, 27.8f); SetPosition(1+i, Math::Vector(p.x, 30.0f, p.y)); @@ -2517,7 +2519,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(10+i, rank); SetObjectParent(10+i, 1+i); - pModFile->ReadModel("data/models/base4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "base4.mod")); pModFile->CreateEngineObject(rank); SetPosition(10+i, Math::Vector(23.5f, 0.0f, 7.0f)); @@ -2525,7 +2527,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(18+i, rank); SetObjectParent(18+i, 1+i); - pModFile->ReadModel("data/models/base4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "base4.mod")); pModFile->Mirror(); pModFile->CreateEngineObject(rank); SetPosition(18+i, Math::Vector(23.5f, 0.0f, -7.0f)); @@ -2535,7 +2537,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(9, rank); SetObjectParent(9, 0); - pModFile->ReadModel("data/models/base3.mod"); // central pillar + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "base3.mod")); // central pillar pModFile->CreateEngineObject(rank); CreateCrashSphere(Math::Vector( 0.0f, 33.0f, 0.0f), 2.5f, SOUND_BOUMm, 0.45f); @@ -2566,7 +2568,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_DERRICK ) { - pModFile->ReadModel("data/models/derrick1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "derrick1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2576,7 +2578,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/derrick2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "derrick2.mod")); pModFile->CreateEngineObject(rank); CreateCrashSphere(Math::Vector(0.0f, 0.0f, 0.0f), 6.0f, SOUND_BOUMm, 0.45f); @@ -2591,7 +2593,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_RESEARCH ) { - pModFile->ReadModel("data/models/search1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "search1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2601,7 +2603,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/search2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "search2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 13.0f, 0.0f)); @@ -2609,7 +2611,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/search3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "search3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 4.0f, 0.0f)); SetAngleZ(2, 35.0f*Math::PI/180.0f); @@ -2626,7 +2628,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_RADAR ) { - pModFile->ReadModel("data/models/radar1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "radar1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2636,7 +2638,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/radar2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "radar2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 5.0f, 0.0f)); @@ -2644,7 +2646,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 0); - pModFile->ReadModel("data/models/radar3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "radar3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 11.0f, 0.0f)); SetAngleY(2, -Math::PI/2.0f); @@ -2653,7 +2655,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3, rank); SetObjectParent(3, 2); - pModFile->ReadModel("data/models/radar4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "radar4.mod")); pModFile->CreateEngineObject(rank); SetPosition(3, Math::Vector(0.0f, 4.5f, 1.9f)); @@ -2666,7 +2668,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_INFO ) { - pModFile->ReadModel("data/models/info1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "info1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2676,7 +2678,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/info2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "info2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 5.0f, 0.0f)); @@ -2686,7 +2688,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2+i*2, rank); SetObjectParent(2+i*2, 1); - pModFile->ReadModel("data/models/info3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "info3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2+i*2, Math::Vector(0.0f, 4.5f, 0.0f)); @@ -2694,7 +2696,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3+i*2, rank); SetObjectParent(3+i*2, 2+i*2); - pModFile->ReadModel("data/models/radar4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "radar4.mod")); pModFile->CreateEngineObject(rank); SetPosition(3+i*2, Math::Vector(0.0f, 0.0f, -4.0f)); @@ -2710,7 +2712,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_ENERGY ) { - pModFile->ReadModel("data/models/energy.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "energy.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2729,7 +2731,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_LABO ) { - pModFile->ReadModel("data/models/labo1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2739,7 +2741,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/labo2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(-9.0f, 3.0f, 0.0f)); SetAngleZ(1, Math::PI/2.0f); @@ -2748,7 +2750,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/labo3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(9.0f, -1.0f, 0.0f)); @@ -2756,7 +2758,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3, rank); SetObjectParent(3, 2); - pModFile->ReadModel("data/models/labo4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo4.mod")); pModFile->CreateEngineObject(rank); SetPosition(3, Math::Vector(0.0f, 0.0f, 0.0f)); SetAngleZ(3, 80.0f*Math::PI/180.0f); @@ -2765,7 +2767,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(4, rank); SetObjectParent(4, 2); - pModFile->ReadModel("data/models/labo4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo4.mod")); pModFile->CreateEngineObject(rank); SetPosition(4, Math::Vector(0.0f, 0.0f, 0.0f)); SetAngleZ(4, 80.0f*Math::PI/180.0f); @@ -2775,7 +2777,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(5, rank); SetObjectParent(5, 2); - pModFile->ReadModel("data/models/labo4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "labo4.mod")); pModFile->CreateEngineObject(rank); SetPosition(5, Math::Vector(0.0f, 0.0f, 0.0f)); SetAngleZ(5, 80.0f*Math::PI/180.0f); @@ -2795,7 +2797,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_FACTORY ) { - pModFile->ReadModel("data/models/factory1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "factory1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2807,7 +2809,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1+i, rank); SetObjectParent(1+i, 0); - pModFile->ReadModel("data/models/factory2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "factory2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1+i, Math::Vector(10.0f, 2.0f*i, 10.0f)); SetAngleZ(1+i, Math::PI/2.0f); @@ -2817,7 +2819,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(10+i, rank); SetObjectParent(10+i, 0); - pModFile->ReadModel("data/models/factory2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "factory2.mod")); pModFile->CreateEngineObject(rank); SetPosition(10+i, Math::Vector(10.0f, 2.0f*i, -10.0f)); SetAngleZ(10+i, -Math::PI/2.0f); @@ -2855,7 +2857,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_REPAIR ) { - pModFile->ReadModel("data/models/repair1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "repair1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2865,7 +2867,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/repair2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "repair2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(-11.0f, 13.5f, 0.0f)); SetAngleZ(1, Math::PI/2.0f); @@ -2881,7 +2883,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_DESTROYER ) { - pModFile->ReadModel("data/models/destroy1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "destroy1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2891,7 +2893,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/destroy2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "destroy2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 0.0f, 0.0f)); @@ -2907,7 +2909,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_STATION ) { - pModFile->ReadModel("data/models/station.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "station.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2924,7 +2926,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_CONVERT ) { - pModFile->ReadModel("data/models/convert1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "convert1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2934,7 +2936,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/convert2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "convert2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 14.0f, 0.0f)); @@ -2942,7 +2944,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 0); - pModFile->ReadModel("data/models/convert3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "convert3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 11.5f, 0.0f)); SetAngleX(2, -Math::PI*0.35f); @@ -2951,7 +2953,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3, rank); SetObjectParent(3, 0); - pModFile->ReadModel("data/models/convert3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "convert3.mod")); pModFile->CreateEngineObject(rank); SetPosition(3, Math::Vector(0.0f, 11.5f, 0.0f)); SetAngleY(3, Math::PI); @@ -2968,7 +2970,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_TOWER ) { - pModFile->ReadModel("data/models/tower.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tower.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -2978,7 +2980,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/roller2c.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller2c.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 20.0f, 0.0f)); SetAngleZ(1, Math::PI/2.0f); @@ -2987,7 +2989,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/roller3c.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "roller3c.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(4.5f, 0.0f, 0.0f)); SetAngleZ(2, 0.0f); @@ -3006,7 +3008,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_NUCLEAR ) { - pModFile->ReadModel("data/models/nuclear1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "nuclear1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3016,7 +3018,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/nuclear2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "nuclear2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(20.0f, 10.0f, 0.0f)); SetAngleZ(1, 135.0f*Math::PI/180.0f); @@ -3033,7 +3035,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_PARA ) { - pModFile->ReadModel("data/models/para.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "para.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3059,7 +3061,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_SAFE ) { - pModFile->ReadModel("data/models/safe1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "safe1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3069,7 +3071,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/safe2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "safe2.mod")); pModFile->CreateEngineObject(rank); SetZoom(1, 1.05f); @@ -3077,7 +3079,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 0); - pModFile->ReadModel("data/models/safe3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "safe3.mod")); pModFile->CreateEngineObject(rank); SetZoom(2, 1.05f); @@ -3091,7 +3093,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_HUSTON ) { - pModFile->ReadModel("data/models/huston1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "huston1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3101,7 +3103,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/huston2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "huston2.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 39.0f, 30.0f)); SetAngleY(1, -Math::PI/2.0f); @@ -3111,7 +3113,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/huston3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "huston3.mod")); pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 4.5f, 1.9f)); @@ -3135,7 +3137,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_TARGET1 ) { - pModFile->ReadModel("data/models/target1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "target1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3165,7 +3167,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_TARGET2 ) { - pModFile->ReadModel("data/models/target2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "target2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3176,7 +3178,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_NEST ) { - pModFile->ReadModel("data/models/nest.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "nest.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3189,7 +3191,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_START ) { - pModFile->ReadModel("data/models/start.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "start.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3200,7 +3202,7 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, if ( m_type == OBJECT_END ) { - pModFile->ReadModel("data/models/end.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "end.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3221,8 +3223,8 @@ bool CObject::CreateBuilding(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); pPower->SetObjectRank(0, rank); - if ( power <= 1.0f ) pModFile->ReadModel("data/models/power.mod"); - else pModFile->ReadModel("data/models/atomic.mod"); + if ( power <= 1.0f ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "power.mod")); + else pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "atomic.mod")); pModFile->CreateEngineObject(rank); pPower->SetPosition(0, GetCharacter()->posPower); @@ -3254,7 +3256,6 @@ bool CObject::CreateResource(Math::Vector pos, float angle, ObjectType type, float power) { Gfx::CModelFile* pModFile; - char name[50]; int rank; float radius, height; @@ -3267,37 +3268,37 @@ bool CObject::CreateResource(Math::Vector pos, float angle, ObjectType type, SetObjectRank(0, rank); SetEnergy(power); - name[0] = 0; - if ( type == OBJECT_STONE ) strcpy(name, "data/models/stone.mod"); - if ( type == OBJECT_URANIUM ) strcpy(name, "data/models/uranium.mod"); - if ( type == OBJECT_METAL ) strcpy(name, "data/models/metal.mod"); - if ( type == OBJECT_POWER ) strcpy(name, "data/models/power.mod"); - if ( type == OBJECT_ATOMIC ) strcpy(name, "data/models/atomic.mod"); - if ( type == OBJECT_BULLET ) strcpy(name, "data/models/bullet.mod"); - if ( type == OBJECT_BBOX ) strcpy(name, "data/models/bbox.mod"); - if ( type == OBJECT_KEYa ) strcpy(name, "data/models/keya.mod"); - if ( type == OBJECT_KEYb ) strcpy(name, "data/models/keyb.mod"); - if ( type == OBJECT_KEYc ) strcpy(name, "data/models/keyc.mod"); - if ( type == OBJECT_KEYd ) strcpy(name, "data/models/keyd.mod"); - if ( type == OBJECT_TNT ) strcpy(name, "data/models/tnt.mod"); - if ( type == OBJECT_SCRAP1 ) strcpy(name, "data/models/scrap1.mod"); - if ( type == OBJECT_SCRAP2 ) strcpy(name, "data/models/scrap2.mod"); - if ( type == OBJECT_SCRAP3 ) strcpy(name, "data/models/scrap3.mod"); - if ( type == OBJECT_SCRAP4 ) strcpy(name, "data/models/scrap4.mod"); - if ( type == OBJECT_SCRAP5 ) strcpy(name, "data/models/scrap5.mod"); - if ( type == OBJECT_BOMB ) strcpy(name, "data/models/bomb.mod"); - if ( type == OBJECT_WAYPOINT ) strcpy(name, "data/models/waypoint.mod"); - if ( type == OBJECT_SHOW ) strcpy(name, "data/models/show.mod"); - if ( type == OBJECT_WINFIRE ) strcpy(name, "data/models/winfire.mod"); - if ( type == OBJECT_BAG ) strcpy(name, "data/models/bag.mod"); - if ( type == OBJECT_MARKSTONE ) strcpy(name, "data/models/cross1.mod"); - if ( type == OBJECT_MARKURANIUM ) strcpy(name, "data/models/cross3.mod"); - if ( type == OBJECT_MARKPOWER ) strcpy(name, "data/models/cross2.mod"); - if ( type == OBJECT_MARKKEYa ) strcpy(name, "data/models/crossa.mod"); - if ( type == OBJECT_MARKKEYb ) strcpy(name, "data/models/crossb.mod"); - if ( type == OBJECT_MARKKEYc ) strcpy(name, "data/models/crossc.mod"); - if ( type == OBJECT_MARKKEYd ) strcpy(name, "data/models/crossd.mod"); - if ( type == OBJECT_EGG ) strcpy(name, "data/models/egg.mod"); + std::string name; + if ( type == OBJECT_STONE ) name = m_app->GetDataFilePath(DIR_MODEL, "stone.mod"); + if ( type == OBJECT_URANIUM ) name = m_app->GetDataFilePath(DIR_MODEL, "uranium.mod"); + if ( type == OBJECT_METAL ) name = m_app->GetDataFilePath(DIR_MODEL, "metal.mod"); + if ( type == OBJECT_POWER ) name = m_app->GetDataFilePath(DIR_MODEL, "power.mod"); + if ( type == OBJECT_ATOMIC ) name = m_app->GetDataFilePath(DIR_MODEL, "atomic.mod"); + if ( type == OBJECT_BULLET ) name = m_app->GetDataFilePath(DIR_MODEL, "bullet.mod"); + if ( type == OBJECT_BBOX ) name = m_app->GetDataFilePath(DIR_MODEL, "bbox.mod"); + if ( type == OBJECT_KEYa ) name = m_app->GetDataFilePath(DIR_MODEL, "keya.mod"); + if ( type == OBJECT_KEYb ) name = m_app->GetDataFilePath(DIR_MODEL, "keyb.mod"); + if ( type == OBJECT_KEYc ) name = m_app->GetDataFilePath(DIR_MODEL, "keyc.mod"); + if ( type == OBJECT_KEYd ) name = m_app->GetDataFilePath(DIR_MODEL, "keyd.mod"); + if ( type == OBJECT_TNT ) name = m_app->GetDataFilePath(DIR_MODEL, "tnt.mod"); + if ( type == OBJECT_SCRAP1 ) name = m_app->GetDataFilePath(DIR_MODEL, "scrap1.mod"); + if ( type == OBJECT_SCRAP2 ) name = m_app->GetDataFilePath(DIR_MODEL, "scrap2.mod"); + if ( type == OBJECT_SCRAP3 ) name = m_app->GetDataFilePath(DIR_MODEL, "scrap3.mod"); + if ( type == OBJECT_SCRAP4 ) name = m_app->GetDataFilePath(DIR_MODEL, "scrap4.mod"); + if ( type == OBJECT_SCRAP5 ) name = m_app->GetDataFilePath(DIR_MODEL, "scrap5.mod"); + if ( type == OBJECT_BOMB ) name = m_app->GetDataFilePath(DIR_MODEL, "bomb.mod"); + if ( type == OBJECT_WAYPOINT ) name = m_app->GetDataFilePath(DIR_MODEL, "waypoint.mod"); + if ( type == OBJECT_SHOW ) name = m_app->GetDataFilePath(DIR_MODEL, "show.mod"); + if ( type == OBJECT_WINFIRE ) name = m_app->GetDataFilePath(DIR_MODEL, "winfire.mod"); + if ( type == OBJECT_BAG ) name = m_app->GetDataFilePath(DIR_MODEL, "bag.mod"); + if ( type == OBJECT_MARKSTONE ) name = m_app->GetDataFilePath(DIR_MODEL, "cross1.mod"); + if ( type == OBJECT_MARKURANIUM ) name = m_app->GetDataFilePath(DIR_MODEL, "cross3.mod"); + if ( type == OBJECT_MARKPOWER ) name = m_app->GetDataFilePath(DIR_MODEL, "cross2.mod"); + if ( type == OBJECT_MARKKEYa ) name = m_app->GetDataFilePath(DIR_MODEL, "crossa.mod"); + if ( type == OBJECT_MARKKEYb ) name = m_app->GetDataFilePath(DIR_MODEL, "crossb.mod"); + if ( type == OBJECT_MARKKEYc ) name = m_app->GetDataFilePath(DIR_MODEL, "crossc.mod"); + if ( type == OBJECT_MARKKEYd ) name = m_app->GetDataFilePath(DIR_MODEL, "crossd.mod"); + if ( type == OBJECT_EGG ) name = m_app->GetDataFilePath(DIR_MODEL, "egg.mod"); pModFile->ReadModel(name); pModFile->CreateEngineObject(rank); @@ -3369,19 +3370,20 @@ bool CObject::CreateResource(Math::Vector pos, float angle, ObjectType type, bool CObject::CreateFlag(Math::Vector pos, float angle, ObjectType type) { Gfx::CModelFile* pModFile; - char name[50]; int rank, i; pModFile = new Gfx::CModelFile(m_iMan); SetType(type); - name[0] = 0; - if ( type == OBJECT_FLAGb ) strcpy(name, "data/models/flag1b.mod"); - if ( type == OBJECT_FLAGr ) strcpy(name, "data/models/flag1r.mod"); - if ( type == OBJECT_FLAGg ) strcpy(name, "data/models/flag1g.mod"); - if ( type == OBJECT_FLAGy ) strcpy(name, "data/models/flag1y.mod"); - if ( type == OBJECT_FLAGv ) strcpy(name, "data/models/flag1v.mod"); + std::string name; + + name = ""; + if ( type == OBJECT_FLAGb ) name = m_app->GetDataFilePath(DIR_MODEL, "flag1b.mod"); + if ( type == OBJECT_FLAGr ) name = m_app->GetDataFilePath(DIR_MODEL, "flag1r.mod"); + if ( type == OBJECT_FLAGg ) name = m_app->GetDataFilePath(DIR_MODEL, "flag1g.mod"); + if ( type == OBJECT_FLAGy ) name = m_app->GetDataFilePath(DIR_MODEL, "flag1y.mod"); + if ( type == OBJECT_FLAGv ) name = m_app->GetDataFilePath(DIR_MODEL, "flag1v.mod"); rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object @@ -3391,12 +3393,12 @@ bool CObject::CreateFlag(Math::Vector pos, float angle, ObjectType type) SetPosition(0, pos); SetAngleY(0, angle); - name[0] = 0; - if ( type == OBJECT_FLAGb ) strcpy(name, "data/models/flag2b.mod"); - if ( type == OBJECT_FLAGr ) strcpy(name, "data/models/flag2r.mod"); - if ( type == OBJECT_FLAGg ) strcpy(name, "data/models/flag2g.mod"); - if ( type == OBJECT_FLAGy ) strcpy(name, "data/models/flag2y.mod"); - if ( type == OBJECT_FLAGv ) strcpy(name, "data/models/flag2v.mod"); + name = ""; + if ( type == OBJECT_FLAGb ) name = m_app->GetDataFilePath(DIR_MODEL, "flag2b.mod"); + if ( type == OBJECT_FLAGr ) name = m_app->GetDataFilePath(DIR_MODEL, "flag2r.mod"); + if ( type == OBJECT_FLAGg ) name = m_app->GetDataFilePath(DIR_MODEL, "flag2g.mod"); + if ( type == OBJECT_FLAGy ) name = m_app->GetDataFilePath(DIR_MODEL, "flag2y.mod"); + if ( type == OBJECT_FLAGv ) name = m_app->GetDataFilePath(DIR_MODEL, "flag2v.mod"); for ( i=0 ; i<4 ; i++ ) { @@ -3442,7 +3444,7 @@ bool CObject::CreateBarrier(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/barrier0.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "barrier0.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3459,7 +3461,7 @@ bool CObject::CreateBarrier(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/barrier1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "barrier1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3478,7 +3480,7 @@ bool CObject::CreateBarrier(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/barrier2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "barrier2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3497,7 +3499,7 @@ bool CObject::CreateBarrier(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/barrier3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "barrier3.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3547,11 +3549,11 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - if ( type == OBJECT_PLANT0 ) pModFile->ReadModel("data/models/plant0.mod"); - if ( type == OBJECT_PLANT1 ) pModFile->ReadModel("data/models/plant1.mod"); - if ( type == OBJECT_PLANT2 ) pModFile->ReadModel("data/models/plant2.mod"); - if ( type == OBJECT_PLANT3 ) pModFile->ReadModel("data/models/plant3.mod"); - if ( type == OBJECT_PLANT4 ) pModFile->ReadModel("data/models/plant4.mod"); + if ( type == OBJECT_PLANT0 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant0.mod")); + if ( type == OBJECT_PLANT1 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant1.mod")); + if ( type == OBJECT_PLANT2 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant2.mod")); + if ( type == OBJECT_PLANT3 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant3.mod")); + if ( type == OBJECT_PLANT4 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant4.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3572,9 +3574,9 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - if ( type == OBJECT_PLANT5 ) pModFile->ReadModel("data/models/plant5.mod"); - if ( type == OBJECT_PLANT6 ) pModFile->ReadModel("data/models/plant6.mod"); - if ( type == OBJECT_PLANT7 ) pModFile->ReadModel("data/models/plant7.mod"); + if ( type == OBJECT_PLANT5 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant5.mod")); + if ( type == OBJECT_PLANT6 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant6.mod")); + if ( type == OBJECT_PLANT7 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant7.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3591,8 +3593,8 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - if ( type == OBJECT_PLANT8 ) pModFile->ReadModel("data/models/plant8.mod"); - if ( type == OBJECT_PLANT9 ) pModFile->ReadModel("data/models/plant9.mod"); + if ( type == OBJECT_PLANT8 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant8.mod")); + if ( type == OBJECT_PLANT9 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant9.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3612,11 +3614,11 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - if ( type == OBJECT_PLANT10 ) pModFile->ReadModel("data/models/plant10.mod"); - if ( type == OBJECT_PLANT11 ) pModFile->ReadModel("data/models/plant11.mod"); - if ( type == OBJECT_PLANT12 ) pModFile->ReadModel("data/models/plant12.mod"); - if ( type == OBJECT_PLANT13 ) pModFile->ReadModel("data/models/plant13.mod"); - if ( type == OBJECT_PLANT14 ) pModFile->ReadModel("data/models/plant14.mod"); + if ( type == OBJECT_PLANT10 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant10.mod")); + if ( type == OBJECT_PLANT11 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant11.mod")); + if ( type == OBJECT_PLANT12 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant12.mod")); + if ( type == OBJECT_PLANT13 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant13.mod")); + if ( type == OBJECT_PLANT14 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant14.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3637,11 +3639,11 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - if ( type == OBJECT_PLANT15 ) pModFile->ReadModel("data/models/plant15.mod"); - if ( type == OBJECT_PLANT16 ) pModFile->ReadModel("data/models/plant16.mod"); - if ( type == OBJECT_PLANT17 ) pModFile->ReadModel("data/models/plant17.mod"); - if ( type == OBJECT_PLANT18 ) pModFile->ReadModel("data/models/plant18.mod"); - if ( type == OBJECT_PLANT19 ) pModFile->ReadModel("data/models/plant19.mod"); + if ( type == OBJECT_PLANT15 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant15.mod")); + if ( type == OBJECT_PLANT16 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant16.mod")); + if ( type == OBJECT_PLANT17 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant17.mod")); + if ( type == OBJECT_PLANT18 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant18.mod")); + if ( type == OBJECT_PLANT19 ) pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "plant19.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3661,7 +3663,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree0.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree0.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3679,7 +3681,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3698,7 +3700,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3717,7 +3719,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree3.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3735,7 +3737,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree4.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3752,7 +3754,7 @@ bool CObject::CreatePlant(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/tree5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "tree5.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3795,7 +3797,7 @@ bool CObject::CreateMushroom(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/mush1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mush1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3812,7 +3814,7 @@ bool CObject::CreateMushroom(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/mush2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "mush2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3861,7 +3863,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen0.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen0.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3881,7 +3883,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3903,7 +3905,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3926,7 +3928,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen3.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3942,7 +3944,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen4.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3964,7 +3966,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen5.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -3981,7 +3983,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen6.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen6.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4002,7 +4004,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen7.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen7.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4023,7 +4025,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen8.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen8.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4045,7 +4047,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen9.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen9.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4067,7 +4069,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen10.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen10.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4093,7 +4095,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen11.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen11.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4118,7 +4120,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen12.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen12.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4134,7 +4136,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen13.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen13.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4159,7 +4161,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen14.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen14.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4184,7 +4186,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen15.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen15.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4209,7 +4211,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen16.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen16.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4227,7 +4229,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen17.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen17.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4243,7 +4245,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen18.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen18.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4259,7 +4261,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen19.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen19.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4275,7 +4277,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen20.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen20.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4296,7 +4298,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen21.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen21.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4308,7 +4310,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen22.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen22.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4325,7 +4327,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen23.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen23.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4352,7 +4354,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen24.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen24.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4368,7 +4370,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen25.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen25.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4384,7 +4386,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen26.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen26.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4408,7 +4410,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen27.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen27.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4424,7 +4426,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height //? m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_METAL); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen28.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen28.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4439,7 +4441,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen29.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen29.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4452,7 +4454,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen30.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen30.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4468,7 +4470,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen31.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen31.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4487,7 +4489,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen32.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen32.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4506,7 +4508,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen33.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen33.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4521,7 +4523,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen34.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen34.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4536,7 +4538,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen35.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen35.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4555,7 +4557,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen36.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen36.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4568,7 +4570,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen37.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen37.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4581,7 +4583,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen38a.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen38a.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4591,7 +4593,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/teen38b.mod"); // engine + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen38b.mod")); // engine pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 30.0f, 0.0f)); @@ -4599,7 +4601,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 1); - pModFile->ReadModel("data/models/teen38c.mod"); // propeller + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen38c.mod")); // propeller pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(0.0f, 0.0f, 0.0f)); @@ -4613,7 +4615,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen39.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen39.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4629,7 +4631,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen40.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen40.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4645,7 +4647,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen41.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen41.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4657,7 +4659,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen42.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen42.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4672,7 +4674,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen43.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen43.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4687,7 +4689,7 @@ bool CObject::CreateTeen(Math::Vector pos, float angle, float zoom, float height rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/teen44.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "teen44.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4735,7 +4737,7 @@ bool CObject::CreateQuartz(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/quartz0.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "quartz0.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4750,7 +4752,7 @@ bool CObject::CreateQuartz(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/quartz1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "quartz1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4765,7 +4767,7 @@ bool CObject::CreateQuartz(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/quartz2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "quartz2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4780,7 +4782,7 @@ bool CObject::CreateQuartz(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_QUARTZ); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/quartz3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "quartz3.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4845,7 +4847,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root0.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root0.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4867,7 +4869,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4889,7 +4891,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root2.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4910,7 +4912,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root3.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root3.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4933,7 +4935,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root4.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4958,7 +4960,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/root4.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root4.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -4968,7 +4970,7 @@ bool CObject::CreateRoot(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/root5.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "root5.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(-5.0f, 28.0f, -4.0f)); SetAngleX(1, -30.0f*Math::PI/180.0f); @@ -5020,7 +5022,7 @@ bool CObject::CreateHome(Math::Vector pos, float angle, float height, rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); SetObjectRank(0, rank); - pModFile->ReadModel("data/models/home1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "home1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5051,7 +5053,6 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, ObjectType type) { Gfx::CModelFile* pModFile; - char name[50]; int rank; pModFile = new Gfx::CModelFile(m_iMan); @@ -5062,20 +5063,20 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object SetObjectRank(0, rank); - name[0] = 0; - if ( type == OBJECT_RUINmobilew1 ) strcpy(name, "data/models/ruin1.mod"); - if ( type == OBJECT_RUINmobilew2 ) strcpy(name, "data/models/ruin1.mod"); - if ( type == OBJECT_RUINmobilet1 ) strcpy(name, "data/models/ruin2.mod"); - if ( type == OBJECT_RUINmobilet2 ) strcpy(name, "data/models/ruin2.mod"); - if ( type == OBJECT_RUINmobiler1 ) strcpy(name, "data/models/ruin3.mod"); - if ( type == OBJECT_RUINmobiler2 ) strcpy(name, "data/models/ruin3.mod"); - if ( type == OBJECT_RUINfactory ) strcpy(name, "data/models/ruin4.mod"); - if ( type == OBJECT_RUINdoor ) strcpy(name, "data/models/ruin5.mod"); - if ( type == OBJECT_RUINsupport ) strcpy(name, "data/models/ruin6.mod"); - if ( type == OBJECT_RUINradar ) strcpy(name, "data/models/ruin7.mod"); - if ( type == OBJECT_RUINconvert ) strcpy(name, "data/models/ruin8.mod"); - if ( type == OBJECT_RUINbase ) strcpy(name, "data/models/ruin9.mod"); - if ( type == OBJECT_RUINhead ) strcpy(name, "data/models/ruin10.mod"); + std::string name; + if ( type == OBJECT_RUINmobilew1 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin1.mod"); + if ( type == OBJECT_RUINmobilew2 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin1.mod"); + if ( type == OBJECT_RUINmobilet1 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin2.mod"); + if ( type == OBJECT_RUINmobilet2 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin2.mod"); + if ( type == OBJECT_RUINmobiler1 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin3.mod"); + if ( type == OBJECT_RUINmobiler2 ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin3.mod"); + if ( type == OBJECT_RUINfactory ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin4.mod"); + if ( type == OBJECT_RUINdoor ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin5.mod"); + if ( type == OBJECT_RUINsupport ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin6.mod"); + if ( type == OBJECT_RUINradar ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin7.mod"); + if ( type == OBJECT_RUINconvert ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin8.mod"); + if ( type == OBJECT_RUINbase ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin9.mod"); + if ( type == OBJECT_RUINhead ) name = m_app->GetDataFilePath(DIR_MODEL, "ruin10.mod"); pModFile->ReadModel(name); pModFile->CreateEngineObject(rank); @@ -5091,7 +5092,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(6, rank); SetObjectParent(6, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(6, Math::Vector(-3.0f, 1.8f, -4.0f)); @@ -5103,7 +5104,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(7, rank); SetObjectParent(7, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(7, Math::Vector(-3.0f, 1.0f, 3.0f)); @@ -5116,7 +5117,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(8, rank); SetObjectParent(8, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(8, Math::Vector(2.0f, 1.6f, -3.0f)); @@ -5128,7 +5129,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(9, rank); SetObjectParent(9, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(9, Math::Vector(2.0f, 1.0f, 3.0f)); @@ -5149,7 +5150,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(7, rank); SetObjectParent(7, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(7, Math::Vector(-3.0f, 1.0f, 3.0f)); @@ -5162,7 +5163,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(9, rank); SetObjectParent(9, 0); - pModFile->ReadModel("data/models/ruin1w.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin1w.mod")); pModFile->CreateEngineObject(rank); SetPosition(9, Math::Vector(2.0f, 1.0f, 3.0f)); @@ -5183,7 +5184,7 @@ bool CObject::CreateRuin(Math::Vector pos, float angle, float height, SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/ruin2c.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "ruin2c.mod")); pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(3.0f, 5.0f, -2.5f)); @@ -5486,7 +5487,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object SetObjectRank(0, rank); - pModFile->ReadModel("data/models/apollol1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apollol1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5499,7 +5500,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(i+1, rank); SetObjectParent(i+1, 0); - pModFile->ReadModel("data/models/apollol2.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apollol2.mod")); pModFile->CreateEngineObject(rank); SetAngleY(i+1, Math::PI/2.0f*i); } @@ -5508,7 +5509,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(5, rank); SetObjectParent(5, 0); - pModFile->ReadModel("data/models/apollol3.mod"); // ladder + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apollol3.mod")); // ladder pModFile->CreateEngineObject(rank); //? m_terrain->AddBuildingLevel(pos, 10.0f, 13.0f, 12.0f, 0.0f); @@ -5529,7 +5530,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); //it is a stationary object SetObjectRank(0, rank); - pModFile->ReadModel("data/models/apolloj1.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj1.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5540,7 +5541,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(-5.75f, 1.65f, -5.0f)); @@ -5548,7 +5549,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(2, rank); SetObjectParent(2, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); SetPosition(2, Math::Vector(-5.75f, 1.65f, 5.0f)); @@ -5556,7 +5557,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(3, rank); SetObjectParent(3, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); SetPosition(3, Math::Vector(5.75f, 1.65f, -5.0f)); @@ -5564,7 +5565,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(4, rank); SetObjectParent(4, 0); - pModFile->ReadModel("data/models/apolloj4.mod"); // wheel + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj4.mod")); // wheel pModFile->CreateEngineObject(rank); SetPosition(4, Math::Vector(5.75f, 1.65f, 5.0f)); @@ -5573,7 +5574,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(5, rank); SetObjectParent(5, 0); - pModFile->ReadModel("data/models/apolloj2.mod"); // antenna + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj2.mod")); // antenna pModFile->CreateEngineObject(rank); SetPosition(5, Math::Vector(5.5f, 8.8f, 2.0f)); SetAngleY(5, -120.0f*Math::PI/180.0f); @@ -5583,7 +5584,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(6, rank); SetObjectParent(6, 0); - pModFile->ReadModel("data/models/apolloj3.mod"); // camera + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj3.mod")); // camera pModFile->CreateEngineObject(rank); SetPosition(6, Math::Vector(5.5f, 2.8f, -2.0f)); SetAngleY(6, 30.0f*Math::PI/180.0f); @@ -5602,7 +5603,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object SetObjectRank(0, rank); - pModFile->ReadModel("data/models/apollof.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apollof.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5617,7 +5618,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object SetObjectRank(0, rank); - pModFile->ReadModel("data/models/apollom.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apollom.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5634,7 +5635,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) rank = m_engine->CreateObject(); m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_FIX); // it is a stationary object SetObjectRank(0, rank); - pModFile->ReadModel("data/models/apolloa.mod"); + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloa.mod")); pModFile->CreateEngineObject(rank); SetPosition(0, pos); SetAngleY(0, angle); @@ -5644,7 +5645,7 @@ bool CObject::CreateApollo(Math::Vector pos, float angle, ObjectType type) m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); SetObjectRank(1, rank); SetObjectParent(1, 0); - pModFile->ReadModel("data/models/apolloj2.mod"); // antenna + pModFile->ReadModel(m_app->GetDataFilePath(DIR_MODEL, "apolloj2.mod")); // antenna pModFile->CreateEngineObject(rank); SetPosition(1, Math::Vector(0.0f, 5.0f, 0.0f)); SetAngleY(1, -120.0f*Math::PI/180.0f); diff --git a/src/object/object.h b/src/object/object.h index 1301768b..b5558562 100644 --- a/src/object/object.h +++ b/src/object/object.h @@ -21,11 +21,14 @@ #include "graphics/engine/engine.h" #include "graphics/engine/camera.h" -#include "sound/sound.h" + #include "object/object_ids.h" +#include "sound/sound.h" + class CInstanceManager; +class CApplication; class CPhysics; class CBrain; class CMotion; @@ -407,6 +410,8 @@ public: float GetTraceWidth(); void SetTraceWidth(float width); + std::string GetModelDirName(); + protected: bool EventFrame(const Event &event); void VirusFrame(float rTime); @@ -422,6 +427,7 @@ protected: protected: CInstanceManager* m_iMan; + CApplication* m_app; Gfx::CEngine* m_engine; Gfx::CLightManager* m_lightMan; Gfx::CTerrain* m_terrain; diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp index 93e1fda5..7a963a0c 100644 --- a/src/object/robotmain.cpp +++ b/src/object/robotmain.cpp @@ -117,7 +117,7 @@ static char* m_filesDir; void PrepareFilename(CBotString &filename) { - int pos = filename.ReverseFind('\\'); + int pos = filename.ReverseFind('/'); if ( pos > 0 ) { filename = filename.Mid(pos+1); // Remove files with @@ -135,7 +135,7 @@ void PrepareFilename(CBotString &filename) filename = filename.Mid(pos+1); // also removes the drive letter C: } - filename = CBotString(m_filesDir) + CBotString("\\") + filename; + filename = CBotString(m_filesDir) + CBotString("/") + filename; } @@ -1153,7 +1153,7 @@ void CRobotMain::ChangePhase(Phase phase) pe->SetFontType(FONT_COLOBOT); pe->SetEditCap(false); pe->SetHiliteCap(false); - pe->ReadText("help\\teenw.txt"); + pe->ReadText("help/teenw.txt"); #else*/ pos.x = ox+sx*3; pos.y = oy+sy*0.2f; @@ -1163,7 +1163,7 @@ void CRobotMain::ChangePhase(Phase phase) pe->SetFontType(Gfx::FONT_COLOBOT); pe->SetEditCap(false); pe->SetHiliteCap(false); - pe->ReadText("help\\win.txt"); + pe->ReadText("help/win.txt"); } else { @@ -1387,7 +1387,7 @@ bool CRobotMain::EventProcess(Event &event) HiliteClear(); if (event.key.key == KEY(F11)) { - m_particle->WriteWheelTrace("Savegame\\t.png", 256, 256, Math::Vector(16.0f, 0.0f, -368.0f), Math::Vector(140.0f, 0.0f, -248.0f)); + m_particle->WriteWheelTrace("Savegame/t.png", 256, 256, Math::Vector(16.0f, 0.0f, -368.0f), Math::Vector(140.0f, 0.0f, -248.0f)); return false; } if (m_editLock) // current edition? @@ -1961,7 +1961,7 @@ void CRobotMain::FlushDisplayInfo() m_infoFilename[i][0] = 0; m_infoPos[i] = 0; } - strcpy(m_infoFilename[SATCOM_OBJECT], "help\\objects.txt"); + strcpy(m_infoFilename[SATCOM_OBJECT], "help/objects.txt"); m_infoIndex = 0; } @@ -5391,7 +5391,7 @@ char* SearchLastDir(char *filename) while (p != filename) { - if (*(--p) == '\\') return p; + if (*(--p) == '/') return p; } return 0; } @@ -5493,7 +5493,7 @@ void CRobotMain::LoadOneScript(CObject *obj, int &nbError) if (brain->GetCompile(i)) continue; char filename[MAX_FNAME]; - sprintf(filename, "%s\\%s\\%c%.3d%.3d%.1d.txt", + sprintf(filename, "%s/%s/%c%.3d%.3d%.1d.txt", GetSavegameDir(), m_gamerName, name[0], rank, objRank, i); brain->ReadProgram(i, filename); if (!brain->GetCompile(i)) nbError++; @@ -5522,7 +5522,7 @@ void CRobotMain::LoadFileScript(CObject *obj, char* filename, int objRank, { if (brain->GetCompile(i)) continue; - sprintf(ldir, "\\prog%.3d%.1d.txt", objRank, i); + sprintf(ldir, "/prog%.3d%.1d.txt", objRank, i); brain->ReadProgram(i, fn); if (!brain->GetCompile(i)) nbError++; } @@ -5561,7 +5561,7 @@ void CRobotMain::SaveOneScript(CObject *obj) for (int i = 0; i < BRAINMAXSCRIPT; i++) { char filename[MAX_FNAME]; - sprintf(filename, "%s\\%s\\%c%.3d%.3d%.1d.txt", + sprintf(filename, "%s/%s/%c%.3d%.3d%.1d.txt", GetSavegameDir(), m_gamerName, name[0], rank, objRank, i); brain->WriteProgram(i, filename); } @@ -5586,7 +5586,7 @@ void CRobotMain::SaveFileScript(CObject *obj, char* filename, int objRank) for (int i = 0; i < BRAINMAXSCRIPT; i++) { - sprintf(ldir, "\\prog%.3d%.1d.txt", objRank, i); + sprintf(ldir, "/prog%.3d%.1d.txt", objRank, i); brain->WriteProgram(i, fn); } } @@ -6093,7 +6093,7 @@ void CRobotMain::WriteFreeParam() if (m_gamerName[0] == 0) return; char filename[MAX_FNAME]; - sprintf(filename, "%s\\%s\\research.gam", GetSavegameDir(), m_gamerName); + sprintf(filename, "%s/%s/research.gam", GetSavegameDir(), m_gamerName); FILE* file = fopen(filename, "w"); if (file == NULL) return; @@ -6112,7 +6112,7 @@ void CRobotMain::ReadFreeParam() if (m_gamerName[0] == 0) return; char filename[MAX_FNAME]; - sprintf(filename, "%s\\%s\\research.gam", GetSavegameDir(), m_gamerName); + sprintf(filename, "%s/%s/research.gam", GetSavegameDir(), m_gamerName); FILE* file = fopen(filename, "r"); if (file == NULL) return; diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp index 5a9e8860..010e0877 100644 --- a/src/ui/maindialog.cpp +++ b/src/ui/maindialog.cpp @@ -169,7 +169,7 @@ CMainDialog::CMainDialog(CInstanceManager* iMan) m_partiTime[i] = 0.0f; } - strcpy(m_sceneDir, "data/levels"); + strcpy(m_sceneDir, "levels"); strcpy(m_savegameDir, "savegame"); strcpy(m_publicDir, "program"); strcpy(m_userDir, "user"); @@ -3586,13 +3586,15 @@ void CMainDialog::SetUserDir(char *base, int rank) void CMainDialog::BuildSceneName(char *filename, char *base, int rank) { + std::string dataDir = m_app->GetDataDirPath(); + if ( strcmp(base, "user") == 0 ) { - sprintf(filename, "%s/%s/scene%.2d.txt", m_userDir, m_userList[rank/100-1], rank%100); + sprintf(filename, "%s/%s/%s/scene%.2d.txt", dataDir.c_str(), m_userDir, m_userList[rank/100-1], rank%100); } else { - sprintf(filename, "%s/%s%.3d.txt", m_sceneDir, base, rank); + sprintf(filename, "%s/%s/%s%.3d.txt", dataDir.c_str(), m_sceneDir, base, rank); } }