mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-25 15:07:28 +00:00
f22bf24663
As part of the base enemy mech script its faction should be updated to 4 to make sure it's seen as an enemy by the client. The AgDarklingMech script has been deleted as its functionality was essentially that of BaseEnemyMech and thus no longer necessary.
48 lines
1.8 KiB
C++
48 lines
1.8 KiB
C++
#include "BaseEnemyMech.h"
|
|
#include "Entity.h"
|
|
#include "GameMessages.h"
|
|
#include "Game.h"
|
|
#include "dLogger.h"
|
|
#include "ControllablePhysicsComponent.h"
|
|
#include "EntityManager.h"
|
|
#include "dpWorld.h"
|
|
#include "GeneralUtils.h"
|
|
#include "DestroyableComponent.h"
|
|
|
|
void BaseEnemyMech::OnStartup(Entity* self) {
|
|
auto* destroyableComponent = self->GetComponent<DestroyableComponent>();
|
|
if (destroyableComponent != nullptr) {
|
|
destroyableComponent->SetFaction(4);
|
|
}
|
|
}
|
|
|
|
void BaseEnemyMech::OnDie(Entity* self, Entity* killer) {
|
|
ControllablePhysicsComponent* controlPhys = static_cast<ControllablePhysicsComponent*>(self->GetComponent(COMPONENT_TYPE_CONTROLLABLE_PHYSICS));
|
|
if (!controlPhys) return;
|
|
|
|
NiPoint3 newLoc = {controlPhys->GetPosition().x, dpWorld::Instance().GetHeightAtPoint(controlPhys->GetPosition()), controlPhys->GetPosition().z };
|
|
//NiPoint3 newLoc = { controlPhys->GetPosition().x, controlPhys->GetPosition().y, controlPhys->GetPosition().z };
|
|
|
|
EntityInfo info = EntityInfo();
|
|
std::vector<LDFBaseData*> cfg;
|
|
std::u16string activatorPosStr;
|
|
activatorPosStr += (GeneralUtils::to_u16string(controlPhys->GetPosition().x));
|
|
activatorPosStr.push_back(0x1f);
|
|
activatorPosStr += (GeneralUtils::to_u16string(controlPhys->GetPosition().y));
|
|
activatorPosStr.push_back(0x1f);
|
|
activatorPosStr += (GeneralUtils::to_u16string(controlPhys->GetPosition().z));
|
|
|
|
LDFBaseData* activatorPos = new LDFData<std::u16string>(u"rebuild_activators", activatorPosStr);
|
|
cfg.push_back(activatorPos);
|
|
info.lot = qbTurretLOT;
|
|
info.pos = newLoc;
|
|
info.rot = controlPhys->GetRotation();
|
|
info.spawnerID = self->GetObjectID();
|
|
info.settings = cfg;
|
|
|
|
Entity* turret = EntityManager::Instance()->CreateEntity(info, nullptr);
|
|
if (turret) {
|
|
EntityManager::Instance()->ConstructEntity(turret);
|
|
}
|
|
}
|