Advanced Strategic Command
changeobjectproperty.h
Go to the documentation of this file.
1 /*
2  This file is part of Advanced Strategic Command; http://www.asc-hq.de
3  Copyright (C) 1994-2010 Martin Bickel and Marc Schellenberger
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; see the file COPYING. If not, write to the
17  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18  Boston, MA 02111-1307 USA
19 */
20 
21 
22 #ifndef changeObjectPropertyH
23 #define changeObjectPropertyH
24 
25 
26 #include "unitaction.h"
27 #include "../objects.h"
28 
29 
31  public:
32  enum Property { Damage };
33  private:
34 
35  MapCoordinate position;
36  int objectID;
37 
38  static ASCString getPropertyName( Property property );
39  int getProperty();
40  ActionResult setProperty( Property property, int value, const Context& context);
41 
42  Property property;
43 
44  bool valueIsAbsolute;
45  int value;
46 
47  int originalValue;
48  int resultingValue;
49 
50  ChangeObjectProperty( GameMap* map ) : GameAction( map ) {};
51  template<class Child> friend GameAction* GameActionCreator( GameMap* map);
52 
53  Object* getObject();
54 
55  public:
56  ChangeObjectProperty( GameMap* map, MapCoordinate& pos, Object* object, Property property, int value, bool valueIsAbsolute = true );
57 
58  ASCString getDescription() const;
59 
60  protected:
61  virtual GameActionID getID() const;
62 
63  virtual ActionResult runAction( const Context& context );
64  virtual ActionResult undoAction( const Context& context );
65  virtual ActionResult preCheck();
66  virtual ActionResult postCheck();
67 
68  virtual void readData ( tnstream& stream );
69  virtual void writeData ( tnstream& stream ) const;
70 
71 };
72 
73 #endif
74 
int GameActionID
Definition: action.h:35
The interface for all kinds of IO stream.
friend GameAction * GameActionCreator(GameMap *map)
Definition: action.h:114
The ASCString class provides an abstract way to manipulate strings.
Definition: ascstring.h:14
virtual void readData(tnstream &stream)
Coordinate on the twodimensional map.
Definition: typen.h:202
virtual ActionResult preCheck()
preCheck is called before an action is redone and should check the preconditions for the action...
virtual ActionResult postCheck()
postCheck is called after an action has been redone and should check that the state of the map is exa...
virtual ActionResult runAction(const Context &context)
an instance of an object type (ObjectType) on the map
Definition: objects.h:46
A GameAction is an modification of something on a map.
Definition: action.h:45
ASCString getDescription() const
virtual void writeData(tnstream &stream) const
virtual ActionResult undoAction(const Context &context)
virtual GameActionID getID() const
The map. THE central structure of ASC, which holds everything not globally available together...
Definition: gamemap.h:182