SDXFrameWork 0.07 SDXFrameWork

- メインページ
- 関連ページ
- クラス

全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
SpriteDerived.h
1 #pragma once//☀SDXFramework
2 #include <Framework/Sprite.h>
3
4 namespace SDX
5 {
8 class SpImage : public Sprite
9 {
10 private:
11 const Image *image;
12
13 public:
14 SpImage(const Image *描画Image ):
15 image(描画Image)
16 {}
17
18 void Draw( double X座標 , double Y座標 , bool Cameraフラグ)
19 {
20 if ( Cameraフラグ )
21 {
22 image->DrawRotateAxis( (int)Camera::Now()->TransX(X座標 + gapX) ,
23 (int)Camera::Now()->TransY(Y座標 + gapY) ,
24 (int)(axisX + image->GetWidth() / 2),
25 (int)(axisY + image->GetHeight() / 2),
26 zoomX * Camera::Now()->GetZoom() ,
27 zoomY * Camera::Now()->GetZoom() ,
28 angle , isTurn);
29 }else{
30 image->DrawRotateAxis( (int)(X座標 + gapX) ,
31 (int)(Y座標 + gapY),
32 (int)(axisX + image->GetHeight() / 2),
33 (int)(axisY + image->GetHeight() / 2),
34 zoomX ,
35 zoomY ,
36 angle , isTurn);
37 }
38 }
39 };
40
43 class SpImageS : public Sprite
44 {
45 private:
46 const ImagePack *imageS;
47 int index = 0;
48 public:
49 SpImageS(const ImagePack *描画ImagePack ):
50 imageS(描画ImagePack)
51 {}
52
53 void SetIndex(int コマ番号)
54 {
55 index = コマ番号;
56 }
57
58 int GetIndex()
59 {
60 return index;
61 }
62
63 void Draw( double X座標 , double Y座標 , bool Cameraフラグ)
64 {
65 const auto image = imageS->operator[](index);
66
67 if ( Cameraフラグ )
68 {
69 image->DrawRotateAxis((int)Camera::Now()->TransX(X座標 + gapX) ,
70 (int)Camera::Now()->TransY(Y座標 + gapY) ,
71 (int)(axisX + image->GetWidth() / 2),
72 (int)(axisY + image->GetHeight() / 2),
73 zoomX * Camera::Now()->GetZoom() ,
74 zoomY * Camera::Now()->GetZoom() ,
75 angle , isTurn);
76 }else{
77 image->DrawRotateAxis( (int)(X座標 + gapX) ,
78 (int)(Y座標 + gapY),
79 (int)(axisX + image->GetHeight() / 2),
80 (int)(axisY + image->GetHeight() / 2),
81 zoomX ,
82 zoomY ,
83 angle , isTurn);
84 }
85 }
86 };
87
88
91 class SpAnime : public Sprite
92 {
93 private:
94 const Anime *anime;
95 Anime::Player counter;
96 double aniSpeed;
97
98 public:
99
100 SpAnime(const Anime *描画Anime , double 再生速度 = 1) :
101 anime( 描画Anime ),
102 counter( 描画Anime ),
103 aniSpeed( 再生速度 )
104 {}
105
106 void AnimeUpdate()
107 {
108 counter.Update( aniSpeed );
109 }
110
111 void Draw( double X座標 , double Y座標 ,bool Cameraフラグ )
112 {
113 if( Cameraフラグ )
114 {
115 counter.GetFrame()->DrawRotateAxis(
116 (int)Camera::Now()->TransX(X座標 + gapX) ,
117 (int)Camera::Now()->TransY(Y座標 + gapY) ,
118 (int)(axisX + anime->GetWidth() / 2 ),
119 (int)(axisY + anime->GetHeight() / 2 ),
120 zoomX * Camera::Now()->GetZoom() ,
121 zoomY * Camera::Now()->GetZoom(),
122 angle ,
123 isTurn);
124 }
125 else
126 {
127 counter.GetFrame()->DrawRotateAxis(
128 (int)(X座標 +gapX),
129 (int)(Y座標 +gapY),
130 (int)axisX + anime->GetWidth() / 2,
131 (int)axisY + anime->GetHeight() / 2,
132 zoomX ,
133 zoomY ,
134 angle , isTurn);
135 }
136 }
137 };
138
141 class SpFont : public Sprite
142 {
143 private:
144 const IFont *font;
145 std::string& refStr;
146 std::string str;
147 bool isReference;
148 Color rgb;
149
150 public:
151 SpFont(const IFont *フォント , Color 描画色 , double 縦倍率 , double 横倍率,const char* 描画する文字列 ):
152 font(フォント),
153 rgb(描画色),
154 str( 描画する文字列 ),
155 refStr( str ),
156 isReference(false)
157 {
158 this->SetZoom(縦倍率,横倍率);
159 }
160
161 SpFont(const IFont *フォント , Color 描画色 , double 縦倍率 , double 横倍率, std::string& 参照する文字列 ):
162 font(フォント),
163 rgb(描画色),
164 refStr( 参照する文字列 ),
165 isReference(true)
166 {
167 this->SetZoom(縦倍率,横倍率);
168 }
169
170 void Draw( double X座標 , double Y座標 ,bool Cameraフラグ )
171 {
172 if( Cameraフラグ )
173 {
174 font->DrawExtend
175 (
176 (int)Camera::Now()->TransX(X座標 + gapX) ,
177 (int)Camera::Now()->TransY(Y座標 + gapY) ,
178 zoomX * Camera::Now()->GetZoom() ,
179 zoomY * Camera::Now()->GetZoom() ,
180 rgb ,
181 refStr.c_str()
182 );
183 }
184 else
185 {
186 font->DrawExtend
187 (
188 (int)(X座標+gapX),
189 (int)(Y座標+gapY),
190 zoomX,
191 zoomY,
192 rgb,
193 refStr.c_str()
194 );
195 }
196 }
197
198 void SetText( const char* 表示する文字 )
199 {
200 refStr = 表示する文字;
201 }
202 };
203
206 class SpFrame : public Sprite
207 {
208 private:
209 const IFrame *bmpFrame;
210 double width;
211 double height;
212
213 public:
214 SpFrame(const IFrame *描画する枠 , double 幅 , double 高さ ):
215 bmpFrame( 描画する枠),
216 width( 幅 ),
217 height( 高さ )
218 {}
219
220 void Draw( double X座標 , double Y座標 ,bool Cameraフラグ)
221 {
222 if( Cameraフラグ )
223 {
224 bmpFrame->Draw( (int)Camera::Now()->TransX(X座標 + gapX) ,
225 (int)Camera::Now()->TransY(Y座標 + gapY) ,
226 (int)(width * zoomX * Camera::Now()->GetZoom()) ,
227 (int)(height * zoomY * Camera::Now()->GetZoom()));
228 }
229 else
230 {
231 bmpFrame->Draw( (int)(X座標 + gapX),
232 (int)(Y座標 + gapY),
233 (int)(width * zoomX) ,
234 (int)(height * zoomY) );
235 }
236 }
237 };
238
241 class SpMap : public Sprite
242 {
243 private:
244 ImagePack &chip;
245 int width;
246 int height;
247 int rotate;
248 std::vector< std::vector<int> > data;
249 public:
250
251 SpMap( ImagePack& マップチップ , const char* ファイル名 , int 幅 , int 高さ , int 角度):
252 width(幅),
253 height(高さ),
254 rotate(角度),
255 chip(マップチップ)
256 {
257 File csvFile( ファイル名 , FileMode::Read );
258
259 data.resize( 幅 );
260
261 for(int i=0 ; i<幅 ;++i)
262 {
263 data[i].resize( 高さ );
264 }
265
266 auto lineS = csvFile.GetCsvS();
267
268 for(int i = 0 ; i < 高さ ; ++i )
269 {
270 for( int j = 0 ; j < 幅 ; j++)
271 {
272 data[j][i] = atoi( lineS[i][j].c_str() );
273 }
274 }
275 }
276
277 void Draw( double X座標 , double Y座標 ,bool カメラ有りフラグ)
278 {
279 const int chipW = chip.GetWidth();
280 const int chipH = chip.GetHeight();
281
282 if( カメラ有りフラグ )
283 {
284 const int baseY = int(Camera::Now()->TransY( Y座標 ));
285 const int baseX = int(Camera::Now()->TransX( X座標 ));
286
287 int posXA;
288 int posYA;
289 int posXB;
290 int posYB;
291
292 for(int i=0 ; i<width ; ++i )
293 {
294 posXA = int( baseX + chipW * i * Camera::Now()->GetZoom() );
295 posXB = int( baseX + chipW * (i+1) * Camera::Now()->GetZoom() );
296
297 for(int j=0 ; j<height ; ++j )
298 {
299 posYA = int( baseY + chipH * j * Camera::Now()->GetZoom() );
300 posYB = int( baseY + chipH * (j+1) * Camera::Now()->GetZoom() );
301 const int no = data[i][j];
302 if( no == 0 ) continue;
303 chip[no]->DrawExtend( posXA , posYA , posXB , posYB );
304 }
305 }
306 }else{
307 for(int i=0 ; i<width ; ++i )
308 {
309 for(int j=0 ; j<height ; ++j )
310 {
311 const int no = data[i][j];
312 if( no == 0 ) continue;
313 chip[no]->Draw( int(X座標 + i*chipW) , int(Y座標 + j*chipH) );
314 }
315 }
316 }
317 }
318
319 };
320
321 }
SDX::IFont
Font,BmpFont等のインターフェース.
Definition: IFont.h:9
SDX::IFont::DrawExtend
virtual bool DrawExtend(int X座標, int Y座標, double X軸拡大率, double Y軸拡大率, Color 色, VariadicStream 描画する文字列) const =0
拡大率を指定して文字を描画.
SDX::ImagePack::GetWidth
int GetWidth() const
最大幅を取得.
Definition: ImagePack.h:107
SDX::Sprite::SetZoom
void SetZoom(double X拡大率, double Y拡大率)
表示倍率を設定.
Definition: Sprite.h:59
SDX::SpAnime::Draw
void Draw(double X座標, double Y座標, bool Cameraフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:111
SDX::SpFrame
IFrameスプライト.
Definition: SpriteDerived.h:206
SDX::File
入出力可能なテキストかバイナリファイルを表すクラス.
Definition: File.h:28
SDX::SpImage::Draw
void Draw(double X座標, double Y座標, bool Cameraフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:18
SDX::SpAnime::AnimeUpdate
void AnimeUpdate()
説明.
Definition: SpriteDerived.h:106
SDX::FileMode::Read
読込のみ
SDX::Camera::Now
static Camera * Now()
アクティブなカメラを取得.
Definition: Camera.h:54
SDX::SpImageS::Draw
void Draw(double X座標, double Y座標, bool Cameraフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:63
SDX::SpFont::Draw
void Draw(double X座標, double Y座標, bool Cameraフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:170
SDX::SpMap
マップチップスプライト.
Definition: SpriteDerived.h:241
SDX::File::GetCsvS
std::vector< std::vector< std::string > > GetCsvS()
カンマ区切りのCSVファイルを一括読込.
Definition: File.h:230
SDX::SpFrame::Draw
void Draw(double X座標, double Y座標, bool Cameraフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:220
SDX::SpAnime
Animeスプライト.
Definition: SpriteDerived.h:91
SDX::Image
画像データを表すクラス.
Definition: Image.h:37
SDX::Color
色を表すクラス.
Definition: Color.h:7
SDX::Camera::GetZoom
double GetZoom()
拡大率を取得.
Definition: Camera.h:126
SDX::Image::GetHeight
int GetHeight() const
高さを取得.
Definition: Image.h:283
SDX::Image::GetWidth
int GetWidth() const
幅を取得.
Definition: Image.h:277
SDX::SpImageS
ImagePackスプライト.
Definition: SpriteDerived.h:43
SDX::ImagePack::GetHeight
int GetHeight() const
最大高さを取得.
Definition: ImagePack.h:113
SDX::Anime
Imageをまとめてコマ送りアニメとして表すクラス.
Definition: Anime.h:28
SDX::Anime::Player::Update
bool Update(double 経過フレーム=1)
カウンタの更新.
Definition: Anime.h:49
SDX::Anime::Player
Animeの再生情報を管理するクラス.
Definition: Anime.h:35
SDX::ImagePack
複数のImageをまとめるクラス.
Definition: ImagePack.h:9
SDX::SpImage
Imageスプライト.
Definition: SpriteDerived.h:8
SDX::Sprite
2Dモデルに貼り付けるスプライトを表す抽象クラス.
Definition: Sprite.h:15
SDX::Image::DrawRotateAxis
bool DrawRotateAxis(int X座標, int Y座標, int X軸, int Y軸, double 拡大率, double 角度, bool 反転フラグ=false) const
回転軸、角度、拡大率を指定して描画.
Definition: Image.h:211
SDX::SpFont
Fontスプライト.
Definition: SpriteDerived.h:141
SDX::Anime::Player::GetFrame
Image * GetFrame()
現在のコマ番号を取得.
Definition: Anime.h:85
SDX::IFrame
描画用枠のインターフェース.
Definition: BmpFrame.h:12
SDX::SpMap::Draw
void Draw(double X座標, double Y座標, bool カメラ有りフラグ)
Spriteを描画する.
Definition: SpriteDerived.h:277