00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef UnitFieldRegistrationH
00023 #define UnitFieldRegistrationH
00024
00025
00026 #include "unitaction.h"
00027
00028
00029 class UnitFieldRegistration : public UnitAction {
00030 public:
00031 enum Operation { RegisterOnField, UnregisterOnField, AddView, RemoveView, Position, Position3D, RegisterInCarrier, UnRegisterFromCarrier };
00032
00033 UnitFieldRegistration( Vehicle* vehicle, const MapCoordinate3D& pos, Operation operation, ContainerBase* carrier = 0 );
00034
00035 ASCString getDescription() const;
00036 private:
00037 Operation operation;
00038 MapCoordinate3D position;
00039
00040 int carrierID;
00041
00042 MapCoordinate3D previousPosition;
00043
00044 ASCString getOpName() const;
00045
00046 UnitFieldRegistration( GameMap* map ) : UnitAction( map ) {};
00047 template<class Child> friend GameAction* GameActionCreator( GameMap* map);
00048
00049
00050 protected:
00051 virtual GameActionID getID() const;
00052
00053 virtual ActionResult runAction( const Context& context );
00054 virtual ActionResult undoAction( const Context& context );
00055 virtual ActionResult preCheck();
00056 virtual ActionResult postCheck();
00057
00058 virtual void readData ( tnstream& stream );
00059 virtual void writeData ( tnstream& stream ) const;
00060
00061 };
00062
00063 #endif
00064