mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
simplified PointDefense class
This commit is contained in:
+1
-26
@@ -7,36 +7,11 @@ namespace battleship{
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace gameBase;
|
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){
|
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){
|
void PointDefense::attack(Order order){
|
||||||
if(!isComplete()) return;
|
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);
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,7 @@ namespace battleship{
|
|||||||
public:
|
public:
|
||||||
PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int, Unit::State);
|
PointDefense(Player*, int, vb01::Vector3, vb01::Quaternion, int, Unit::State);
|
||||||
private:
|
private:
|
||||||
vb01::Vector3 turretDir;
|
|
||||||
|
|
||||||
void attack(Order);
|
void attack(Order);
|
||||||
void rotateTurret(float);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user