FIFE  2008.0
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
visual.h
1 /***************************************************************************
2  * Copyright (C) 2005-2011 by the FIFE team *
3  * http://www.fifengine.net *
4  * This file is part of FIFE. *
5  * *
6  * FIFE is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU Lesser General Public *
8  * License as published by the Free Software Foundation; either *
9  * version 2.1 of the License, or (at your option) any later version. *
10  * *
11  * This library is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14  * Lesser General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU Lesser General Public *
17  * License along with this library; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
20  ***************************************************************************/
21 
22 #ifndef FIFE_VIEW_VISUAL_H
23 #define FIFE_VIEW_VISUAL_H
24 
25 // Standard C++ library includes
26 
27 // 3rd party library includes
28 
29 // FIFE includes
30 // These includes are split up in two parts, separated by one empty line
31 // First block: files included from the FIFE root src directory
32 // Second block: files included from the same folder
33 #include "model/metamodel/ivisual.h"
34 #include "util/math/angles.h"
35 #include "util/structures/rect.h"
36 #include "video/animation.h"
37 
38 
39 namespace FIFE {
40  class Object;
41  class Instance;
42  class Action;
43  class Image;
44  class Camera;
45 
51  class Visual2DGfx: public IVisual {
52  public:
55  virtual ~Visual2DGfx();
56 
60  void setTransparency(uint8_t transparency) { m_transparency = transparency; }
61 
65  uint32_t getTransparency() { return m_transparency; }
66 
70  void setVisible(bool visible) { m_visible = visible; }
71 
75  uint32_t isVisible() { return m_visible; }
76 
77  protected:
80  Visual2DGfx();
81 
82  uint8_t m_transparency;
83  uint8_t m_visible;
84 
85  };
86 
89  class ObjectVisual: public Visual2DGfx {
90  public:
93  static ObjectVisual* create(Object* object);
94 
97  virtual ~ObjectVisual();
98 
108  void addStaticImage(uint32_t angle, int32_t image_index);
109 
113  int32_t getStaticImageIndexByAngle(int32_t angle);
114 
118  int32_t getClosestMatchingAngle(int32_t angle);
119 
122  void getStaticImageAngles(std::vector<int32_t>& angles);
123 
124  private:
127  ObjectVisual();
128 
129  type_angle2id m_angle2img;
130  };
131 
132 
135  class InstanceVisual: public Visual2DGfx {
136  public:
139  static InstanceVisual* create(Instance* instance);
140 
143  virtual ~InstanceVisual();
144 
150  void setStackPosition(int32_t stackposition) { m_stackposition = stackposition; }
151 
155  int32_t getStackPosition() { return m_stackposition; }
156 
157  private:
160  InstanceVisual();
161  int32_t m_stackposition;
162  };
163 
166  class ActionVisual: public Visual2DGfx {
167  public:
170  static ActionVisual* create(Action* action);
171 
174  virtual ~ActionVisual();
175 
178  void addAnimation(uint32_t angle, AnimationPtr animationptr);
179 
183  AnimationPtr getAnimationByAngle(int32_t angle);
184 
187  void getActionImageAngles(std::vector<int32_t>& angles);
188 
189  private:
192  ActionVisual();
193 
194  // animations associated with this action
195  typedef std::map<uint32_t, AnimationPtr> AngleAnimationMap;
196  AngleAnimationMap m_animation_map;
197 
198  //@fixme need this map to use the getIndexByAngle() function in angles.h
199  //should fix this
200  type_angle2id m_map;
201  };
202 
203 }
204 #endif
static InstanceVisual * create(Instance *instance)
Definition: visual.cpp:93
int32_t getClosestMatchingAngle(int32_t angle)
Definition: visual.cpp:74
void setVisible(bool visible)
Definition: visual.h:70
int32_t getStackPosition()
Definition: visual.h:155
virtual ~Visual2DGfx()
Definition: visual.cpp:47
static ActionVisual * create(Action *action)
Definition: visual.cpp:108
int32_t getStaticImageIndexByAngle(int32_t angle)
Definition: visual.cpp:69
void getActionImageAngles(std::vector< int32_t > &angles)
Definition: visual.cpp:130
void getStaticImageAngles(std::vector< int32_t > &angles)
Definition: visual.cpp:80
void addAnimation(uint32_t angle, AnimationPtr animationptr)
Definition: visual.cpp:120
uint32_t isVisible()
Definition: visual.h:75
void setTransparency(uint8_t transparency)
Definition: visual.h:60
virtual ~ActionVisual()
Definition: visual.cpp:117
static ObjectVisual * create(Object *object)
Definition: visual.cpp:53
void addStaticImage(uint32_t angle, int32_t image_index)
Definition: visual.cpp:65
AnimationPtr getAnimationByAngle(int32_t angle)
Definition: visual.cpp:125
void setStackPosition(int32_t stackposition)
Definition: visual.h:150
virtual ~ObjectVisual()
Definition: visual.cpp:62
virtual ~InstanceVisual()
Definition: visual.cpp:102
uint32_t getTransparency()
Definition: visual.h:65