simplified PointDefense class

This commit is contained in:
devZoGok
2025-05-31 18:40:30 +03:00
parent 5702bc8e82
commit 15f970b1d5
2 changed files with 1 additions and 29 deletions
+1 -26
View File
@@ -7,36 +7,11 @@ namespace battleship{
using namespace std;
using namespace gameBase;
PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){
turretDir = dirVec;
}
PointDefense::PointDefense(Player *player, int id, Vector3 pos, Quaternion rot, int buildStatus, Unit::State state) : Structure(player, id, pos, rot, buildStatus, state){}
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){
string nodeName = generateView()[GameObject::getGameObjTableName()][id + 1]["turretNode"];
Node *turretNode = model->findDescendant(nodeName, true);
Quaternion rotQuat = Quaternion(angle, Vector3::VEC_J);
turretNode->setOrientation(rotQuat * turretNode->getOrientation());
turretDir = rotQuat * turretDir;
}
}
-3
View File
@@ -8,10 +8,7 @@ namespace battleship{
public:
PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int, Unit::State);
private:
vb01::Vector3 turretDir;
void attack(Order);
void rotateTurret(float);
};
}