00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef changeUnitPropertyH
00023 #define changeUnitPropertyH
00024
00025
00026 #include "unitaction.h"
00027
00031 class ChangeUnitProperty : public UnitAction {
00032 public:
00033 enum Property { Experience, Movement, AttackedFlag, Height, Direction, ReactionFire, PowerGeneration };
00034 private:
00035
00036 static ASCString getPropertyName( Property property );
00037 int getUnitProperty();
00038 void setUnitProperty( Property property, int value, const Context& context);
00039
00040 Property property;
00041
00042 bool valueIsAbsolute;
00043 int value;
00044
00045 int originalValue;
00046 int resultingValue;
00047
00048 ChangeUnitProperty( GameMap* map ) : UnitAction( map ) {};
00049 template<class Child> friend GameAction* GameActionCreator( GameMap* map);
00050
00051 public:
00052 ChangeUnitProperty( Vehicle* vehicle, Property property, int value, bool valueIsAbsolute = true );
00053
00054 ASCString getDescription() const;
00055
00056 protected:
00057 virtual GameActionID getID() const;
00058
00059 virtual ActionResult runAction( const Context& context );
00060 virtual ActionResult undoAction( const Context& context );
00061 virtual ActionResult preCheck();
00062 virtual ActionResult postCheck();
00063
00064 virtual void readData ( tnstream& stream );
00065 virtual void writeData ( tnstream& stream ) const;
00066
00067 };
00068
00069 #endif
00070