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 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user