Files
PlanetFleet/pointDefense.cpp
T
devZoGok 43ccac92d4 structures work only once complete
research structures research when they have min 30% HP
2024-02-25 16:46:52 +02:00

38 lines
1.0 KiB
C++

#include "pointDefense.h"
namespace battleship{
using namespace vb01;
PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){
turretDir = dirVec;
}
void PointDefense::attack(Order order){
if(!isComplete()) return;
Unit *targUnit = order.targets[0].unit;
Vector3 targDir = (targUnit ? targUnit->getPos() : order.targets[0].pos) - pos;
if(targDir.getLength() > weapons[0]->getMaxRange()){
removeOrder(0);
return;
}
float angleToTarg = targDir.norm().getAngleBetween(turretDir);
if(angleToTarg > .05)
rotateTurret(calculateRotation(targDir.norm(), angleToTarg, .1));
else
weapons[0]->fire(order);
Unit::attack(order);
}
void PointDefense::rotateTurret(float angle){
Node *turretNode = model->getChild(0)->getChild(0);
Quaternion rotQuat = Quaternion(angle, Vector3::VEC_J);
turretNode->setOrientation(rotQuat * turretNode->getOrientation());
turretDir = rotQuat * turretDir;
}
}