From 0af2aac93ccc9430d87ae6a171f2a51e437ff88d Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sat, 9 Dec 2023 11:29:49 +0200 Subject: [PATCH] bugfix for crashing when referencing destroyed units --- unit.cpp | 25 ++++++++++++------------- vehicle.cpp | 4 ++++ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/unit.cpp b/unit.cpp index 2c3d6a6..b6c30bb 100755 --- a/unit.cpp +++ b/unit.cpp @@ -275,21 +275,20 @@ namespace battleship{ } void Unit::attack(Order order){ - if(orders[0].targets[0].unit){ - bool unitFound = false; + vector units; - for(Player *pl : Game::getSingleton()->getPlayers()){ - vector units = pl->getUnits(); - - if(find(units.begin(), units.end(), orders[0].targets[0].unit) != units.end()){ - unitFound = true; - break; - } - } - - if(!unitFound) - removeOrder(0); + for(Player *pl : Game::getSingleton()->getPlayers()){ + vector un = pl->getUnits(); + units.insert(units.end(), un.begin(), un.end()); } + + for(Order::Target &target : orders[0].targets) + if(target.unit){ + if(find(units.begin(), units.end(), target.unit) != units.end()) + break; + + removeOrder(0); + } } void Unit::setOrder(Order order) { diff --git a/vehicle.cpp b/vehicle.cpp index 9d55859..ab4dc19 100644 --- a/vehicle.cpp +++ b/vehicle.cpp @@ -271,7 +271,11 @@ namespace battleship{ } void Vehicle::attack(Order order){ + int prevNumOrders = orders.size(); Unit::attack(order); + int currNumOrders = orders.size(); + + if(prevNumOrders != currNumOrders) return; Order::Target target = order.targets[0]; Vector3 targVec = (target.unit ? target.unit->getPos() : target.pos) - pos;