garrison order validation

This commit is contained in:
devZoGok
2024-11-30 16:53:42 +02:00
parent 2d9d93de08
commit 0e56ce4748
4 changed files with 14 additions and 2 deletions
+1 -1
View File
@@ -690,7 +690,7 @@ namespace battleship{
case Order::TYPE::MOVE:
return vehicle;
case Order::TYPE::GARRISON:
return true;
return validateGarrisonOrder(order);
case Order::TYPE::EJECT:
return !garrisonSlots.empty();
case Order::TYPE::LAUNCH:
+2 -1
View File
@@ -164,6 +164,7 @@ namespace battleship{
void updateScreenCoordinates();
void initWeapons();
void destroyWeapons();
bool validateOrder(Order);
inline bool canDisplayOrderLine(){return vb01::getTime() - orderLineDispTime < orderVecDispLength;}
const int orderVecDispLength = 2000, DEATH_HP = 0;
@@ -187,7 +188,7 @@ namespace battleship{
std::vector<Player*> getSelectingPlayers();
void removeOrder(int);
bool validateOrder(Order);
virtual bool validateGarrisonOrder(Order){return false;}
virtual void targetUnitsAutomatically();
virtual void reinit();
virtual void initProperties();
+10
View File
@@ -46,6 +46,16 @@ namespace battleship{
pursuingTarget = false;
}
bool Vehicle::validateGarrisonOrder(Order order){
Unit *targUnit = order.targets[0].unit;
for(GarrisonSlot slot : targUnit->getGarrisonSlots())
if(!slot.vehicle && slot.category >= garrisonCategory)
return true;
return false;
}
void Vehicle::receiveOrder(Order order, bool add){
if(!(order.type == Order::TYPE::EJECT || order.type == Order::TYPE::LAUNCH)){
Order::Target targ = order.targets[0];
+1
View File
@@ -25,6 +25,7 @@ namespace battleship{
std::vector<vb01::Node*> debugPathPoints;
inline int getNextPatrolPointId(int numPoints) {return patrolPointId == numPoints - 1 ? 0 : patrolPointId + 1;}
bool validateGarrisonOrder(Order);
void enterGarrisonable();
void halt();
void turn(float);