From e72936c240ab701cdc0ef60afc5e678dd90a5294 Mon Sep 17 00:00:00 2001 From: Piotr Dziwinski Date: Sun, 12 Jul 2015 15:09:32 +0200 Subject: [PATCH] Clean up more functions from COldObjectInterface --- src/object/auto/autobase.cpp | 15 +- src/object/auto/autobase.h | 3 + src/object/auto/autoegg.cpp | 1 + src/object/auto/autofactory.cpp | 4 +- src/object/auto/autorepair.cpp | 1 + src/object/interface/programmable_object.h | 1 + src/object/object_factory.cpp | 2 + src/object/old_object.cpp | 95 ++------ src/object/old_object.h | 85 +++---- src/object/old_object_interface.cpp | 267 --------------------- src/object/old_object_interface.h | 74 +----- src/object/robotmain.cpp | 67 +++--- src/object/task/taskbuild.cpp | 1 - src/physics/physics.cpp | 2 +- src/script/scriptfunc.cpp | 2 + 15 files changed, 121 insertions(+), 499 deletions(-) diff --git a/src/object/auto/autobase.cpp b/src/object/auto/autobase.cpp index 0d4f7c62..33b36e13 100644 --- a/src/object/auto/autobase.cpp +++ b/src/object/auto/autobase.cpp @@ -18,8 +18,6 @@ */ -#include - #include "object/auto/autobase.h" #include "object/interface/transportable_object.h" @@ -1241,10 +1239,9 @@ void CAutoBase::UpdateInterface() void CAutoBase::FreezeCargo(bool freeze) { + m_cargoObjects.clear(); for (CObject* obj : CObjectManager::GetInstancePointer()->GetAllObjects()) { - obj->SetSpaceshipCargo(false); - if ( obj == m_object ) continue; // yourself? if (IsObjectBeingTransported(obj)) continue; @@ -1252,11 +1249,7 @@ void CAutoBase::FreezeCargo(bool freeze) float dist = Math::DistanceProjected(m_pos, oPos); if ( dist < 32.0f ) { - if ( freeze ) - { - obj->SetSpaceshipCargo(true); - } - + m_cargoObjects.insert(obj); CPhysics* physics = obj->GetPhysics(); if ( physics != nullptr ) { @@ -1272,10 +1265,8 @@ void CAutoBase::MoveCargo() { Math::Vector sPos = m_object->GetPosition(); - for (CObject* obj : CObjectManager::GetInstancePointer()->GetAllObjects()) + for (CObject* obj : m_cargoObjects) { - if ( !obj->IsSpaceshipCargo() ) continue; - Math::Vector oPos = obj->GetPosition(); oPos.y = sPos.y+30.0f; oPos.y += obj->GetCharacter()->height; diff --git a/src/object/auto/autobase.h b/src/object/auto/autobase.h index b2c2da62..97ee53e7 100644 --- a/src/object/auto/autobase.h +++ b/src/object/auto/autobase.h @@ -26,7 +26,9 @@ #include "graphics/core/color.h" +#include +class CObject; enum AutoBaseParam { @@ -115,5 +117,6 @@ protected: Gfx::Color m_bgDown; Gfx::Color m_bgCloudUp; Gfx::Color m_bgCloudDown; + std::set m_cargoObjects; }; diff --git a/src/object/auto/autoegg.cpp b/src/object/auto/autoegg.cpp index c4cb7f49..c9d8316c 100644 --- a/src/object/auto/autoegg.cpp +++ b/src/object/auto/autoegg.cpp @@ -113,6 +113,7 @@ void CAutoEgg::Init() alien->SetZoom(0, 0.01f); // invisible ! } alien->SetLock(true); + alien->SetActivity(false); } diff --git a/src/object/auto/autofactory.cpp b/src/object/auto/autofactory.cpp index dcd805b7..cf1ab253 100644 --- a/src/object/auto/autofactory.cpp +++ b/src/object/auto/autofactory.cpp @@ -638,7 +638,7 @@ bool CAutoFactory::CreateVehicle() pos = Transform(*mat, pos); CObject* vehicle = CObjectManager::GetInstancePointer()->CreateObject(pos, angle, m_type); - vehicle->UpdateMapping(); + vehicle->SetLock(true); // not usable vehicle->SetRange(30.0f); vehicle->SetTeam(m_object->GetTeam()); @@ -657,7 +657,7 @@ bool CAutoFactory::CreateVehicle() char* name = m_main->GetNewScriptName(m_type, i); if ( name == nullptr ) break; Program* prog = brain->GetOrAddProgram(i); - vehicle->ReadProgram(prog, name); + brain->ReadProgram(prog, name); prog->readOnly = true; } } diff --git a/src/object/auto/autorepair.cpp b/src/object/auto/autorepair.cpp index 0cdd723c..d101b92c 100644 --- a/src/object/auto/autorepair.cpp +++ b/src/object/auto/autorepair.cpp @@ -139,6 +139,7 @@ bool CAutoRepair::EventProcess(const Event &event) if ( m_phase == ARP_REPAIR ) { vehicle = SearchVehicle(); + if ( m_progress < 1.0f || (vehicle != 0 && vehicle->GetShield() < 1.0f) ) { diff --git a/src/object/interface/programmable_object.h b/src/object/interface/programmable_object.h index cb399753..85ec155a 100644 --- a/src/object/interface/programmable_object.h +++ b/src/object/interface/programmable_object.h @@ -44,5 +44,6 @@ public: * returned object will always be non-null*/ virtual CBrain* GetBrain() = 0; + // TODO: CBrain interface can actually be moved here }; diff --git a/src/object/object_factory.cpp b/src/object/object_factory.cpp index 9cb7867f..6e530f51 100644 --- a/src/object/object_factory.cpp +++ b/src/object/object_factory.cpp @@ -1074,6 +1074,8 @@ CObjectUPtr CObjectFactory::CreateBuilding(const ObjectCreateParams& params) AddObjectAuto(obj.get()); m_engine->LoadAllTextures(); + obj->UpdateMapping(); + return std::move(obj); } diff --git a/src/object/old_object.cpp b/src/object/old_object.cpp index 32e50523..f9345c6b 100644 --- a/src/object/old_object.cpp +++ b/src/object/old_object.cpp @@ -80,14 +80,16 @@ static float debug_arm3 = 0.0f; void uObject(CBotVar* botThis, void* user) { - CObject* object = static_cast(user); CPhysics* physics; CBotVar *pVar, *pSub; ObjectType type; Math::Vector pos; float value; - if ( object == 0 ) return; + if ( user == nullptr ) return; + + assert(static_cast(user)->Implements(ObjectInterfaceType::Old)); + COldObject* object = static_cast(user); physics = object->GetPhysics(); @@ -162,8 +164,14 @@ void uObject(CBotVar* botThis, void* user) if (object->Implements(ObjectInterfaceType::Powered)) { CObject* power = dynamic_cast(object)->GetPower(); - if (power == nullptr) pVar->SetPointer(0); - else pVar->SetPointer(power->GetBotVar()); + if (power == nullptr) + { + pVar->SetPointer(nullptr); + } + else if (power->Implements(ObjectInterfaceType::Old)) + { + pVar->SetPointer(dynamic_cast(power)->GetBotVar()); + } } // Updates the transported object's type. @@ -171,8 +179,14 @@ void uObject(CBotVar* botThis, void* user) if (object->Implements(ObjectInterfaceType::Carrier)) { CObject* cargo = dynamic_cast(object)->GetCargo(); - if (cargo == nullptr) pVar->SetPointer(0); - else pVar->SetPointer(cargo->GetBotVar()); + if (cargo == nullptr) + { + pVar->SetPointer(nullptr); + } + else if (cargo->Implements(ObjectInterfaceType::Old)) + { + pVar->SetPointer(dynamic_cast(cargo)->GetBotVar()); + } } pVar = pVar->GetNext(); // "id" @@ -902,6 +916,7 @@ void COldObject::Write(CLevelParserLine* line) if ( !GetEnable() ) line->AddParam("enable", CLevelParserParamUPtr{new CLevelParserParam(GetEnable())}); + // TODO: doesn't seem to be used if ( GetFixed() ) line->AddParam("fixed", CLevelParserParamUPtr{new CLevelParserParam(GetFixed())}); @@ -1509,11 +1524,6 @@ void COldObject::SetMasterParticle(int part, int parti) m_objectPart[part].masterParti = parti; } -int COldObject::GetMasterParticle(int part) -{ - return m_objectPart[part].masterParti; -} - // Management of the stack transport. @@ -1614,21 +1624,6 @@ Math::Matrix* COldObject::GetWorldMatrix(int part) } -// Indicates whether the object should be drawn below the interface. - -void COldObject::SetDrawWorld(bool bDraw) -{ - int i; - - for ( i=0 ; iSetObjectDrawWorld(m_objectPart[i].object, bDraw); - } - } -} - // Indicates whether the object should be drawn over the interface. void COldObject::SetDrawFront(bool bDraw) @@ -1740,30 +1735,6 @@ bool COldObject::CreateShadowCircle(float radius, float intensity, return true; } -// Reads a program. - -bool COldObject::ReadProgram(Program* program, const char* filename) -{ - if ( m_brain != nullptr ) - { - return m_brain->ReadProgram(program, filename); - } - return false; -} - -// Writes a program. - -bool COldObject::WriteProgram(Program* program, const char* filename) -{ - if ( m_brain != nullptr ) - { - return m_brain->WriteProgram(program, filename); - } - return false; -} - - - // Calculates the matrix for transforming the object. // Returns true if the matrix has changed. // The rotations occur in the order Y, Z and X. @@ -2372,11 +2343,6 @@ void COldObject::SetViewFromHere(Math::Vector &eye, float &dirH, float &dirV, // Management of features. -void COldObject::GetCharacter(Character* character) -{ - memcpy(character, &m_character, sizeof(Character)); -} - Character* COldObject::GetCharacter() { return &m_character; @@ -2631,11 +2597,6 @@ bool COldObject::GetVirusMode() return m_bVirusMode; } -float COldObject::GetVirusTime() -{ - return m_virusTime; -} - // Management mode of the camera. @@ -2906,20 +2867,6 @@ bool COldObject::IsExploding() return m_bExplo; } - -// Mode management "cargo ship" during movies. - -void COldObject::SetSpaceshipCargo(bool bCargo) -{ - m_bCargo = bCargo; -} - -bool COldObject::IsSpaceshipCargo() -{ - return m_bCargo; -} - - // Management of the HS mode of an object. void COldObject::SetBurn(bool bBurn) diff --git a/src/object/old_object.h b/src/object/old_object.h index 98650deb..ae518797 100644 --- a/src/object/old_object.h +++ b/src/object/old_object.h @@ -90,39 +90,35 @@ public: bool ExplodeObject(ExplosionType type, float force, float decay=1.0f) override; bool EventProcess(const Event& event) override; - void UpdateMapping() override; + void UpdateMapping(); void DeletePart(int part) override; - void SetObjectRank(int part, int objRank) override; + void SetObjectRank(int part, int objRank); int GetObjectRank(int part) override; - void SetObjectParent(int part, int parent) override; + void SetObjectParent(int part, int parent); void SetType(ObjectType type) override; - const char* GetName() override; + const char* GetName(); int GetOption() override; void Write(CLevelParserLine* line) override; void Read(CLevelParserLine* line) override; - void SetDrawWorld(bool bDraw) override; void SetDrawFront(bool bDraw) override; - bool ReadProgram(Program* program, const char* filename) override; - bool WriteProgram(Program* program, const char* filename) override; + int GetShadowLight(); + int GetEffectLight(); - int GetShadowLight() override; - int GetEffectLight() override; - - void SetShieldRadius(float radius) override; + void SetShieldRadius(float radius); float GetShieldRadius() override; - void SetFloorHeight(float height) override; + void SetFloorHeight(float height); void FloorAdjust() override; void SetLinVibration(Math::Vector dir) override; - Math::Vector GetLinVibration() override; + Math::Vector GetLinVibration(); void SetCirVibration(Math::Vector dir) override; - Math::Vector GetCirVibration() override; - void SetTilt(Math::Vector dir) override; + Math::Vector GetCirVibration(); + void SetTilt(Math::Vector dir); Math::Vector GetTilt() override; void SetPosition(int part, const Math::Vector &pos) override; @@ -148,25 +144,24 @@ public: void SetTrainer(bool bEnable) override; bool GetTrainer() override; - void SetToy(bool bEnable) override; - bool GetToy() override; + void SetToy(bool bEnable); + bool GetToy(); - void SetManual(bool bManual) override; - bool GetManual() override; + void SetManual(bool bManual); + bool GetManual(); void SetResetCap(ResetCap cap) override; ResetCap GetResetCap() override; - void SetResetBusy(bool bBusy) override; - bool GetResetBusy() override; - void SetResetPosition(const Math::Vector &pos) override; + void SetResetBusy(bool bBusy); + bool GetResetBusy(); + void SetResetPosition(const Math::Vector &pos); Math::Vector GetResetPosition() override; - void SetResetAngle(const Math::Vector &angle) override; + void SetResetAngle(const Math::Vector &angle); Math::Vector GetResetAngle() override; - void SetResetRun(Program* run) override; + void SetResetRun(Program* run); Program* GetResetRun() override; void SetMasterParticle(int part, int parti) override; - int GetMasterParticle(int part) override; void SetPower(CObject* power) override; CObject* GetPower() override; @@ -176,20 +171,19 @@ public: CObject* GetTransporter() override; void SetTransporterPart(int part) override; - void SetCmdLine(unsigned int rank, float value) override; + void SetCmdLine(unsigned int rank, float value); float GetCmdLine(unsigned int rank) override; - Math::Matrix* GetRotateMatrix(int part) override; + Math::Matrix* GetRotateMatrix(int part); Math::Matrix* GetWorldMatrix(int part) override; void SetViewFromHere(Math::Vector &eye, float &dirH, float &dirV, Math::Vector &lookat, Math::Vector &upVec, Gfx::CameraType type) override; - void GetCharacter(Character* character) override; Character* GetCharacter() override; - float GetAbsTime() override; + float GetAbsTime(); void SetEnergy(float level) override; float GetEnergy() override; @@ -220,7 +214,6 @@ public: void SetVirusMode(bool bEnable) override; bool GetVirusMode() override; - float GetVirusTime() override; void SetCameraType(Gfx::CameraType type) override; Gfx::CameraType GetCameraType() override; @@ -234,23 +227,23 @@ public: void SetSelect(bool bMode, bool bDisplayError=true) override; bool GetSelect(bool bReal=false) override; - void SetSelectable(bool bMode) override; + void SetSelectable(bool bMode); bool GetSelectable() override; void SetActivity(bool bMode) override; bool GetActivity() override; - void SetVisible(bool bVisible) override; + void SetVisible(bool bVisible); void SetEnable(bool bEnable) override; bool GetEnable() override; - void SetCheckToken(bool bMode) override; - bool GetCheckToken() override; + void SetCheckToken(bool bMode); + bool GetCheckToken(); void SetProxyActivate(bool bActivate) override; bool GetProxyActivate() override; - void SetProxyDistance(float distance) override; + void SetProxyDistance(float distance); void SetMagnifyDamage(float factor) override; float GetMagnifyDamage() override; @@ -264,8 +257,6 @@ public: bool IsExploding() override; void SetLock(bool bLock) override; bool GetLock() override; - void SetSpaceshipCargo(bool bCargo) override; - bool IsSpaceshipCargo() override; void SetBurn(bool bBurn) override; bool GetBurn() override; void SetDead(bool bDead) override; @@ -273,18 +264,18 @@ public: bool GetRuin() override; bool GetActive() override; - void SetGunGoalV(float gunGoal) override; - void SetGunGoalH(float gunGoal) override; - float GetGunGoalV() override; - float GetGunGoalH() override; + void SetGunGoalV(float gunGoal); + void SetGunGoalH(float gunGoal); + float GetGunGoalV(); + float GetGunGoalH(); bool StartShowLimit() override; void StopShowLimit() override; bool IsProgram() override; - void CreateSelectParticle() override; + void CreateSelectParticle(); - void SetRunScript(CScript* script) override; + void SetRunScript(CScript* script); CScript* GetRunScript() override; CBotVar* GetBotVar() override; CPhysics* GetPhysics() override; @@ -301,13 +292,13 @@ public: CObject* SubDeselList() override; void DeleteDeselList(CObject* pObj) override; - bool CreateShadowCircle(float radius, float intensity, Gfx::EngineShadowType type = Gfx::ENG_SHADOW_NORM) override; - bool CreateShadowLight(float height, Gfx::Color color) override; - bool CreateEffectLight(float height, Gfx::Color color) override; + bool CreateShadowCircle(float radius, float intensity, Gfx::EngineShadowType type = Gfx::ENG_SHADOW_NORM); + bool CreateShadowLight(float height, Gfx::Color color); + bool CreateEffectLight(float height, Gfx::Color color); void FlatParent() override; - void SetInfoReturn(float value) override; + void SetInfoReturn(float value); float GetInfoReturn() override; Math::Vector GetPosition() const override; diff --git a/src/object/old_object_interface.cpp b/src/object/old_object_interface.cpp index 76b18134..1001e81c 100644 --- a/src/object/old_object_interface.cpp +++ b/src/object/old_object_interface.cpp @@ -30,97 +30,37 @@ bool COldObjectInterface::ExplodeObject(ExplosionType type, float force, float d throw std::logic_error("ExplodeObject: not implemented!"); } - -void COldObjectInterface::UpdateMapping() -{ - throw std::logic_error("UpdateMapping: not implemented!"); -} - - void COldObjectInterface::DeletePart(int part) { throw std::logic_error("DeletePart: not implemented!"); } -void COldObjectInterface::SetObjectRank(int part, int objRank) -{ - throw std::logic_error("SetObjectRank: not implemented!"); -} - int COldObjectInterface::GetObjectRank(int part) { throw std::logic_error("GetObjectRank: not implemented!"); } -void COldObjectInterface::SetObjectParent(int part, int parent) -{ - throw std::logic_error("SetObjectParent: not implemented!"); -} - void COldObjectInterface::SetType(ObjectType type) { throw std::logic_error("SetType: not implemented!"); } -const char* COldObjectInterface::GetName() -{ - throw std::logic_error("GetName: not implemented!"); -} - int COldObjectInterface::GetOption() { throw std::logic_error("GetOption: not implemented!"); } - -void COldObjectInterface::SetDrawWorld(bool bDraw) -{ - throw std::logic_error("SetDrawWorld: not implemented!"); -} - void COldObjectInterface::SetDrawFront(bool bDraw) { throw std::logic_error("SetDrawFront: not implemented!"); } - -bool COldObjectInterface::ReadProgram(Program* program, const char* filename) -{ - throw std::logic_error("ReadProgram: not implemented!"); -} - -bool COldObjectInterface::WriteProgram(Program* program, const char* filename) -{ - throw std::logic_error("WriteProgram: not implemented!"); -} - - -int COldObjectInterface::GetShadowLight() -{ - throw std::logic_error("GetShadowLight: not implemented!"); -} - -int COldObjectInterface::GetEffectLight() -{ - throw std::logic_error("GetEffectLight: not implemented!"); -} - -void COldObjectInterface::SetShieldRadius(float radius) -{ - throw std::logic_error("SetShieldRadius: not implemented!"); -} - float COldObjectInterface::GetShieldRadius() { throw std::logic_error("GetShieldRadius: not implemented!"); } -void COldObjectInterface::SetFloorHeight(float height) -{ - throw std::logic_error("SetFloorHeight: not implemented!"); -} - void COldObjectInterface::FloorAdjust() { throw std::logic_error("FloorAdjust: not implemented!"); @@ -132,32 +72,15 @@ void COldObjectInterface::SetLinVibration(Math::Vector dir) throw std::logic_error("SetLinVibration: not implemented!"); } -Math::Vector COldObjectInterface::GetLinVibration() -{ - throw std::logic_error("GetLinVibration: not implemented!"); -} - void COldObjectInterface::SetCirVibration(Math::Vector dir) { throw std::logic_error("SetCirVibration: not implemented!"); } -Math::Vector COldObjectInterface::GetCirVibration() -{ - throw std::logic_error("GetCirVibration: not implemented!"); -} - -void COldObjectInterface::SetTilt(Math::Vector dir) -{ - throw std::logic_error("SetTilt: not implemented!"); -} - Math::Vector COldObjectInterface::GetTilt() { throw std::logic_error("GetTilt: not implemented!"); } - - void COldObjectInterface::SetPosition(int part, const Math::Vector &pos) { throw std::logic_error("SetPosition: not implemented!"); @@ -264,29 +187,6 @@ bool COldObjectInterface::GetTrainer() throw std::logic_error("GetTrainer: not implemented!"); } - -void COldObjectInterface::SetToy(bool bEnable) -{ - throw std::logic_error("SetToy: not implemented!"); -} - -bool COldObjectInterface::GetToy() -{ - throw std::logic_error("GetToy: not implemented!"); -} - - -void COldObjectInterface::SetManual(bool bManual) -{ - throw std::logic_error("SetManual: not implemented!"); -} - -bool COldObjectInterface::GetManual() -{ - throw std::logic_error("GetManual: not implemented!"); -} - - void COldObjectInterface::SetResetCap(ResetCap cap) { throw std::logic_error("SetResetCap: not implemented!"); @@ -297,73 +197,31 @@ ResetCap COldObjectInterface::GetResetCap() throw std::logic_error("GetResetCap: not implemented!"); } -void COldObjectInterface::SetResetBusy(bool bBusy) -{ - throw std::logic_error("SetResetBusy: not implemented!"); -} - -bool COldObjectInterface::GetResetBusy() -{ - throw std::logic_error("GetResetBusy: not implemented!"); -} - -void COldObjectInterface::SetResetPosition(const Math::Vector &pos) -{ - throw std::logic_error("SetResetPosition: not implemented!"); -} - Math::Vector COldObjectInterface::GetResetPosition() { throw std::logic_error("GetResetPosition: not implemented!"); } -void COldObjectInterface::SetResetAngle(const Math::Vector &angle) -{ - throw std::logic_error("SetResetAngle: not implemented!"); -} - Math::Vector COldObjectInterface::GetResetAngle() { throw std::logic_error("GetResetAngle: not implemented!"); } -void COldObjectInterface::SetResetRun(Program* run) -{ - throw std::logic_error("SetResetRun: not implemented!"); -} - Program* COldObjectInterface::GetResetRun() { throw std::logic_error("GetResetRun: not implemented!"); } - void COldObjectInterface::SetMasterParticle(int part, int parti) { throw std::logic_error("SetMasterParticle: not implemented!"); } -int COldObjectInterface::GetMasterParticle(int part) -{ - throw std::logic_error("GetMasterParticle: not implemented!"); -} - -void COldObjectInterface::SetCmdLine(unsigned int rank, float value) -{ - throw std::logic_error("SetCmdLine: not implemented!"); -} - float COldObjectInterface::GetCmdLine(unsigned int rank) { throw std::logic_error("GetCmdLine: not implemented!"); } - -Math::Matrix* COldObjectInterface::GetRotateMatrix(int part) -{ - throw std::logic_error("GetRotateMatrix: not implemented!"); -} - Math::Matrix* COldObjectInterface::GetWorldMatrix(int part) { throw std::logic_error("GetWorldMatrix: not implemented!"); @@ -376,23 +234,11 @@ void COldObjectInterface::SetViewFromHere(Math::Vector &eye, float &dirH, float throw std::logic_error("SetViewFromHere: not implemented!"); } -void COldObjectInterface::GetCharacter(Character* character) -{ - throw std::logic_error("GetCharacter: not implemented!"); -} - Character* COldObjectInterface::GetCharacter() { throw std::logic_error("GetCharacter: not implemented!"); } - -float COldObjectInterface::GetAbsTime() -{ - throw std::logic_error("GetAbsTime: not implemented!"); -} - - void COldObjectInterface::SetEnergy(float level) { throw std::logic_error("SetEnergy: not implemented!"); @@ -409,7 +255,6 @@ float COldObjectInterface::GetCapacity() throw std::logic_error("GetCapacity: not implemented!"); } - void COldObjectInterface::SetShield(float level) { throw std::logic_error("SetShield: not implemented!"); @@ -451,8 +296,6 @@ bool COldObjectInterface::GetClip() { throw std::logic_error("GetClip: not implemented!"); } - - void COldObjectInterface::SetTeam(int team) { throw std::logic_error("SetTeam: not implemented!"); @@ -463,13 +306,11 @@ int COldObjectInterface::GetTeam() throw std::logic_error("GetTeam: not implemented!"); } - void COldObjectInterface::StartDetectEffect(CObject *target, bool bFound) { throw std::logic_error("StartDetectEffect: not implemented!"); } - void COldObjectInterface::SetVirusMode(bool bEnable) { throw std::logic_error("SetVirusMode: not implemented!"); @@ -480,12 +321,6 @@ bool COldObjectInterface::GetVirusMode() throw std::logic_error("GetVirusMode: not implemented!"); } -float COldObjectInterface::GetVirusTime() -{ - throw std::logic_error("GetVirusTime: not implemented!"); -} - - void COldObjectInterface::SetCameraType(Gfx::CameraType type) { throw std::logic_error("SetCameraType: not implemented!"); @@ -538,18 +373,11 @@ bool COldObjectInterface::GetSelect(bool bReal) //throw std::logic_error("GetSelect: not implemented!"); } - -void COldObjectInterface::SetSelectable(bool bMode) -{ - throw std::logic_error("SetSelectable: not implemented!"); -} - bool COldObjectInterface::GetSelectable() { throw std::logic_error("GetSelectable: not implemented!"); } - void COldObjectInterface::SetActivity(bool bMode) { throw std::logic_error("SetActivity: not implemented!"); @@ -561,12 +389,6 @@ bool COldObjectInterface::GetActivity() } -void COldObjectInterface::SetVisible(bool bVisible) -{ - throw std::logic_error("SetVisible: not implemented!"); -} - - void COldObjectInterface::SetEnable(bool bEnable) { throw std::logic_error("SetEnable: not implemented!"); @@ -580,17 +402,6 @@ bool COldObjectInterface::GetEnable() } -void COldObjectInterface::SetCheckToken(bool bMode) -{ - throw std::logic_error("SetCheckToken: not implemented!"); -} - -bool COldObjectInterface::GetCheckToken() -{ - throw std::logic_error("GetCheckToken: not implemented!"); -} - - void COldObjectInterface::SetProxyActivate(bool bActivate) { throw std::logic_error("SetProxyActivate: not implemented!"); @@ -601,11 +412,6 @@ bool COldObjectInterface::GetProxyActivate() throw std::logic_error("GetProxyActivate: not implemented!"); } -void COldObjectInterface::SetProxyDistance(float distance) -{ - throw std::logic_error("SetProxyDistance: not implemented!"); -} - void COldObjectInterface::SetMagnifyDamage(float factor) { @@ -627,7 +433,6 @@ float COldObjectInterface::GetParam() { throw std::logic_error("GetParam: not implemented!"); } - void COldObjectInterface::SetIgnoreBuildCheck(bool bIgnoreBuildCheck) { throw std::logic_error("SetIgnoreBuildCheck: not implemented!"); @@ -663,20 +468,6 @@ bool COldObjectInterface::GetLock() //throw std::logic_error("GetLock: not implemented!"); } -void COldObjectInterface::SetSpaceshipCargo(bool bCargo) -{ - // TODO: temporary hack - return; - //throw std::logic_error("SetSpaceshipCargo: not implemented!"); -} - -bool COldObjectInterface::IsSpaceshipCargo() -{ - // TODO: temporary hack - return false; - //throw std::logic_error("IsSpaceshipCargo: not implemented!"); -} - void COldObjectInterface::SetBurn(bool bBurn) { throw std::logic_error("SetBurn: not implemented!"); @@ -715,28 +506,6 @@ bool COldObjectInterface::GetActive() //throw std::logic_error("GetActive: not implemented!"); } - -void COldObjectInterface::SetGunGoalV(float gunGoal) -{ - throw std::logic_error("SetGunGoalV: not implemented!"); -} - -void COldObjectInterface::SetGunGoalH(float gunGoal) -{ - throw std::logic_error("SetGunGoalH: not implemented!"); -} - -float COldObjectInterface::GetGunGoalV() -{ - throw std::logic_error("GetGunGoalV: not implemented!"); -} - -float COldObjectInterface::GetGunGoalH() -{ - throw std::logic_error("GetGunGoalH: not implemented!"); -} - - bool COldObjectInterface::StartShowLimit() { throw std::logic_error("StartShowLimit: not implemented!"); @@ -753,17 +522,6 @@ bool COldObjectInterface::IsProgram() throw std::logic_error("IsProgram: not implemented!"); } -void COldObjectInterface::CreateSelectParticle() -{ - throw std::logic_error("CreateSelectParticle: not implemented!"); -} - - -void COldObjectInterface::SetRunScript(CScript* script) -{ - throw std::logic_error("SetRunScript: not implemented!"); -} - CScript* COldObjectInterface::GetRunScript() { throw std::logic_error("GetRunScript: not implemented!"); @@ -773,7 +531,6 @@ CBotVar* COldObjectInterface::GetBotVar() { throw std::logic_error("GetBotVar: not implemented!"); } - CPhysics* COldObjectInterface::GetPhysics() { throw std::logic_error("GetPhysics: not implemented!"); @@ -824,36 +581,12 @@ void COldObjectInterface::DeleteDeselList(CObject* pObj) //throw std::logic_error("DeleteDeselList: not implemented!"); } - -bool COldObjectInterface::CreateShadowCircle(float radius, float intensity, Gfx::EngineShadowType type) -{ - throw std::logic_error("CreateShadowCircle: not implemented!"); -} - -bool COldObjectInterface::CreateShadowLight(float height, Gfx::Color color) -{ - throw std::logic_error("CreateShadowLight: not implemented!"); -} - -bool COldObjectInterface::CreateEffectLight(float height, Gfx::Color color) -{ - throw std::logic_error("CreateEffectLight: not implemented!"); -} - - void COldObjectInterface::FlatParent() { throw std::logic_error("FlatParent: not implemented!"); } - -void COldObjectInterface::SetInfoReturn(float value) -{ - throw std::logic_error("SetInfoReturn: not implemented!"); -} - float COldObjectInterface::GetInfoReturn() { throw std::logic_error("GetInfoReturn: not implemented!"); } - diff --git a/src/object/old_object_interface.h b/src/object/old_object_interface.h index 24d94615..0d59b7de 100644 --- a/src/object/old_object_interface.h +++ b/src/object/old_object_interface.h @@ -78,37 +78,22 @@ public: virtual void Simplify(); virtual bool ExplodeObject(ExplosionType type, float force, float decay=1.0f); - - virtual void UpdateMapping(); - virtual void DeletePart(int part); - virtual void SetObjectRank(int part, int objRank); - virtual int GetObjectRank(int part); - virtual void SetObjectParent(int part, int parent); virtual void SetType(ObjectType type); - virtual const char* GetName(); + + virtual int GetObjectRank(int part); + virtual int GetOption(); - virtual void SetDrawWorld(bool bDraw); virtual void SetDrawFront(bool bDraw); - virtual bool ReadProgram(Program* program, const char* filename); - virtual bool WriteProgram(Program* program, const char* filename); - - virtual int GetShadowLight(); - virtual int GetEffectLight(); - - virtual void SetShieldRadius(float radius); virtual float GetShieldRadius(); - virtual void SetFloorHeight(float height); virtual void FloorAdjust(); virtual void SetLinVibration(Math::Vector dir); - virtual Math::Vector GetLinVibration(); virtual void SetCirVibration(Math::Vector dir); - virtual Math::Vector GetCirVibration(); - virtual void SetTilt(Math::Vector dir); + virtual Math::Vector GetTilt(); virtual void SetPosition(int part, const Math::Vector &pos); @@ -134,44 +119,26 @@ public: virtual void SetTrainer(bool bEnable); virtual bool GetTrainer(); - virtual void SetToy(bool bEnable); - virtual bool GetToy(); - - virtual void SetManual(bool bManual); - virtual bool GetManual(); - - virtual void SetResetCap(ResetCap cap); virtual ResetCap GetResetCap(); - virtual void SetResetBusy(bool bBusy); - virtual bool GetResetBusy(); - virtual void SetResetPosition(const Math::Vector &pos); + virtual void SetResetCap(ResetCap resetCap); virtual Math::Vector GetResetPosition(); - virtual void SetResetAngle(const Math::Vector &angle); virtual Math::Vector GetResetAngle(); - virtual void SetResetRun(Program* run); virtual Program* GetResetRun(); virtual void SetMasterParticle(int part, int parti); - virtual int GetMasterParticle(int part); - virtual void SetCmdLine(unsigned int rank, float value); virtual float GetCmdLine(unsigned int rank); - virtual Math::Matrix* GetRotateMatrix(int part); virtual Math::Matrix* GetWorldMatrix(int part); virtual void SetViewFromHere(Math::Vector &eye, float &dirH, float &dirV, Math::Vector &lookat, Math::Vector &upVec, Gfx::CameraType type); - virtual void GetCharacter(Character* character); virtual Character* GetCharacter(); - virtual float GetAbsTime(); - virtual void SetEnergy(float level); virtual float GetEnergy(); - virtual float GetCapacity(); virtual void SetShield(float level); @@ -185,7 +152,6 @@ public: virtual void SetClip(bool bClip); virtual bool GetClip(); - virtual void SetTeam(int team); virtual int GetTeam(); @@ -193,7 +159,6 @@ public: virtual void SetVirusMode(bool bEnable); virtual bool GetVirusMode(); - virtual float GetVirusTime(); virtual void SetCameraType(Gfx::CameraType type); virtual Gfx::CameraType GetCameraType(); @@ -206,24 +171,16 @@ public: virtual void SetSelect(bool bMode, bool bDisplayError=true); virtual bool GetSelect(bool bReal=false); - - virtual void SetSelectable(bool bMode); virtual bool GetSelectable(); virtual void SetActivity(bool bMode); virtual bool GetActivity(); - virtual void SetVisible(bool bVisible); - virtual void SetEnable(bool bEnable); virtual bool GetEnable(); - virtual void SetCheckToken(bool bMode); - virtual bool GetCheckToken(); - virtual void SetProxyActivate(bool bActivate); virtual bool GetProxyActivate(); - virtual void SetProxyDistance(float distance); virtual void SetMagnifyDamage(float factor); virtual float GetMagnifyDamage(); @@ -235,29 +192,25 @@ public: virtual void SetExploding(bool bExplo); virtual bool IsExploding(); + virtual void SetLock(bool bLock); virtual bool GetLock(); - virtual void SetSpaceshipCargo(bool bCargo); - virtual bool IsSpaceshipCargo(); + virtual void SetBurn(bool bBurn); virtual bool GetBurn(); + virtual void SetDead(bool bDead); virtual bool GetDead(); - virtual bool GetRuin(); - virtual bool GetActive(); - virtual void SetGunGoalV(float gunGoal); - virtual void SetGunGoalH(float gunGoal); - virtual float GetGunGoalV(); - virtual float GetGunGoalH(); + virtual bool GetRuin(); + + virtual bool GetActive(); virtual bool StartShowLimit(); virtual void StopShowLimit(); virtual bool IsProgram(); - virtual void CreateSelectParticle(); - virtual void SetRunScript(CScript* script); virtual CScript* GetRunScript(); virtual CBotVar* GetBotVar(); virtual CPhysics* GetPhysics(); @@ -273,13 +226,8 @@ public: virtual CObject* SubDeselList(); virtual void DeleteDeselList(CObject* pObj); - virtual bool CreateShadowCircle(float radius, float intensity, Gfx::EngineShadowType type = Gfx::ENG_SHADOW_NORM); - virtual bool CreateShadowLight(float height, Gfx::Color color); - virtual bool CreateEffectLight(float height, Gfx::Color color); - virtual void FlatParent(); - virtual void SetInfoReturn(float value); virtual float GetInfoReturn(); }; diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp index e50653e8..f7e0ad36 100644 --- a/src/object/robotmain.cpp +++ b/src/object/robotmain.cpp @@ -1275,6 +1275,7 @@ void CRobotMain::ExecuteCmd(char *cmd) } object->SetShield(1.0f); + CPhysics* physics = object->GetPhysics(); if (physics != nullptr) physics->SetReactorRange(1.0f); @@ -3543,33 +3544,35 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) if (obj->Implements(ObjectInterfaceType::Old)) // TODO: temporary hack { - obj->SetDefRank(rankObj); // TODO: do we really need this? + COldObject* oldObj = dynamic_cast(obj); + + oldObj->SetDefRank(rankObj); // TODO: do we really need this? if (type == OBJECT_BASE) - m_base = obj; + m_base = oldObj; if (line->GetParam("select")->AsBool(false)) - sel = obj; + sel = oldObj; // TODO: everything below should go to CObject::Read() function // In fact, we could give CLevelParserLine as parameter to CreateObject() in the first place Gfx::CameraType cType = line->GetParam("camera")->AsCameraType(Gfx::CAM_TYPE_NULL); if (cType != Gfx::CAM_TYPE_NULL) - obj->SetCameraType(cType); + oldObj->SetCameraType(cType); - obj->SetCameraDist(line->GetParam("cameraDist")->AsFloat(50.0f)); - obj->SetCameraLock(line->GetParam("cameraLock")->AsBool(false)); + oldObj->SetCameraDist(line->GetParam("cameraDist")->AsFloat(50.0f)); + oldObj->SetCameraLock(line->GetParam("cameraLock")->AsBool(false)); Gfx::PyroType pType = line->GetParam("pyro")->AsPyroType(Gfx::PT_NULL); if (pType != Gfx::PT_NULL) { - m_engine->GetPyroManager()->Create(pType, obj); + m_engine->GetPyroManager()->Create(pType, oldObj); } if (type == OBJECT_INFO) { - CExchangePost* exchangePost = static_cast(obj); + CExchangePost* exchangePost = static_cast(oldObj); exchangePost->ReadInfo(line.get()); } @@ -3579,36 +3582,36 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) const auto& cmdline = line->GetParam("cmdline")->AsArray(); for (unsigned int i = 0; i < cmdline.size(); i++) { - obj->SetCmdLine(i, cmdline[i]->AsFloat()); + oldObj->SetCmdLine(i, cmdline[i]->AsFloat()); } } bool selectable = line->GetParam("selectable")->AsBool(true); - obj->SetSelectable(selectable); - obj->SetIgnoreBuildCheck(line->GetParam("ignoreBuildCheck")->AsBool(false)); - obj->SetEnable(line->GetParam("enable")->AsBool(true)); - obj->SetProxyActivate(line->GetParam("proxyActivate")->AsBool(false)); - obj->SetProxyDistance(line->GetParam("proxyDistance")->AsFloat(15.0f)*g_unit); - obj->SetRange(line->GetParam("range")->AsFloat(30.0f)); - obj->SetShield(line->GetParam("shield")->AsFloat(1.0f)); - obj->SetMagnifyDamage(line->GetParam("magnifyDamage")->AsFloat(1.0f)); - obj->SetTeam(line->GetParam("team")->AsInt(0)); - obj->SetClip(line->GetParam("clip")->AsBool(true)); - obj->SetCheckToken(!line->GetParam("checkToken")->IsDefined() ? trainer || !selectable : line->GetParam("checkToken")->AsBool(true)); + oldObj->SetSelectable(selectable); + oldObj->SetIgnoreBuildCheck(line->GetParam("ignoreBuildCheck")->AsBool(false)); + oldObj->SetEnable(line->GetParam("enable")->AsBool(true)); + oldObj->SetProxyActivate(line->GetParam("proxyActivate")->AsBool(false)); + oldObj->SetProxyDistance(line->GetParam("proxyDistance")->AsFloat(15.0f)*g_unit); + oldObj->SetRange(line->GetParam("range")->AsFloat(30.0f)); + oldObj->SetShield(line->GetParam("shield")->AsFloat(1.0f)); + oldObj->SetMagnifyDamage(line->GetParam("magnifyDamage")->AsFloat(1.0f)); + oldObj->SetTeam(line->GetParam("team")->AsInt(0)); + oldObj->SetClip(line->GetParam("clip")->AsBool(true)); + oldObj->SetCheckToken(!line->GetParam("checkToken")->IsDefined() ? trainer || !selectable : line->GetParam("checkToken")->AsBool(true)); // SetManual will affect bot speed if (type == OBJECT_MOBILEdr) { - obj->SetManual(!trainer); + oldObj->SetManual(!trainer); } Math::Vector zoom = line->GetParam("zoom")->AsPoint(Math::Vector(0.0f, 0.0f, 0.0f)); if (zoom.x != 0.0f || zoom.y != 0.0f || zoom.z != 0.0f) - obj->SetZoom(0, zoom); + oldObj->SetZoom(0, zoom); // only used in AlienWorm lines if (type == OBJECT_WORM) { - CMotion* motion = obj->GetMotion(); + CMotion* motion = oldObj->GetMotion(); if (motion != nullptr && line->GetParam("param")->IsDefined()) { const auto& p = line->GetParam("param")->AsArray(); @@ -3621,9 +3624,9 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) int run = -1; std::map loadedPrograms; - if (obj->Implements(ObjectInterfaceType::Programmable)) + if (oldObj->Implements(ObjectInterfaceType::Programmable)) { - CBrain* brain = dynamic_cast(obj)->GetBrain(); + CBrain* brain = dynamic_cast(oldObj)->GetBrain(); bool allFilled = true; for (int i = 0; i < 10 || allFilled; i++) @@ -3652,7 +3655,7 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) brain->SetScriptRun(loadedPrograms[run]); } } - CAuto* automat = obj->GetAuto(); + CAuto* automat = oldObj->GetAuto(); if (automat != nullptr) { type = line->GetParam("autoType")->AsObjectType(OBJECT_NULL); @@ -3673,15 +3676,15 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) } } - if (soluce && obj->Implements(ObjectInterfaceType::Programmable) && line->GetParam("soluce")->IsDefined()) - dynamic_cast(obj)->GetBrain() + if (soluce && oldObj->Implements(ObjectInterfaceType::Programmable) && line->GetParam("soluce")->IsDefined()) + dynamic_cast(oldObj)->GetBrain() ->SetSoluceName(const_cast(line->GetParam("soluce")->AsPath("ai").c_str())); - obj->SetResetPosition(obj->GetPosition()); - obj->SetResetAngle(obj->GetRotation()); - obj->SetResetRun(loadedPrograms[run]); + oldObj->SetResetPosition(oldObj->GetPosition()); + oldObj->SetResetAngle(oldObj->GetRotation()); + oldObj->SetResetRun(loadedPrograms[run]); if (line->GetParam("reset")->AsBool(false)) - obj->SetResetCap(RESET_MOVE); + oldObj->SetResetCap(RESET_MOVE); } rankObj ++; diff --git a/src/object/task/taskbuild.cpp b/src/object/task/taskbuild.cpp index 18d4b877..cbd2c76d 100644 --- a/src/object/task/taskbuild.cpp +++ b/src/object/task/taskbuild.cpp @@ -83,7 +83,6 @@ bool CTaskBuild::CreateBuilding(Math::Vector pos, float angle) { float power = 0.0f; m_building = CObjectManager::GetInstancePointer()->CreateObject(pos, angle, m_type, power); - m_building->UpdateMapping(); m_building->SetLock(true); // not yet usable m_building->SetTeam(m_object->GetTeam()); diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp index 7c615563..8b73f5c2 100644 --- a/src/physics/physics.cpp +++ b/src/physics/physics.cpp @@ -808,7 +808,7 @@ void CPhysics::MotorUpdate(float aTime, float rTime) { power = nullptr; if (IsObjectCarryingCargo(m_object)&& // carries something? - !m_object->IsSpaceshipCargo() ) + !m_bFreeze ) { motorSpeed.x *= 0.7f; // forward more slowly motorSpeed.z *= 0.5f; diff --git a/src/script/scriptfunc.cpp b/src/script/scriptfunc.cpp index 316781fc..91bb6734 100644 --- a/src/script/scriptfunc.cpp +++ b/src/script/scriptfunc.cpp @@ -547,6 +547,7 @@ bool CScriptFunctions::rGetObjectById(CBotVar* var, CBotVar* result, int& except { result->SetPointer(pObj->GetBotVar()); } + return true; } @@ -1161,6 +1162,7 @@ bool CScriptFunctions::rSearch(CBotVar* var, CBotVar* result, int& exception, vo { result->SetPointer(pBest->GetBotVar()); } + return true; }