diff options
Diffstat (limited to 'src/object/task')
42 files changed, 229 insertions, 176 deletions
diff --git a/src/object/task/task.cpp b/src/object/task/task.cpp index b310fd5..39fdccf 100644 --- a/src/object/task/task.cpp +++ b/src/object/task/task.cpp @@ -14,33 +14,28 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// task.cpp - - -// #include <stdio.h> #include "object/task/task.h" -#include "common/iman.h" -#include "object/object.h" +#include "app/app.h" +#include "object/object.h" +#include "object/robotmain.h" // Object's constructor. -CTask::CTask(CInstanceManager* iMan, CObject* object) +CTask::CTask(CObject* object) { - m_iMan = iMan; - - m_engine = static_cast<Gfx::CEngine*>(m_iMan->SearchInstance(CLASS_ENGINE)); - m_lightMan = static_cast<Gfx::CLightManager*>(m_iMan->SearchInstance(CLASS_LIGHT)); - m_terrain = static_cast<Gfx::CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN)); - m_water = static_cast<Gfx::CWater*>(m_iMan->SearchInstance(CLASS_WATER)); - m_particle = static_cast<Gfx::CParticle*>(m_iMan->SearchInstance(CLASS_PARTICULE)); - m_camera = static_cast<Gfx::CCamera*>(m_iMan->SearchInstance(CLASS_CAMERA)); - m_displayText = static_cast<Ui::CDisplayText*>(m_iMan->SearchInstance(CLASS_DISPLAYTEXT)); - m_main = static_cast<CRobotMain*>(m_iMan->SearchInstance(CLASS_MAIN)); - m_sound = static_cast<CSoundInterface*>(m_iMan->SearchInstance(CLASS_SOUND)); + m_sound = CApplication::GetInstancePointer()->GetSound(); + m_engine = Gfx::CEngine::GetInstancePointer(); + m_lightMan = m_engine->GetLightManager(); + m_water = m_engine->GetWater(); + m_particle = m_engine->GetParticle(); + m_main = CRobotMain::GetInstancePointer(); + m_terrain = m_main->GetTerrain(); + m_camera = m_main->GetCamera(); + m_displayText = m_main->GetDisplayText(); m_object = object; m_physics = m_object->GetPhysics(); diff --git a/src/object/task/task.h b/src/object/task/task.h index 7239d48..12961ef 100644 --- a/src/object/task/task.h +++ b/src/object/task/task.h @@ -21,10 +21,10 @@ #include "common/event.h" #include "common/global.h" + #include "math/const.h" -class CInstanceManager; class CBrain; class CPhysics; class CMotion; @@ -64,7 +64,7 @@ const float ARM_STOCK_ANGLE3 = -70.0f*Math::PI/180.0f; class CTask { public: - CTask(CInstanceManager* iMan, CObject* object); + CTask(CObject* object); virtual ~CTask(); virtual bool EventProcess(const Event &event); @@ -73,7 +73,6 @@ public: virtual bool Abort(); protected: - CInstanceManager* m_iMan; Gfx::CEngine* m_engine; Gfx::CLightManager* m_lightMan; Gfx::CParticle* m_particle; diff --git a/src/object/task/taskadvance.cpp b/src/object/task/taskadvance.cpp index 0d159d2..58eb939 100644 --- a/src/object/task/taskadvance.cpp +++ b/src/object/task/taskadvance.cpp @@ -14,11 +14,11 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskadvance.cpp #include "object/task/taskadvance.h" #include "math/geometry.h" + #include "physics/physics.h" @@ -26,8 +26,7 @@ // Object's constructor. -CTaskAdvance::CTaskAdvance(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskAdvance::CTaskAdvance(CObject* object) : CTask(object) { } diff --git a/src/object/task/taskadvance.h b/src/object/task/taskadvance.h index dbb80d9..f8c672d 100644 --- a/src/object/task/taskadvance.h +++ b/src/object/task/taskadvance.h @@ -20,6 +20,7 @@ #include "object/task/task.h" + #include "math/vector.h" @@ -27,7 +28,7 @@ class CTaskAdvance : public CTask { public: - CTaskAdvance(CInstanceManager* iMan, CObject* object); + CTaskAdvance(CObject* object); ~CTaskAdvance(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskbuild.cpp b/src/object/task/taskbuild.cpp index 5673ea4..f209cd5 100644 --- a/src/object/task/taskbuild.cpp +++ b/src/object/task/taskbuild.cpp @@ -14,29 +14,32 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskbuild.cpp #include "object/task/taskbuild.h" #include "common/iman.h" + #include "graphics/core/color.h" #include "graphics/core/light.h" #include "graphics/engine/lightman.h" #include "graphics/engine/terrain.h" #include "graphics/engine/water.h" + #include "math/geometry.h" + #include "object/auto/auto.h" #include "object/motion/motionhuman.h" #include "object/robotmain.h" + #include "physics/physics.h" + #include "ui/displaytext.h" #include <string.h> // Object's constructor. -CTaskBuild::CTaskBuild(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskBuild::CTaskBuild(CObject* object) : CTask(object) { int i; @@ -75,7 +78,7 @@ CTaskBuild::~CTaskBuild() bool CTaskBuild::CreateBuilding(Math::Vector pos, float angle) { - m_building = new CObject(m_iMan); + m_building = new CObject(); if ( !m_building->CreateBuilding(pos, angle, 0.0f, m_type, 0.0f) ) { delete m_building; @@ -596,11 +599,13 @@ Error CTaskBuild::FlatFloor() return bLittleFlat?ERR_BUILD_FLATLIT:ERR_BUILD_FLAT; } + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + max = 100000.0f; bBase = false; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetActif() ) continue; // inactive? @@ -648,7 +653,7 @@ Error CTaskBuild::FlatFloor() max = 100000.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetActif() ) continue; // inactive? @@ -715,12 +720,14 @@ CObject* CTaskBuild::SearchMetalObject(float &angle, float dMin, float dMax, iAngle = m_object->GetAngleY(0); iAngle = Math::NormAngle(iAngle); // 0..2*Math::PI + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 1000000.0f; pBest = 0; bMetal = false; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetActif() ) continue; // objet inactive? @@ -779,9 +786,11 @@ void CTaskBuild::DeleteMark(Math::Vector pos, float radius) float distance; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); diff --git a/src/object/task/taskbuild.h b/src/object/task/taskbuild.h index 25300b3..b3193a0 100644 --- a/src/object/task/taskbuild.h +++ b/src/object/task/taskbuild.h @@ -45,7 +45,7 @@ enum TaskBuildPhase class CTaskBuild : public CTask { public: - CTaskBuild(CInstanceManager* iMan, CObject* object); + CTaskBuild(CObject* object); ~CTaskBuild(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskfire.cpp b/src/object/task/taskfire.cpp index 99a88b8..beb4944 100644 --- a/src/object/task/taskfire.cpp +++ b/src/object/task/taskfire.cpp @@ -14,12 +14,13 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskfire.cpp #include "object/task/taskfire.h" #include "graphics/engine/particle.h" + #include "math/geometry.h" + #include "physics/physics.h" @@ -31,8 +32,7 @@ const float ENERGY_FIREi = (0.10f/2.5f); // energy consumed/organic // Object's constructor. -CTaskFire::CTaskFire(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskFire::CTaskFire(CObject* object) : CTask(object) { m_soundChannel = -1; } diff --git a/src/object/task/taskfire.h b/src/object/task/taskfire.h index 5cf4f0c..81058df 100644 --- a/src/object/task/taskfire.h +++ b/src/object/task/taskfire.h @@ -26,7 +26,7 @@ class CTaskFire : public CTask { public: - CTaskFire(CInstanceManager* iMan, CObject* object); + CTaskFire(CObject* object); ~CTaskFire(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskfireant.cpp b/src/object/task/taskfireant.cpp index 2044685..c0acf64 100644 --- a/src/object/task/taskfireant.cpp +++ b/src/object/task/taskfireant.cpp @@ -14,13 +14,15 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskfireant.cpp #include "object/task/taskfireant.h" #include "graphics/engine/particle.h" + #include "math/geometry.h" + #include "object/motion/motionant.h" + #include "physics/physics.h" @@ -28,8 +30,7 @@ // Object's constructor. -CTaskFireAnt::CTaskFireAnt(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskFireAnt::CTaskFireAnt(CObject* object) : CTask(object) { m_phase = TFA_NULL; } diff --git a/src/object/task/taskfireant.h b/src/object/task/taskfireant.h index 4fa77b8..2a0ead8 100644 --- a/src/object/task/taskfireant.h +++ b/src/object/task/taskfireant.h @@ -38,7 +38,7 @@ enum TaskFireAnt class CTaskFireAnt : public CTask { public: - CTaskFireAnt(CInstanceManager* iMan, CObject* object); + CTaskFireAnt(CObject* object); ~CTaskFireAnt(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskflag.cpp b/src/object/task/taskflag.cpp index c88b5c0..dd5e11d 100644 --- a/src/object/task/taskflag.cpp +++ b/src/object/task/taskflag.cpp @@ -14,26 +14,28 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskflag.cpp #include "object/task/taskflag.h" -#include "math/geometry.h" #include "common/iman.h" + +#include "math/geometry.h" + #include "graphics/engine/particle.h" #include "graphics/engine/pyro.h" #include "graphics/engine/water.h" -#include "physics/physics.h" + #include "object/motion/motionhuman.h" +#include "physics/physics.h" + // Object's constructor. -CTaskFlag::CTaskFlag(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskFlag::CTaskFlag(CObject* object) : CTask(object) { } @@ -137,11 +139,13 @@ CObject* CTaskFlag::SearchNearest(Math::Vector pos, ObjectType type) float min, dist; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 100000.0f; pBest = 0; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetEnable() ) continue; @@ -180,10 +184,12 @@ int CTaskFlag::CountObject(ObjectType type) Math::Vector oPos; int i, count; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + count = 0; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetEnable() ) continue; @@ -247,7 +253,7 @@ Error CTaskFlag::CreateFlag(int rank) return ERR_FLAG_CREATE; } - pNew = new CObject(m_iMan); + pNew = new CObject(); if ( !pNew->CreateFlag(pos, 0.0f, table[i]) ) { delete pNew; @@ -256,7 +262,7 @@ Error CTaskFlag::CreateFlag(int rank) //pNew->SetZoom(0, 0.0f); m_sound->Play(SOUND_WAYPOINT, pos); - pyro = new Gfx::CPyro(m_iMan); + pyro = new Gfx::CPyro(); pyro->Create(Gfx::PT_FLCREATE, pNew); return ERR_OK; @@ -295,7 +301,7 @@ Error CTaskFlag::DeleteFlag() } m_sound->Play(SOUND_WAYPOINT, iPos); - pyro = new Gfx::CPyro(m_iMan); + pyro = new Gfx::CPyro(); pyro->Create(Gfx::PT_FLDELETE, pObj); return ERR_OK; diff --git a/src/object/task/taskflag.h b/src/object/task/taskflag.h index 5b0a058..7e3e4ef 100644 --- a/src/object/task/taskflag.h +++ b/src/object/task/taskflag.h @@ -20,6 +20,7 @@ #include "object/task/task.h" #include "object/object.h" + #include "math/vector.h" @@ -35,7 +36,7 @@ enum TaskFlagOrder class CTaskFlag : public CTask { public: - CTaskFlag(CInstanceManager* iMan, CObject* object); + CTaskFlag(CObject* object); ~CTaskFlag(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskgoto.cpp b/src/object/task/taskgoto.cpp index cab57f1..c4a2939 100644 --- a/src/object/task/taskgoto.cpp +++ b/src/object/task/taskgoto.cpp @@ -14,8 +14,6 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskgoto.cpp - #include <stdio.h> @@ -23,9 +21,12 @@ #include "common/event.h" #include "common/iman.h" + #include "graphics/engine/terrain.h" #include "graphics/engine/water.h" + #include "math/geometry.h" + #include "physics/physics.h" #include <string.h> @@ -40,8 +41,7 @@ const float BM_DIM_STEP = 5.0f; // Object's constructor. -CTaskGoto::CTaskGoto(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskGoto::CTaskGoto(CObject* object) : CTask(object) { m_bmArray = 0; } @@ -494,12 +494,14 @@ CObject* CTaskGoto::WormSearch(Math::Vector &impact) float distance, min, radius; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + iPos = m_object->GetPosition(0); min = 1000000.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; oType = pObj->GetType(); @@ -1026,11 +1028,13 @@ CObject* CTaskGoto::SearchTarget(Math::Vector pos, float margin) float dist, min; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + pBest = 0; min = 1000000.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetActif() ) continue; @@ -1170,9 +1174,11 @@ bool CTaskGoto::AdjustBuilding(Math::Vector &pos, float margin, float &distance) float dist, suppl; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( !pObj->GetActif() ) continue; @@ -1339,11 +1345,13 @@ bool CTaskGoto::LeakSearch(Math::Vector &pos, float &delay) m_object->GetCrashSphere(0, iPos, iRadius); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 100000.0f; bRadius = 0.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; @@ -1401,7 +1409,7 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir) for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; @@ -1522,9 +1530,11 @@ void CTaskGoto::ComputeRepulse(Math::Point &dir) bAlien = true; } + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; @@ -1614,9 +1624,11 @@ void CTaskGoto::ComputeFlyingRepulse(float &dir) fac = 1.5f; dir = 0.0f; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; @@ -1928,9 +1940,11 @@ void CTaskGoto::BitmapObject() m_object->GetCrashSphere(0, iPos, iRadius); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); diff --git a/src/object/task/taskgoto.h b/src/object/task/taskgoto.h index 1382d4c..d2b2d7e 100644 --- a/src/object/task/taskgoto.h +++ b/src/object/task/taskgoto.h @@ -20,6 +20,7 @@ #include "object/task/task.h" + #include "math/vector.h" @@ -72,7 +73,7 @@ enum TaskGotoPhase class CTaskGoto : public CTask { public: - CTaskGoto(CInstanceManager* iMan, CObject* object); + CTaskGoto(CObject* object); ~CTaskGoto(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskgungoal.cpp b/src/object/task/taskgungoal.cpp index aed3355..3373610 100644 --- a/src/object/task/taskgungoal.cpp +++ b/src/object/task/taskgungoal.cpp @@ -14,7 +14,6 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskgungoal.cpp #include "object/task/taskgungoal.h" @@ -25,8 +24,7 @@ // Object's constructor. -CTaskGunGoal::CTaskGunGoal(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskGunGoal::CTaskGunGoal(CObject* object) : CTask(object) { } diff --git a/src/object/task/taskgungoal.h b/src/object/task/taskgungoal.h index 0c063d1..c6f010b 100644 --- a/src/object/task/taskgungoal.h +++ b/src/object/task/taskgungoal.h @@ -26,7 +26,7 @@ class CTaskGunGoal : public CTask { public: - CTaskGunGoal(CInstanceManager* iMan, CObject* object); + CTaskGunGoal(CObject* object); ~CTaskGunGoal(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskinfo.cpp b/src/object/task/taskinfo.cpp index 4e64584..32ac342 100644 --- a/src/object/task/taskinfo.cpp +++ b/src/object/task/taskinfo.cpp @@ -14,12 +14,13 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskinfo.cpp #include "object/task/taskinfo.h" #include "common/iman.h" + #include "graphics/engine/particle.h" + #include "object/auto/autoinfo.h" #include <string.h> @@ -28,8 +29,7 @@ // Object's constructor. -CTaskInfo::CTaskInfo(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskInfo::CTaskInfo(CObject* object) : CTask(object) { } @@ -189,11 +189,13 @@ CObject* CTaskInfo::SearchInfo(float power) iPos = m_object->GetPosition(0); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 100000.0f; pBest = 0; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); diff --git a/src/object/task/taskinfo.h b/src/object/task/taskinfo.h index 036b57d..1ce3dca 100644 --- a/src/object/task/taskinfo.h +++ b/src/object/task/taskinfo.h @@ -26,7 +26,7 @@ class CTaskInfo : public CTask { public: - CTaskInfo(CInstanceManager* iMan, CObject* object); + CTaskInfo(CObject* object); ~CTaskInfo(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskmanager.cpp b/src/object/task/taskmanager.cpp index 26e389d..a2ce8b8 100644 --- a/src/object/task/taskmanager.cpp +++ b/src/object/task/taskmanager.cpp @@ -14,14 +14,13 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskmanager.cpp - #include <stdio.h> #include "object/task/taskmanager.h" #include "common/iman.h" + #include "object/task/taskwait.h" #include "object/task/taskadvance.h" #include "object/task/taskturn.h" @@ -43,12 +42,9 @@ // Object's constructor. -CTaskManager::CTaskManager(CInstanceManager* iMan, CObject* object) +CTaskManager::CTaskManager(CObject* object) { - m_iMan = iMan; - m_iMan->AddInstance(CLASS_TASKMANAGER, this, 100); - - m_task = 0; + m_task = nullptr; m_object = object; m_bPilot = false; } @@ -66,7 +62,7 @@ CTaskManager::~CTaskManager() Error CTaskManager::StartTaskWait(float time) { - m_task = new CTaskWait(m_iMan, m_object); + m_task = new CTaskWait(m_object); return (static_cast<CTaskWait*>(m_task))->Start(time); } @@ -74,7 +70,7 @@ Error CTaskManager::StartTaskWait(float time) Error CTaskManager::StartTaskAdvance(float length) { - m_task = new CTaskAdvance(m_iMan, m_object); + m_task = new CTaskAdvance(m_object); return (static_cast<CTaskAdvance*>(m_task))->Start(length); } @@ -82,7 +78,7 @@ Error CTaskManager::StartTaskAdvance(float length) Error CTaskManager::StartTaskTurn(float angle) { - m_task = new CTaskTurn(m_iMan, m_object); + m_task = new CTaskTurn(m_object); return (static_cast<CTaskTurn*>(m_task))->Start(angle); } @@ -90,7 +86,7 @@ Error CTaskManager::StartTaskTurn(float angle) Error CTaskManager::StartTaskGoto(Math::Vector pos, float altitude, TaskGotoGoal goalMode, TaskGotoCrash crashMode) { - m_task = new CTaskGoto(m_iMan, m_object); + m_task = new CTaskGoto(m_object); return (static_cast<CTaskGoto*>(m_task))->Start(pos, altitude, goalMode, crashMode); } @@ -98,7 +94,7 @@ Error CTaskManager::StartTaskGoto(Math::Vector pos, float altitude, TaskGotoGoal Error CTaskManager::StartTaskTake() { - m_task = new CTaskTake(m_iMan, m_object); + m_task = new CTaskTake(m_object); return (static_cast<CTaskTake*>(m_task))->Start(); } @@ -106,7 +102,7 @@ Error CTaskManager::StartTaskTake() Error CTaskManager::StartTaskManip(TaskManipOrder order, TaskManipArm arm) { - m_task = new CTaskManip(m_iMan, m_object); + m_task = new CTaskManip(m_object); return (static_cast<CTaskManip*>(m_task))->Start(order, arm); } @@ -114,7 +110,7 @@ Error CTaskManager::StartTaskManip(TaskManipOrder order, TaskManipArm arm) Error CTaskManager::StartTaskFlag(TaskFlagOrder order, int rank) { - m_task = new CTaskFlag(m_iMan, m_object); + m_task = new CTaskFlag(m_object); return (static_cast<CTaskFlag*>(m_task))->Start(order, rank); } @@ -122,7 +118,7 @@ Error CTaskManager::StartTaskFlag(TaskFlagOrder order, int rank) Error CTaskManager::StartTaskBuild(ObjectType type) { - m_task = new CTaskBuild(m_iMan, m_object); + m_task = new CTaskBuild(m_object); return (static_cast<CTaskBuild*>(m_task))->Start(type); } @@ -130,7 +126,7 @@ Error CTaskManager::StartTaskBuild(ObjectType type) Error CTaskManager::StartTaskSearch() { - m_task = new CTaskSearch(m_iMan, m_object); + m_task = new CTaskSearch(m_object); return (static_cast<CTaskSearch*>(m_task))->Start(); } @@ -138,7 +134,7 @@ Error CTaskManager::StartTaskSearch() Error CTaskManager::StartTaskInfo(const char *name, float value, float power, bool bSend) { - m_task = new CTaskInfo(m_iMan, m_object); + m_task = new CTaskInfo(m_object); return (static_cast<CTaskInfo*>(m_task))->Start(name, value, power, bSend); } @@ -146,7 +142,7 @@ Error CTaskManager::StartTaskInfo(const char *name, float value, float power, bo Error CTaskManager::StartTaskTerraform() { - m_task = new CTaskTerraform(m_iMan, m_object); + m_task = new CTaskTerraform(m_object); return (static_cast<CTaskTerraform*>(m_task))->Start(); } @@ -154,7 +150,7 @@ Error CTaskManager::StartTaskTerraform() Error CTaskManager::StartTaskPen(bool bDown, int color) { - m_task = new CTaskPen(m_iMan, m_object); + m_task = new CTaskPen(m_object); return (static_cast<CTaskPen*>(m_task))->Start(bDown, color); } @@ -162,7 +158,7 @@ Error CTaskManager::StartTaskPen(bool bDown, int color) Error CTaskManager::StartTaskRecover() { - m_task = new CTaskRecover(m_iMan, m_object); + m_task = new CTaskRecover(m_object); return (static_cast<CTaskRecover*>(m_task))->Start(); } @@ -172,7 +168,7 @@ Error CTaskManager::StartTaskShield(TaskShieldMode mode, float delay) { if ( mode == TSM_UP ) { - m_task = new CTaskShield(m_iMan, m_object); + m_task = new CTaskShield(m_object); return (static_cast<CTaskShield*>(m_task))->Start(mode, delay); } if ( mode == TSM_DOWN && m_task != 0 ) @@ -191,7 +187,7 @@ Error CTaskManager::StartTaskShield(TaskShieldMode mode, float delay) Error CTaskManager::StartTaskFire(float delay) { m_bPilot = true; - m_task = new CTaskFire(m_iMan, m_object); + m_task = new CTaskFire(m_object); return (static_cast<CTaskFire*>(m_task))->Start(delay); } @@ -199,7 +195,7 @@ Error CTaskManager::StartTaskFire(float delay) Error CTaskManager::StartTaskFireAnt(Math::Vector impact) { - m_task = new CTaskFireAnt(m_iMan, m_object); + m_task = new CTaskFireAnt(m_object); return (static_cast<CTaskFireAnt*>(m_task))->Start(impact); } @@ -207,7 +203,7 @@ Error CTaskManager::StartTaskFireAnt(Math::Vector impact) Error CTaskManager::StartTaskGunGoal(float dirV, float dirH) { - m_task = new CTaskGunGoal(m_iMan, m_object); + m_task = new CTaskGunGoal(m_object); return (static_cast<CTaskGunGoal*>(m_task))->Start(dirV, dirH); } @@ -215,7 +211,7 @@ Error CTaskManager::StartTaskGunGoal(float dirV, float dirH) Error CTaskManager::StartTaskSpiderExplo() { - m_task = new CTaskSpiderExplo(m_iMan, m_object); + m_task = new CTaskSpiderExplo(m_object); return (static_cast<CTaskSpiderExplo*>(m_task))->Start(); } @@ -223,7 +219,7 @@ Error CTaskManager::StartTaskSpiderExplo() Error CTaskManager::StartTaskReset(Math::Vector goal, Math::Vector angle) { - m_task = new CTaskReset(m_iMan, m_object); + m_task = new CTaskReset(m_object); return (static_cast<CTaskReset*>(m_task))->Start(goal, angle); } diff --git a/src/object/task/taskmanager.h b/src/object/task/taskmanager.h index 6ce023a..80a78fd 100644 --- a/src/object/task/taskmanager.h +++ b/src/object/task/taskmanager.h @@ -19,8 +19,8 @@ #pragma once -#include "object/task/task.h" #include "object/object.h" +#include "object/task/task.h" #include "object/task/taskmanip.h" #include "object/task/taskgoto.h" #include "object/task/taskshield.h" @@ -31,7 +31,7 @@ class CTaskManager { public: - CTaskManager(CInstanceManager* iMan, CObject* object); + CTaskManager(CObject* object); ~CTaskManager(); Error StartTaskWait(float time); @@ -61,9 +61,6 @@ public: bool Abort(); protected: - -protected: - CInstanceManager* m_iMan; CTask* m_task; CObject* m_object; bool m_bPilot; diff --git a/src/object/task/taskmanip.cpp b/src/object/task/taskmanip.cpp index b0b146c..0608b6e 100644 --- a/src/object/task/taskmanip.cpp +++ b/src/object/task/taskmanip.cpp @@ -14,15 +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/. -// taskmanip.cpp #include "object/task/taskmanip.h" #include "common/iman.h" + #include "graphics/engine/terrain.h" #include "graphics/engine/pyro.h" + #include "math/geometry.h" + #include "object/robotmain.h" + #include "physics/physics.h" @@ -40,8 +43,7 @@ const float MARGIN_BEE = 5.0f; //OK 1.9 // Object's constructor. -CTaskManip::CTaskManip(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskManip::CTaskManip(CObject* object) : CTask(object) { m_arm = TMA_NEUTRAL; m_hand = TMH_OPEN; @@ -338,7 +340,7 @@ Error CTaskManip::Start(TaskManipOrder order, TaskManipArm arm) pos.y += 2.0f; m_object->SetPosition(0, pos); // against the top of jump - pyro = new Gfx::CPyro(m_iMan); + pyro = new Gfx::CPyro(); pyro->Create(Gfx::PT_FALL, other); // the ball falls } @@ -728,11 +730,13 @@ CObject* CTaskManip::SearchTakeUnderObject(Math::Vector &pos, float dLimit) iPos = m_object->GetPosition(0); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 1000000.0f; pBest = 0; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); @@ -798,12 +802,14 @@ CObject* CTaskManip::SearchTakeFrontObject(bool bAdvance, Math::Vector &pos, dLimit = MARGIN_FRONT; } + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 1000000.0f; pBest = 0; bAngle = 0.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); @@ -889,12 +895,14 @@ CObject* CTaskManip::SearchTakeBackObject(bool bAdvance, Math::Vector &pos, dLimit = MARGIN_BACK; } + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 1000000.0f; pBest = 0; bAngle = 0.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); @@ -989,9 +997,11 @@ CObject* CTaskManip::SearchOtherObject(bool bAdvance, Math::Vector &pos, dLimit = MARGIN_FRIEND; } + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; // yourself? @@ -1345,9 +1355,11 @@ bool CTaskManip::IsFreeDeposeObject(Math::Vector pos) mat = m_object->GetWorldMatrix(0); iPos = Transform(*mat, pos); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; diff --git a/src/object/task/taskmanip.h b/src/object/task/taskmanip.h index 79d9ad5..e80602c 100644 --- a/src/object/task/taskmanip.h +++ b/src/object/task/taskmanip.h @@ -54,7 +54,7 @@ enum TaskManipHand class CTaskManip : public CTask { public: - CTaskManip(CInstanceManager* iMan, CObject* object); + CTaskManip(CObject* object); ~CTaskManip(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskpen.cpp b/src/object/task/taskpen.cpp index 6e04233..03c2322 100644 --- a/src/object/task/taskpen.cpp +++ b/src/object/task/taskpen.cpp @@ -14,20 +14,20 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskpen.cpp #include "object/task/taskpen.h" #include "graphics/engine/particle.h" -#include "math/geometry.h" + #include "object/object.h" +#include "math/geometry.h" + // Object's constructor. -CTaskPen::CTaskPen(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskPen::CTaskPen(CObject* object) : CTask(object) { } diff --git a/src/object/task/taskpen.h b/src/object/task/taskpen.h index 0974322..adaba6c 100644 --- a/src/object/task/taskpen.h +++ b/src/object/task/taskpen.h @@ -36,7 +36,7 @@ enum TaskPenPhase class CTaskPen : public CTask { public: - CTaskPen(CInstanceManager* iMan, CObject* object); + CTaskPen(CObject* object); ~CTaskPen(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskrecover.cpp b/src/object/task/taskrecover.cpp index 4c8ead8..b86e9a5 100644 --- a/src/object/task/taskrecover.cpp +++ b/src/object/task/taskrecover.cpp @@ -14,17 +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/. -// taskrecover.cpp - #include <stdio.h> #include "object/task/taskrecover.h" -#include "math/geometry.h" #include "common/iman.h" + #include "graphics/engine/particle.h" + +#include "math/geometry.h" + #include "physics/physics.h" + #include "ui/displaytext.h" @@ -35,8 +37,7 @@ const float RECOVER_DIST = 11.8f; // Object's constructor. -CTaskRecover::CTaskRecover(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskRecover::CTaskRecover(CObject* object) : CTask(object) { m_ruin = 0; m_soundChannel = -1; @@ -297,7 +298,7 @@ Error CTaskRecover::IsEnded() if ( m_phase == TRP_DOWN ) { - m_metal = new CObject(m_iMan); + m_metal = new CObject(); if ( !m_metal->CreateResource(m_recoverPos, 0.0f, OBJECT_METAL) ) { delete m_metal; @@ -385,11 +386,13 @@ CObject* CTaskRecover::SearchRuin() float dist, min; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + pBest = 0; min = 100000.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); diff --git a/src/object/task/taskrecover.h b/src/object/task/taskrecover.h index 151ab6b..817ed5f 100644 --- a/src/object/task/taskrecover.h +++ b/src/object/task/taskrecover.h @@ -20,6 +20,7 @@ #include "object/task/task.h" + #include "math/vector.h" @@ -38,7 +39,7 @@ enum TaskRecoverPhase class CTaskRecover : public CTask { public: - CTaskRecover(CInstanceManager* iMan, CObject* object); + CTaskRecover(CObject* object); ~CTaskRecover(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskreset.cpp b/src/object/task/taskreset.cpp index 7e097bf..98d9730 100644 --- a/src/object/task/taskreset.cpp +++ b/src/object/task/taskreset.cpp @@ -14,11 +14,11 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskreset.cpp #include "object/task/taskreset.h" #include "common/iman.h" + #include "object/brain.h" #include "object/robotmain.h" @@ -32,8 +32,7 @@ const float RESET_DELAY_MOVE = 0.7f; // Object's constructor. -CTaskReset::CTaskReset(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskReset::CTaskReset(CObject* object) : CTask(object) { } @@ -273,9 +272,11 @@ bool CTaskReset::SearchVehicle() float oRadius, dist; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; diff --git a/src/object/task/taskreset.h b/src/object/task/taskreset.h index e3dacf7..5f1bb34 100644 --- a/src/object/task/taskreset.h +++ b/src/object/task/taskreset.h @@ -36,7 +36,7 @@ enum TaskResetPhase class CTaskReset : public CTask { public: - CTaskReset(CInstanceManager* iMan, CObject* object); + CTaskReset(CObject* object); ~CTaskReset(); bool EventProcess(const Event &event); diff --git a/src/object/task/tasksearch.cpp b/src/object/task/tasksearch.cpp index 578b41e..b219185 100644 --- a/src/object/task/tasksearch.cpp +++ b/src/object/task/tasksearch.cpp @@ -14,15 +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/. -// tasksearch.cpp #include "object/task/tasksearch.h" -#include "math/geometry.h" #include "common/iman.h" + #include "graphics/engine/particle.h" #include "graphics/engine/terrain.h" + +#include "math/geometry.h" + #include "physics/physics.h" + #include "ui/displaytext.h" @@ -30,8 +33,7 @@ // Object's constructor. -CTaskSearch::CTaskSearch(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskSearch::CTaskSearch(CObject* object) : CTask(object) { m_hand = TSH_UP; } @@ -280,7 +282,7 @@ bool CTaskSearch::CreateMark() //? DeleteMark(type); - fret = new CObject(m_iMan); + fret = new CObject(); if ( !fret->CreateResource(pos, 0.0f, type) ) { delete fret; @@ -301,9 +303,11 @@ void CTaskSearch::DeleteMark(ObjectType type) Math::Vector oPos; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( type == pObj->GetType() ) diff --git a/src/object/task/tasksearch.h b/src/object/task/tasksearch.h index bffec16..582d45a 100644 --- a/src/object/task/tasksearch.h +++ b/src/object/task/tasksearch.h @@ -42,7 +42,7 @@ enum TaskSearchPhase class CTaskSearch : public CTask { public: - CTaskSearch(CInstanceManager* iMan, CObject* object); + CTaskSearch(CObject* object); ~CTaskSearch(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskshield.cpp b/src/object/task/taskshield.cpp index 93afd62..4b2fccd 100644 --- a/src/object/task/taskshield.cpp +++ b/src/object/task/taskshield.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/. -// taskshield.cpp #include "object/task/taskshield.h" #include "common/iman.h" + #include "graphics/core/light.h" #include "graphics/engine/particle.h" #include "graphics/engine/lightman.h" + #include "math/geometry.h" + #include "object/brain.h" + #include "physics/physics.h" #include <string.h> @@ -34,8 +37,7 @@ const float ENERGY_TIME = 20.0f; // maximum duration if full battery // Object's constructor. -CTaskShield::CTaskShield(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskShield::CTaskShield(CObject* object) : CTask(object) { m_rankSphere = -1; m_soundChannel = -1; @@ -521,9 +523,11 @@ void CTaskShield::IncreaseShield() float dist, shield; int i; + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); diff --git a/src/object/task/taskshield.h b/src/object/task/taskshield.h index 4a6811c..36d3819 100644 --- a/src/object/task/taskshield.h +++ b/src/object/task/taskshield.h @@ -20,6 +20,7 @@ #include "object/task/task.h" + #include "math/vector.h" @@ -49,7 +50,7 @@ enum TaskShieldMode class CTaskShield : public CTask { public: - CTaskShield(CInstanceManager* iMan, CObject* object); + CTaskShield(CObject* object); ~CTaskShield(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskspiderexplo.cpp b/src/object/task/taskspiderexplo.cpp index 8110870..f629714 100644 --- a/src/object/task/taskspiderexplo.cpp +++ b/src/object/task/taskspiderexplo.cpp @@ -14,12 +14,13 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskspiderexplo.cpp #include "object/task/taskspiderexplo.h" #include "graphics/engine/pyro.h" + #include "object/motion/motionspider.h" + #include "physics/physics.h" @@ -27,8 +28,7 @@ // Object's constructor. -CTaskSpiderExplo::CTaskSpiderExplo(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskSpiderExplo::CTaskSpiderExplo(CObject* object) : CTask(object) { m_time = 0.0f; m_bError = false; @@ -91,7 +91,7 @@ Error CTaskSpiderExplo::IsEnded() if ( m_time < 1.0f ) return ERR_CONTINUE; - pyro = new Gfx::CPyro(m_iMan); + pyro = new Gfx::CPyro(); pyro->Create(Gfx::PT_SPIDER, m_object); // the spider explodes (suicide) Abort(); diff --git a/src/object/task/taskspiderexplo.h b/src/object/task/taskspiderexplo.h index 50f3ad2..0984020 100644 --- a/src/object/task/taskspiderexplo.h +++ b/src/object/task/taskspiderexplo.h @@ -26,7 +26,7 @@ class CTaskSpiderExplo : public CTask { public: - CTaskSpiderExplo(CInstanceManager* iMan, CObject* object); + CTaskSpiderExplo(CObject* object); ~CTaskSpiderExplo(); bool EventProcess(const Event &event); diff --git a/src/object/task/tasktake.cpp b/src/object/task/tasktake.cpp index 2737324..0037f85 100644 --- a/src/object/task/tasktake.cpp +++ b/src/object/task/tasktake.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/. -// tasktake.cpp #include "object/task/tasktake.h" #include "common/iman.h" + #include "graphics/engine/terrain.h" #include "graphics/engine/water.h" + #include "math/geometry.h" + #include "object/motion/motionhuman.h" #include "object/robotmain.h" + #include "physics/physics.h" @@ -31,10 +34,9 @@ // Object's constructor. -CTaskTake::CTaskTake(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskTake::CTaskTake(CObject* object) : CTask(object) { - m_terrain = static_cast<Gfx::CTerrain*>(m_iMan->SearchInstance(CLASS_TERRAIN)); + m_terrain = CRobotMain::GetInstancePointer()->GetTerrain(); m_arm = TTA_NEUTRAL; } @@ -305,12 +307,14 @@ CObject* CTaskTake::SearchTakeObject(float &angle, iAngle = m_object->GetAngleY(0); iAngle = Math::NormAngle(iAngle); // 0..2*Math::PI + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + min = 1000000.0f; pBest = 0; bAngle = 0.0f; for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); @@ -374,9 +378,11 @@ CObject* CTaskTake::SearchFriendObject(float &angle, iAngle = m_object->GetAngleY(0); iAngle = Math::NormAngle(iAngle); // 0..2*Math::PI + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; // yourself? @@ -569,9 +575,11 @@ bool CTaskTake::IsFreeDeposeObject(Math::Vector pos) mat = m_object->GetWorldMatrix(0); iPos = Transform(*mat, pos); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; if ( pObj == m_object ) continue; diff --git a/src/object/task/tasktake.h b/src/object/task/tasktake.h index c7950fe..7f3f831 100644 --- a/src/object/task/tasktake.h +++ b/src/object/task/tasktake.h @@ -42,7 +42,7 @@ enum TaskTakeArm class CTaskTake : public CTask { public: - CTaskTake(CInstanceManager* iMan, CObject* object); + CTaskTake(CObject* object); ~CTaskTake(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskterraform.cpp b/src/object/task/taskterraform.cpp index 6afece4..1f5ef7b 100644 --- a/src/object/task/taskterraform.cpp +++ b/src/object/task/taskterraform.cpp @@ -14,23 +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/. -// taskterraform.cpp - #include <stdio.h> #include "object/task/taskterraform.h" -#include "math/geometry.h" #include "common/iman.h" + #include "graphics/engine/pyro.h" #include "graphics/engine/particle.h" #include "graphics/engine/terrain.h" -#include "physics/physics.h" + +#include "math/geometry.h" + #include "object/brain.h" #include "object/motion/motionant.h" #include "object/motion/motionspider.h" +#include "physics/physics.h" + const float ENERGY_TERRA = 0.40f; // energy consumed by blow const float ACTION_RADIUS = 400.0f; @@ -39,8 +41,7 @@ const float ACTION_RADIUS = 400.0f; // Object's constructor. -CTaskTerraform::CTaskTerraform(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskTerraform::CTaskTerraform(CObject* object) : CTask(object) { m_lastParticle = 0.0f; m_soundChannel = -1; @@ -370,9 +371,11 @@ bool CTaskTerraform::Terraform() m_sound->Play(SOUND_THUMP, m_terraPos); + CInstanceManager* iMan = CInstanceManager::GetInstancePointer(); + for ( i=0 ; i<1000000 ; i++ ) { - pObj = static_cast<CObject*>(m_iMan->SearchInstance(CLASS_OBJECT, i)); + pObj = static_cast<CObject*>(iMan->SearchInstance(CLASS_OBJECT, i)); if ( pObj == 0 ) break; type = pObj->GetType(); @@ -383,7 +386,7 @@ bool CTaskTerraform::Terraform() dist = Math::Distance(m_terraPos, pObj->GetPosition(0)); if ( dist > 20.0f ) continue; - pyro = new Gfx::CPyro(m_iMan); + pyro = new Gfx::CPyro(); pyro->Create(Gfx::PT_FRAGT, pObj); } else diff --git a/src/object/task/taskterraform.h b/src/object/task/taskterraform.h index 91526b6..8ae0d64 100644 --- a/src/object/task/taskterraform.h +++ b/src/object/task/taskterraform.h @@ -20,6 +20,7 @@ #include "object/task/task.h" + #include "math/vector.h" @@ -37,7 +38,7 @@ enum TaskTerraPhase class CTaskTerraform : public CTask { public: - CTaskTerraform(CInstanceManager* iMan, CObject* object); + CTaskTerraform(CObject* object); ~CTaskTerraform(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskturn.cpp b/src/object/task/taskturn.cpp index 8f4bbd2..7a924cb 100644 --- a/src/object/task/taskturn.cpp +++ b/src/object/task/taskturn.cpp @@ -14,7 +14,6 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskturn.cpp #include "object/task/taskturn.h" @@ -26,8 +25,7 @@ // Object's constructor. -CTaskTurn::CTaskTurn(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskTurn::CTaskTurn(CObject* object) : CTask(object) { } diff --git a/src/object/task/taskturn.h b/src/object/task/taskturn.h index 1ee40d9..11de476 100644 --- a/src/object/task/taskturn.h +++ b/src/object/task/taskturn.h @@ -26,7 +26,7 @@ class CTaskTurn : public CTask { public: - CTaskTurn(CInstanceManager* iMan, CObject* object); + CTaskTurn(CObject* object); ~CTaskTurn(); bool EventProcess(const Event &event); diff --git a/src/object/task/taskwait.cpp b/src/object/task/taskwait.cpp index f612c24..3e201e0 100644 --- a/src/object/task/taskwait.cpp +++ b/src/object/task/taskwait.cpp @@ -14,7 +14,6 @@ // * You should have received a copy of the GNU General Public License // * along with this program. If not, see http://www.gnu.org/licenses/. -// taskwait.cpp #include "object/task/taskwait.h" @@ -22,8 +21,7 @@ // Object's constructor. -CTaskWait::CTaskWait(CInstanceManager* iMan, CObject* object) - : CTask(iMan, object) +CTaskWait::CTaskWait(CObject* object) : CTask(object) { } diff --git a/src/object/task/taskwait.h b/src/object/task/taskwait.h index 3434c36..3225c9a 100644 --- a/src/object/task/taskwait.h +++ b/src/object/task/taskwait.h @@ -26,7 +26,7 @@ class CTaskWait : public CTask { public: - CTaskWait(CInstanceManager* iMan, CObject* object); + CTaskWait(CObject* object); ~CTaskWait(); bool EventProcess(const Event &event); |