bugfix for issuing orders to garrisoned vehicles

This commit is contained in:
devZoGok
2023-10-22 09:57:21 +03:00
parent cdc60743ae
commit 60dd048876
2 changed files with 42 additions and 14 deletions
+35 -7
View File
@@ -30,6 +30,8 @@ namespace battleship{
order.type = type;
order.targets = targets;
vector<Unit*> selectedUnits = getSelectedUnits();
for(Unit *u : selectedUnits){
if(append)
u->addOrder(order);
@@ -51,16 +53,11 @@ namespace battleship{
return false;
}
void Player::deselectUnit(int i){
selectedUnits[i]->toggleSelection(false);
selectedUnits.erase(selectedUnits.begin() + i);
}
void Player::deselectUnits(){
vector<Unit*> selectedUnits = getSelectedUnits();
for(Unit *u : selectedUnits)
u->toggleSelection(false);
selectedUnits.clear();
}
void Player::removeUnit(Unit *unit){
@@ -78,4 +75,35 @@ namespace battleship{
delete units[id];
units.erase(units.begin() + id);
}
vector<Unit*> Player::getSelectedUnits(){
vector<Unit*> selectedUnits;
for(Unit *u : units)
if(u->isSelected())
selectedUnits.push_back(u);
return selectedUnits;
}
Unit* Player::getSelectedUnit(int selectedUnitId){
Unit *selectedUnit = nullptr;
for(int i = 0, selUnitId = 0; i < units.size(); i++)
if(units[i]->isSelected()){
if(selUnitId == selectedUnitId){
selectedUnit = units[i];
break;
}
selUnitId++;
}
return selectedUnit;
}
void Player::selectUnits(vector<Unit*> selUnits){
for(Unit *u : selUnits)
u->toggleSelection(true);
}
}
+7 -7
View File
@@ -16,16 +16,16 @@ namespace battleship{
~Player();
void update();
void issueOrder(Order::TYPE, std::vector<Order::Target>, bool);
void deselectUnit(int);
void deselectUnits();
void removeUnit(Unit*);
void removeUnit(int);
bool isThisPlayersUnit(GameObject*);
const inline std::vector<Unit*>& getSelectedUnits(){return selectedUnits;}
inline Unit* getSelectedUnit(int i){return selectedUnits[i];}
inline int getNumSelectedUnits(){return selectedUnits.size();}
inline void selectUnit(Unit *u){selectedUnits.push_back(u);}
inline void selectUnits(std::vector<Unit*> units){selectedUnits = units;}
std::vector<Unit*> getSelectedUnits();
Unit* getSelectedUnit(int);
void selectUnits(std::vector<Unit*>);
inline void deselectUnit(int i){getSelectedUnit(i)->toggleSelection(false);}
inline int getNumSelectedUnits(){return getSelectedUnits().size();}
inline void selectUnit(Unit *u){u->toggleSelection(true);}
inline void addUnit(Unit *u){units.push_back(u);}
inline std::vector<ResourceDeposit*>& getResourceDeposits(){return resourceDeposits;}
inline void addResourceDeposit(ResourceDeposit *rd){resourceDeposits.push_back(rd);}
@@ -48,7 +48,7 @@ namespace battleship{
inline void addResearch(int r){this->research += r;}
private:
int refineds = 0, wealth = 0, research = 0, faction, difficulty,side,id;
std::vector<Unit*> units, selectedUnits;
std::vector<Unit*> units;
std::vector<Projectile*> projectiles;
std::vector<ResourceDeposit*> resourceDeposits;
vb01::Vector3 spawnPoint;