OPTPiX SpriteStudio SDK
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
ssloader_ssae.h
1 #ifndef __SSLOADER_SSAE__
2 #define __SSLOADER_SSAE__
3 
4 #include "sstypes.h"
5 #include "ssarchiver.h"
6 #include "ssattribute.h"
7 
8 
11 {
12 public:
13  int fps;
14  int frameCount;
18 
20  virtual ~SsAnimationSettings(){}
21 public:
22 
25  {
26  SSAR_DECLARE( fps );
27  SSAR_DECLARE( frameCount );
28  SSAR_DECLARE( canvasSize );
29  SSAR_DECLARE( pivot );
30  }
31 };
32 
33 
34 
35 //パーツ一つあたりの情報を保持するデータです。
36 class SsPart
37 {
38 public:
39  SsString name;
40  int arrayIndex;
46  int show;
47  int locked;
48 
49  float inheritRates[(int)SsAttributeKind::num];
50 
51  //参照アニメーション名
52  //ツールはともかくランタイムでは勿体ない使い方なので何らか考えること
53  SsString refAnimePack;
54  SsString refAnime;
55 
56 public:
57  SsPart() :
58  name("") , arrayIndex(0), parentIndex(0) , show(0) , locked(0)
59  {
60  //memset( inheritRates , 0 , sizeof( float) * SsAttributeKind::num );
61  for (int i = 0; i < (int)SsAttributeKind::num ; ++i)
62  inheritRates[i] = 1.f;
63  // 反転・非表示フラグは継承しない from 旧SS
67  // イメージ反転も継承しない 2013.04.03 水 15:08
70  }
71  virtual ~SsPart(){}
72 
73 
76  {
77  SSAR_DECLARE( name );
78  SSAR_DECLARE( arrayIndex );
79  SSAR_DECLARE( parentIndex );
80 
81  SSAR_DECLARE_ENUM( type );
82  SSAR_DECLARE_ENUM( boundsType );
83  SSAR_DECLARE_ENUM( inheritType );
84  SSAR_DECLARE_ENUM( alphaBlendType );
85  SSAR_DECLARE( show );
86  SSAR_DECLARE( locked );
87  SSAR_DECLARE( refAnimePack );
88  SSAR_DECLARE( refAnime );
89 
90  //継承率後に改良を実施
91  if ( ar->getType() == EnumSsArchiver::in )
92  {
93  XMLElement* e = ar->getxml()->FirstChildElement( "ineheritRates" );
94  if ( e )
95  {
96  XMLElement* ec = e->FirstChildElement();
97  while(ec)
98  {
99  const char* tag = ec->GetText();
100  SsAttributeKind::_enum enumattr;
101 
102  __StringToEnum_( tag , enumattr );
103  inheritRates[(int)enumattr] = (float)atof( ec->Value() );
104  ec = ec->NextSiblingElement();
105  }
106  }
107  }
108 
109  }
110 };
111 
112 
113 //アニメーションを構成するパーツをリスト化したものです。
114 class SsModel
115 {
116 public:
117  std::vector<SsPart*> partList;
118 
119 public:
120  SsModel(){}
121  virtual~ SsModel()
122  {
123  for ( std::vector<SsPart*>::iterator itr = partList.begin() ;
124  itr != partList.end() ; itr ++ ) delete (*itr);
125  }
126 
129  {
130  SSAR_DECLARE_LIST( partList );
131  }
132 
133 };
134 
135 
136 typedef std::vector<SsAttribute*> SsAttributeList;
137 
139 {
140 public:
141  SsString partName;
142  SsAttributeList attributes;
143 
144 public:
145  SsPartAnime(){}
146  virtual ~SsPartAnime(){
147  for ( SsAttributeList::iterator itr = attributes.begin() ;
148  itr != attributes.end() ; itr ++ ) delete (*itr);
149  }
150 
153  {
154  SSAR_DECLARE( partName );
155  SSAR_DECLARE_LISTEX( attributes , "attribute" );
156  }
157 };
158 
159 
161 class SsLabel
162 {
163 public:
164  SsString name;
165  int time;
166 
167  SSSERIALIZE_BLOCK
168  {
169  SSAR_DECLARE( name );
170  SSAR_DECLARE( time );
171  }
172 
173 private:
174 
175 };
176 
177 
179 {
180 public:
181  SsString name;
184  std::vector<SsPartAnime*> partAnimes;
185 
186  std::vector<SsLabel*> labels;
188  //SsLabelList labels; ///< ラベルリスト
189 public:
191  virtual ~SsAnimation()
192  {
193  for ( std::vector<SsPartAnime*>::iterator itr = partAnimes.begin() ;
194  itr != partAnimes.end() ; itr ++ ) delete (*itr);
195  for ( std::vector<SsLabel*>::iterator itr = labels.begin() ;
196  itr != labels.end() ; itr ++ ) delete (*itr);
197  }
198 
201  {
202  SSAR_DECLARE( name );
203  SSAR_STRUCT_DECLARE( settings );
204  SSAR_DECLARE_LISTEX( partAnimes , "partAnime" );
205  SSAR_DECLARE_LISTEX( labels , "labels" );
206  }
207 };
208 
215 {
216 public:
218  SsString name;
220  std::vector<SsString> cellmapNames;
221  std::vector<SsAnimation*> animeList;
222 
223  SsAnimePack(){}
224  virtual ~SsAnimePack()
225  {
226  for ( std::vector<SsAnimation*>::iterator itr = animeList.begin() ;
227  itr != animeList.end() ; itr ++ ) delete (*itr);
228  }
229 
232  {
233  SSAR_STRUCT_DECLARE( settings );
234  SSAR_DECLARE( name );
235  SSAR_STRUCT_DECLARE( Model );
236  SSAR_DECLARE( cellmapNames );
237  SSAR_DECLARE_LISTEX( animeList , "anime" );
238  }
239 
240  //アニメーション名からアニメーションを取得する
241  SsAnimation* findAnimation(SsString& name);
242 
243 };
244 
245 /*
246 * @class ssloader_ssae
247 * @brief ssaeファイルをロードするためのクラスです。
248 */
250 {
251 public:
252  ssloader_ssae(){}
253  virtual ~ssloader_ssae(){}
254 
256  static SsAnimePack* Load(const std::string& filename );
257 
258 };
259 
260 
261 
262 
263 
264 
265 #endif