00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __ACTION_BUILT_H__
00031 #define __ACTION_BUILT_H__
00032
00033 #include "actions.h"
00034
00036
00037 class COrder_Built : public COrder
00038 {
00039 friend COrder *COrder::NewActionBuilt(CUnit &builder, CUnit &unit);
00040 public:
00041 COrder_Built() : COrder(UnitActionBuilt), ProgressCounter(0), IsCancelled(false), Frame(NULL) {}
00042
00043 virtual COrder_Built *Clone() const { return new COrder_Built(*this); }
00044
00045 virtual bool IsValid() const;
00046
00047 virtual void Save(CFile &file, const CUnit &unit) const;
00048 virtual bool ParseSpecificData(lua_State *l, int &j, const char *value, const CUnit &unit);
00049
00050 virtual void Execute(CUnit &unit);
00051 virtual void Cancel(CUnit &unit);
00052 virtual PixelPos Show(const CViewport &vp, const PixelPos &lastScreenPos) const;
00053 virtual void UpdatePathFinderData(PathFinderInput &input) { UpdatePathFinderData_NotCalled(input); }
00054
00055 virtual void UpdateUnitVariables(CUnit &unit) const;
00056 virtual void FillSeenValues(CUnit &unit) const;
00057 virtual void AiUnitKilled(CUnit &unit);
00058
00059 void Progress(CUnit &unit, int amount);
00060 void ProgressHp(CUnit &unit, int amount);
00061
00062 const CConstructionFrame &GetFrame() const { return *Frame; }
00063 const CUnitPtr &GetWorker() const { return Worker; }
00064 CUnit *GetWorkerPtr() { return Worker; }
00065
00066 private:
00067 void Boost(CUnit &building, int amount, int varIndex) const;
00068 void UpdateConstructionFrame(CUnit &unit);
00069
00070 private:
00071 CUnitPtr Worker;
00072 int ProgressCounter;
00073 bool IsCancelled;
00074 const CConstructionFrame *Frame;
00075 };
00076
00078
00079 #endif // !__ACTION_BUILT_H__