cancel building when building from outside and stopping
This commit is contained in:
parent
00468bd53e
commit
a79424e07c
3 changed files with 12 additions and 0 deletions
src
|
@ -489,6 +489,14 @@ bool COrder_Build::BuildFromOutside(CUnit &unit) const
|
|||
}
|
||||
}
|
||||
|
||||
/* virtual */ void COrder_Build::Cancel(CUnit &unit)
|
||||
{
|
||||
if (this->State == State_BuildFromOutside && this->BuildingUnit != NULL && this->BuildingUnit->CurrentAction() == UnitActionBuilt) {
|
||||
COrder_Built &targetOrder = *static_cast<COrder_Built *>(this->BuildingUnit->CurrentOrder());
|
||||
targetOrder.Cancel(*this->BuildingUnit);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
** Get goal position
|
||||
*/
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
|
||||
#include "actions.h"
|
||||
#include "action/action_built.h"
|
||||
#include "action/action_build.h"
|
||||
#include "action/action_research.h"
|
||||
#include "action/action_train.h"
|
||||
#include "action/action_upgradeto.h"
|
||||
|
@ -69,6 +70,8 @@ static void ReleaseOrders(CUnit &unit)
|
|||
for (size_t i = 0; i != unit.Orders.size(); ++i) {
|
||||
if (unit.Orders[i]->Action == UnitActionBuilt) {
|
||||
(dynamic_cast<COrder_Built *>(unit.Orders[i]))->Cancel(unit);
|
||||
} if (unit.Orders[i]->Action == UnitActionBuild) {
|
||||
(dynamic_cast<COrder_Build *>(unit.Orders[i]))->Cancel(unit);
|
||||
} else if (unit.Orders[i]->Action == UnitActionResearch) {
|
||||
(dynamic_cast<COrder_Research *>(unit.Orders[i]))->Cancel(unit);
|
||||
} else if (unit.Orders[i]->Action == UnitActionTrain) {
|
||||
|
|
|
@ -52,6 +52,7 @@ public:
|
|||
virtual bool ParseSpecificData(lua_State *l, int &j, const char *value, const CUnit &unit);
|
||||
|
||||
virtual void Execute(CUnit &unit);
|
||||
virtual void Cancel(CUnit &unit);
|
||||
virtual PixelPos Show(const CViewport &vp, const PixelPos &lastScreenPos) const;
|
||||
virtual void UpdatePathFinderData(PathFinderInput &input);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue