mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
revamped order execution
This commit is contained in:
@@ -356,46 +356,44 @@ namespace battleship{
|
||||
|
||||
//TODO remove order argument from action methods
|
||||
void Unit::executeOrders() {
|
||||
if(condition != Condition::ABLE) return;
|
||||
if(orders.empty() || condition != Condition::ABLE) return;
|
||||
|
||||
if (orders.size() > 0) {
|
||||
Order order = orders[0];
|
||||
if(!currOrderStarted) startCurrentOrder();
|
||||
|
||||
switch (order.type) {
|
||||
case Order::TYPE::ATTACK:
|
||||
attack(order);
|
||||
break;
|
||||
case Order::TYPE::BUILD:
|
||||
build(order);
|
||||
break;
|
||||
case Order::TYPE::MOVE:
|
||||
move(order);
|
||||
break;
|
||||
case Order::TYPE::GARRISON:
|
||||
garrison(order);
|
||||
break;
|
||||
case Order::TYPE::EJECT:
|
||||
eject(order);
|
||||
break;
|
||||
case Order::TYPE::PATROL:
|
||||
patrol(order);
|
||||
break;
|
||||
case Order::TYPE::LAUNCH:
|
||||
launch(order);
|
||||
break;
|
||||
break;
|
||||
case Order::TYPE::LOAD:
|
||||
case Order::TYPE::SUPPLY:
|
||||
case Order::TYPE::UNLOAD:
|
||||
handleResources(order);
|
||||
break;
|
||||
case Order::TYPE::HACK:
|
||||
hack(order);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (orders[0].type) {
|
||||
case Order::TYPE::ATTACK:
|
||||
attack(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::BUILD:
|
||||
build(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::MOVE:
|
||||
move(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::GARRISON:
|
||||
garrison(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::EJECT:
|
||||
eject(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::PATROL:
|
||||
patrol(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::LAUNCH:
|
||||
launch(orders[0]);
|
||||
break;
|
||||
break;
|
||||
case Order::TYPE::LOAD:
|
||||
case Order::TYPE::SUPPLY:
|
||||
case Order::TYPE::UNLOAD:
|
||||
handleResources(orders[0]);
|
||||
break;
|
||||
case Order::TYPE::HACK:
|
||||
hack(orders[0]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::eject(Order order){
|
||||
@@ -547,6 +545,7 @@ namespace battleship{
|
||||
LineRenderer::getSingleton()->removeLine(orders[id].lineId);
|
||||
|
||||
orders.erase(orders.begin() + id);
|
||||
currOrderStarted = false;
|
||||
}
|
||||
|
||||
void Unit::select() {
|
||||
|
||||
@@ -159,7 +159,7 @@ namespace battleship{
|
||||
sf::SoundBuffer *selectionSfxBuffer;
|
||||
sf::Sound *selectionSfx = nullptr;
|
||||
vb01::Node *hpBackgroundNode = nullptr, *hpForegroundNode = nullptr, *losLightNode = nullptr;
|
||||
bool vehicle;
|
||||
bool vehicle, currOrderStarted = false;
|
||||
Condition condition = Condition::ABLE;
|
||||
protected:
|
||||
UnitClass unitClass;
|
||||
@@ -178,6 +178,7 @@ namespace battleship{
|
||||
void placeAt(vb01::Vector3);
|
||||
std::vector<Player*> getSelectingPlayers();
|
||||
void removeOrder(int);
|
||||
virtual void startCurrentOrder(){currOrderStarted = true;}
|
||||
virtual bool validateLaunchOrder(){return !getWeaponsByOrder(Order::TYPE::LAUNCH).empty();}
|
||||
virtual bool validateGarrisonOrder(Order){return false;}
|
||||
virtual void targetUnitsAutomatically();
|
||||
|
||||
+12
-4
@@ -42,6 +42,17 @@ namespace battleship{
|
||||
pursuingTarget = false;
|
||||
}
|
||||
|
||||
void Vehicle::startCurrentOrder(){
|
||||
Unit::startCurrentOrder();
|
||||
|
||||
if(orders[0].type == Order::TYPE::LAUNCH) return;
|
||||
|
||||
removeAllPathpoints();
|
||||
|
||||
Vector3 targPos = (orders[0].targets[0].unit ? orders[0].targets[0].unit->getPos() : orders[0].targets[0].pos);
|
||||
preparePathpoints(orders[0], targPos);
|
||||
}
|
||||
|
||||
bool Vehicle::validateGarrisonOrder(Order order){
|
||||
Unit *targUnit = order.targets[0].unit;
|
||||
|
||||
@@ -157,10 +168,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void Vehicle::move(Order order) {
|
||||
if(pathPoints.empty())
|
||||
preparePathpoints(order, order.targets[0].pos);
|
||||
else
|
||||
navigate(0.5 * Map::getSingleton()->getCellSize().x);
|
||||
navigate(0.5 * Map::getSingleton()->getCellSize().x);
|
||||
|
||||
if(type == UnitType::LAND)
|
||||
alignToSurface();
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace battleship{
|
||||
vb01::s64 lastBuildTime = 0;
|
||||
|
||||
inline int getNextPatrolPointId(int numPoints) {return patrolPointId == numPoints - 1 ? 0 : patrolPointId + 1;}
|
||||
void startCurrentOrder();
|
||||
bool validateGarrisonOrder(Order);
|
||||
void enterGarrisonable();
|
||||
void halt();
|
||||
|
||||
Reference in New Issue
Block a user