Mercurial > otakunoraifu
annotate scn2k/scn2k_grp.cc @ 66:d112357a0ec1
Fix a bug with savegames introduced with changeset c7bcc0ec2267.
Warning: savegames created since c7bcc0ec2267 are probably corrupted,
you may have to start the game over.
If you chose not to do so, you should replace all occurrences of 'TextWindow' by 'TextImplWindow',
and 'Text Window' by 'TextImpl Window' in your save files.
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Sat, 11 Dec 2010 18:36:20 +0100 |
parents | 4416cfac86ae |
children | 1fd20d231376 |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright (c) 2004-2006 Kazunori "jagarl" Ueno | |
3 * All rights reserved. | |
4 * | |
5 * Redistribution and use in source and binary forms, with or without | |
6 * modification, are permitted provided that the following conditions | |
7 * are met: | |
8 * 1. Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * 2. Redistributions in binary form must reproduce the above copyright | |
11 * notice, this list of conditions and the following disclaimer in the | |
12 * documentation and/or other materials provided with the distribution. | |
13 * 3. The name of the author may not be used to endorse or promote products | |
14 * derived from this software without specific prior written permission. | |
15 * | |
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 */ | |
27 | |
52 | 28 #include "scn2k.h" |
29 #include "system/file.h" | |
30 #include "system/system_config.h" | |
31 #include "font/text.h" | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
32 #include "window/render.h" |
0 | 33 |
34 extern XKFont::HorizLayout* DefaultLayout(int text_size); | |
35 | |
36 /******************************************************************* | |
37 ** GrpObj(implementation) | |
38 */ | |
39 | |
40 GrpObj::GrpObj(void) : | |
41 name(""), gan_name(""), pic_parent(0), picture(0), anm(0), | |
42 _posx(0), _posy(0), clip_area(0,0,0,0), | |
43 alpha(255), order(0), surface_num(0), print_moji(""), print_size(0), print_r(-1),print_g(-1),print_b(-1), | |
44 dig_number(0), dig_digit(0), | |
55 | 45 zoom(-1), rotate(-1), attr(GrpObj::HIDDEN) { |
0 | 46 int i; |
47 for (i=0; i<9; i++) { | |
48 posx[i] = posy[i] = 0; | |
49 } | |
50 } | |
52 | 51 |
0 | 52 GrpObj::~GrpObj() { |
55 | 53 if (picture != NULL) delete picture; |
0 | 54 } |
52 | 55 |
0 | 56 int GrpObj::PosX() { |
57 return _posx; | |
58 } | |
52 | 59 |
0 | 60 int GrpObj::PosY() { |
61 return _posy; | |
62 } | |
52 | 63 |
0 | 64 void GrpObj::SetUpdate(void) { |
65 attr = Attribute (attr | UPDATE_PICTURE); | |
18 | 66 //Update(); //FIXME |
0 | 67 } |
52 | 68 |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
69 void GrpObj::SetPos(int index, int x, int y) { |
0 | 70 if (index < 0 || index > 8) { |
71 fprintf(stderr,"GrpObj::SetPos: Invalid index %d <- %d,%d\n",index,x,y); | |
72 return; | |
73 } | |
74 if (x == posx[index] && y == posy[index]) return; | |
75 attr = Attribute(attr | UPDATE_POS); | |
76 _posx += x-posx[index]; | |
77 _posy += y-posy[index]; | |
78 posx[index] = x; | |
79 posy[index] = y; | |
80 } | |
52 | 81 |
0 | 82 void GrpObj::GetPos(int index, int& x, int& y) { |
83 if (index < 0 || index > 8) { | |
84 fprintf(stderr,"GrpObj::GetPos: Invalid index %d\n",index); | |
85 x = 0; y = 0; | |
86 return; | |
87 } | |
88 x = posx[index]; | |
89 y = posy[index]; | |
90 } | |
52 | 91 |
0 | 92 void GrpObj::SetAlpha(int new_alpha) { |
93 if (alpha == new_alpha) return; | |
94 alpha = new_alpha; | |
95 attr = Attribute(attr | UPDATE_ALPHA); | |
96 return; | |
97 } | |
52 | 98 |
0 | 99 void GrpObj::SetSurfaceNum(int num) { |
100 if (num != -1) { | |
101 if (surface_num == num) return; | |
102 surface_num = num; | |
103 } | |
104 attr = Attribute(attr | UPDATE_SNUM); | |
105 } | |
106 | |
107 void GrpObj::SetClipArea(int x, int y, int w, int h) { | |
108 Rect new_clip(x,y,x+w,y+h); | |
109 if (clip_area == new_clip) return; | |
110 clip_area = new_clip; | |
111 attr = Attribute(attr | UPDATE_CLIP); | |
112 } | |
52 | 113 |
0 | 114 PicBase* GrpObj::DeletePic(void) { |
115 PicBase* p = picture; | |
55 | 116 anm = NULL; |
117 picture = NULL; | |
0 | 118 src_pos.clear(); |
55 | 119 attr = Attribute(attr & HIDDEN); |
0 | 120 return p; |
121 } | |
52 | 122 |
0 | 123 void GrpObj::GetSrcGeom(int& width, int& height) { |
124 if (src_pos.empty()) { | |
125 width = 0; height = 0; | |
126 if (name.length() == 0) { | |
127 return; | |
128 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
129 /* ボタンの位置情報を求める */ |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
130 /* g00 ファイルのヘッダ部分に位置情報は入っている */ |
0 | 131 string path(name); |
132 path += ".g00"; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
133 ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, path.c_str(), "g00"); |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
134 if (info == NULL) { // ファイルが見つからない |
52 | 135 fprintf(stderr, "GrpObj::GetSrcGeom : Cannot find file %s\n", path.c_str()); |
0 | 136 return; |
137 } | |
138 const char* data = info->Read(); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
139 if (data != NULL && *data == 2) { // 画像ファイル内にボタン情報が存在する |
0 | 140 int srclen = read_little_endian_int(data+5); |
141 int i; | |
142 for (i=0; i<srclen; i++) { | |
143 int x1 = read_little_endian_int(data+9+i*24+0); | |
144 int y1 = read_little_endian_int(data+9+i*24+4); | |
145 int x2 = read_little_endian_int(data+9+i*24+8); | |
146 int y2 = read_little_endian_int(data+9+i*24+12); | |
147 src_pos.push_back(Rect(x1, y1, x2+1, y2+1)); | |
148 if (width < src_pos.back().width()) width = src_pos.back().width(); | |
149 if (height < src_pos.back().height()) height = src_pos.back().height(); | |
150 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
151 } else { // 画像ファイルから大きさ取得 |
0 | 152 width = read_little_endian_short(data+1); |
153 height = read_little_endian_short(data+3); | |
154 src_pos.push_back(Rect(0,0,width,height)); | |
155 } | |
156 delete info; | |
157 } | |
158 int sn = surface_num; | |
159 if (sn < 0 || sn > src_pos.size()) sn = 0; | |
160 width = src_pos[sn].width(); | |
161 height = src_pos[sn].height(); | |
162 } | |
52 | 163 |
0 | 164 void GrpObj::Update(void) { |
165 if (attr & UPDATE_PICTURE) { | |
166 UpdateSurface(); | |
167 attr = Attribute( (attr | UPDATE_ALL) & (~UPDATE_PICTURE)); | |
168 } | |
55 | 169 if (picture == NULL) return; |
0 | 170 if (attr & UPDATE_POS) { |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
171 if (zoom != -1) { |
0 | 172 int w=0, h=0; |
173 GetSrcGeom(w,h); | |
174 picture->Move(_posx-w/2, _posy-h/2); | |
175 } else { | |
176 picture->Move(_posx, _posy); | |
177 } | |
178 } | |
179 if (attr & UPDATE_ALPHA) { | |
180 if (alpha <= 0) { | |
181 picture->SetSurfaceAlpha(0, Rect(0,0)); | |
182 picture->hide(); | |
183 } else if (alpha >= ALPHA_MAX) { | |
184 picture->SetSurfaceAlpha(0, Rect(0,0)); | |
185 if (attr & HIDDEN) picture->hide(); | |
186 else picture->show(); | |
187 } else { | |
188 picture->SetSurfaceAlpha(&alpha, Rect(0,0,1,1)); | |
189 if (attr & HIDDEN) picture->hide(); | |
190 else picture->show(); | |
191 } | |
192 } | |
193 if ( (attr & UPDATE_SNUM) && (!src_pos.empty())) { | |
194 if (surface_num < 0 || surface_num >= src_pos.size()) surface_num = 0; | |
195 picture->SetSurfacePos(src_pos[surface_num].lx, src_pos[surface_num].ty); | |
196 } | |
197 if (attr & UPDATE_CLIP) { | |
198 picture->SetClipArea(clip_area); | |
199 } | |
200 attr = Attribute(attr & (~UPDATE_ALL)); | |
201 if (attr & ANM_PLAYSTART) { | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
202 if (anm != NULL) { |
0 | 203 anm->Play(); |
204 attr = Attribute(attr | ANM_PLAYING); | |
205 } | |
206 attr = Attribute(attr & (~ANM_PLAYSTART)); | |
207 } | |
208 } | |
52 | 209 |
0 | 210 void GrpObj::CreateSurface(PicContainer* parent) { |
52 | 211 if (picture != NULL) { |
0 | 212 PicBase* p = DeletePic(); |
213 delete p; | |
214 } | |
215 src_pos.clear(); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
216 // picture を作成 |
0 | 217 pic_parent = parent; |
218 picture = parent->create_leaf(Rect(_posx,_posy,_posx+1,_posy+1), 0); | |
219 picture->hide(); | |
220 UpdateSurface(); | |
221 } | |
222 | |
223 void GrpObj::UpdateSurface(void) { | |
52 | 224 if (pic_parent == NULL || picture == NULL) return; |
0 | 225 int width = 0, height = 0; |
226 if (gtype == FILE || gtype == GAN) { | |
227 if (name.length() == 0) return; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
228 // ファイル名が存在する場合、ファイルを読み込み |
0 | 229 GetSrcGeom(width, height); |
230 if (width <= 0 || height <= 0) return; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
231 // surface の設定 |
0 | 232 if (surface_num == 0 && ( (zoom > 0 && zoom != 256) || rotate > 0)) { |
233 ZoomRotate(); | |
234 } else { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
235 // 普通に surface を設定 |
0 | 236 string path(name); |
237 path += ".g00"; | |
238 picture->SetSurface(path.c_str(), 0, 0); | |
239 picture->SetSurfaceRect(Rect(0,0,width,height)); | |
240 } | |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
241 if (attr & BLIT_ADD) |
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
242 picture->SetSurfaceAttribute(PicBase::BLIT_ADD); |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
243 } else if (gtype == MOJI) { // テキスト描画 |
0 | 244 if (print_moji.length() == 0) return; |
245 UpdateMoji(); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
246 } else if (gtype == DIGIT) { // 数値を画像表示 |
0 | 247 UpdateDigit(); |
248 } | |
249 } | |
52 | 250 |
0 | 251 void GrpObj::ZoomRotate(void) { |
52 | 252 picture->SetSurface( (Surface*)0, 0, 0); |
0 | 253 |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
254 // 回転、縮小拡大は座標原点が画像の中心になる |
0 | 255 string path(name); |
256 path += ".g00"; | |
257 Surface* surface_orig = pic_parent->Root().NewSurface(path.c_str()); | |
52 | 258 if (surface_orig == NULL) return; |
0 | 259 |
260 Surface* zoom_surface = pic_parent->Root().RotZoomSurface(surface_orig, double(zoom)/256.0, rotate); | |
261 Rect zoom_r (*zoom_surface); | |
262 picture->SetSurface(zoom_surface, 0, 0); | |
263 picture->SetSurfaceFreeFlag(); | |
264 //picture->Move(PosX() + - zoom_r.width()/2, PosY() + - zoom_r.height()/2); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
265 // 中心座標がわからん・・・ |
0 | 266 picture->Move(320 - zoom_r.width()/2, 240 - zoom_r.height()/2); |
267 picture->SetSurfaceRect(Rect(0, 0, zoom_r.width(), zoom_r.height())); | |
268 | |
269 pic_parent->Root().DeleteSurface(surface_orig); | |
270 } | |
271 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
272 void GrpObj::UpdateMoji(void) { // 文字の大きさ、色などを変更 |
14
8da1d92ac8f8
Don't create fonts faces for size <= 0, and update objects when their font size is set
thib
parents:
11
diff
changeset
|
273 if (print_moji.length() == 0 || print_size <= 2) return; |
0 | 274 if (pic_parent == 0) return; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
275 /* テキストの大きさを得る */ |
0 | 276 int r, g, b; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
277 if (print_r == -1 || print_g == -1 || print_b == -1) {// 色設定なし |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
278 r = g = b = 0; // とりあえず黒(clannad のSave/Loadメニュー用) |
0 | 279 } else { |
280 r = print_r; | |
281 g = print_g; | |
282 b = print_b; | |
283 } | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
284 TextStream ts = TextStream::ParseMoji(print_moji.c_str(), r, g, b, print_size); |
0 | 285 TextGlyphStream gs; |
286 vector<int> lh; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
287 // とりあえず drawable width は充分に大きく(2048)取る |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
288 DefaultLayout(print_size-2)->Layout(ts, gs, lh, 2048); // print_size そのままだと弱干大きすぎるので -2 |
0 | 289 int width = gs.width(); |
290 int height = gs.height(); | |
291 Surface* surface = pic_parent->Root().NewSurface(width, height, ALPHA_MASK); | |
292 DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); | |
293 DSurfaceRenderText(gs.begin(), gs.end(), Rect(0, 0, width, height), surface, Rect(0,0)); | |
294 picture->SetSurface(surface, 0, 0); | |
295 picture->SetSurfaceRect(Rect(0,0,width,height)); | |
296 picture->SetSurfaceFreeFlag(); | |
297 } | |
52 | 298 |
0 | 299 void GrpObj::UpdateDigit(void) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
300 // 画像表示の数値文字列を表示する |
0 | 301 if (name.length() == 0) return; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
302 // ファイル名が存在する場合、ファイルを読み込み |
0 | 303 string path(name); |
304 path += ".g00"; | |
305 Surface* surface_orig = pic_parent->Root().NewSurface(path.c_str()); | |
52 | 306 if (surface_orig == NULL) return; |
0 | 307 |
308 int width, height; | |
309 int i; | |
310 GetSrcGeom(width, height); | |
311 if (width <= 0 || height <= 0) return; | |
312 if (src_pos.size() < 14) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
313 // 必要な数の object がない |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
314 // 表示できない分の空の rect を追加しておく |
0 | 315 for (i=src_pos.size(); i<14; i++) |
316 src_pos.push_back(Rect(0,0,0,0)); | |
317 pic_parent->Root().DeleteSurface(surface_orig); | |
318 return; | |
319 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
320 // 桁数の計算 |
0 | 321 char num_str[20]; |
322 if (dig_number < 0) sprintf(num_str, "%d", -dig_number); | |
323 else sprintf(num_str, "%d", dig_number); | |
324 int sign_count = 0; | |
325 int space_count = 0; | |
326 int total_count; | |
327 int dig_count = strlen(num_str); | |
328 if (dig_number < 0 && (attr&DIG_SIGN) == 0) dig_count++; | |
329 if (dig_count < dig_digit) space_count = dig_digit - dig_count; | |
330 if (attr & DIG_SIGN) sign_count = 1; | |
331 total_count = dig_count + space_count + sign_count; | |
332 | |
333 Surface* surface = pic_parent->Root().NewSurface(width*total_count, height, ALPHA_MASK); | |
334 DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); | |
335 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
336 /* surface にコピーする */ |
0 | 337 int cur_x = 0; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
338 if ( (attr & DIG_PACK) && !(attr & DIG_ZERO)) { // 始めに空白を挿入 |
0 | 339 cur_x += space_count * width; |
340 } | |
341 int plus = 10, minus = 11, plusminus = 12; | |
342 if (dig_number < 0) { | |
343 DSurfaceMove(surface, src_pos[minus], surface, Rect(cur_x,0)); | |
344 cur_x += width; | |
345 } else if (attr & DIG_SIGN) { | |
346 if (dig_number == 0) | |
347 DSurfaceMove(surface, src_pos[plusminus], surface, Rect(cur_x,0)); | |
348 else | |
349 DSurfaceMove(surface, src_pos[plus], surface, Rect(cur_x,0)); | |
350 cur_x += width; | |
351 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
352 if (attr & DIG_ZERO) { // ゼロ・パディング |
0 | 353 for (i=0; i<space_count; i++) { |
354 DSurfaceMove(surface, src_pos[0], surface, Rect(cur_x, 0)); | |
355 cur_x += width;; | |
356 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
357 } else if (!(attr & DIG_PACK)) { // PACK オプションなし |
0 | 358 cur_x += space_count * width; |
359 } | |
360 for (i=0; num_str[i] != 0; i++) { | |
361 DSurfaceMove(surface_orig, src_pos[num_str[i]-'0'], surface, Rect(cur_x, 0)); | |
362 cur_x += width; | |
363 } | |
364 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
365 /* picture に設定 */ |
0 | 366 picture->SetSurface(surface, 0, 0); |
367 picture->SetSurfaceRect(Rect(0,0,width*total_count,height)); | |
368 picture->SetSurfaceFreeFlag(); | |
369 | |
370 pic_parent->Root().DeleteSurface(surface_orig); | |
371 } | |
52 | 372 |
0 | 373 void GrpObj::CreateGan(Event::Container& event, int event_number) { |
52 | 374 if (picture == NULL) { |
0 | 375 fprintf(stderr,"GrpObj::CreateGan() is called before Create()\n"); |
376 return; | |
377 } | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
378 if (anm != NULL) { |
0 | 379 anm->Abort(); |
380 delete anm; | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
381 anm = NULL; |
0 | 382 } |
383 if (gan_name.empty()) return; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
384 /* アニーメション情報 (.GAN ファイル)を求める */ |
0 | 385 string path(gan_name); |
386 path += ".gan"; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
387 ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::GAN, path.c_str(), "gan"); |
52 | 388 if (info == NULL) { |
0 | 389 fprintf(stderr,"GrpObj::CreateGan: Cannot Find 'GAN' file %s\n", path.c_str()); |
390 return; | |
391 } | |
392 const char* data = info->Read(); | |
393 if (read_little_endian_int(data) != 10000 || read_little_endian_int(data+4) != 10000) { | |
394 fprintf(stderr,"GrpObj::CreateGan: Invalid'GAN' file %s\n", path.c_str()); | |
395 delete info; | |
396 return; | |
397 } | |
398 | |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
399 attr = Attribute(attr | UPDATE_POS); |
0 | 400 |
401 const char* buf = data + 16; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
402 buf += strlen(buf) + 1; // 画像ファイル名が入っている |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
403 buf += 4; // 定数 20000 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
404 int pics = read_little_endian_int(buf); buf += 4; // 複数のアニメーション情報が入っている場合、情報数 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
405 // 以下、pics 回繰り返し |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
406 // アニメーションを行う実体を作成 |
0 | 407 AnmAlphaMove* wid = new AnmAlphaMove(event, picture); |
408 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
409 if (event_number && event_number < pics) { // 複数のアニメーション情報がある場合、先の情報を読み飛ばす */ |
0 | 410 int i; for (i=0; i<event_number; i++) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
411 buf += 4; // 定数 30000 |
0 | 412 int ptns = read_little_endian_int(buf); buf += 4; |
413 buf += ptns*52; | |
414 } | |
415 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
416 buf += 4; // 定数 30000 |
0 | 417 int ptns = read_little_endian_int(buf); buf += 4; |
418 int total_time = 0; | |
419 int i; | |
420 for (i=0; i<ptns; i++) { | |
421 int p = read_little_endian_int(buf+i*52+0*8+4); | |
422 int x = read_little_endian_int(buf+i*52+1*8+4); | |
423 int y = read_little_endian_int(buf+i*52+2*8+4); | |
424 int t = read_little_endian_int(buf+i*52+3*8+4); | |
425 int a = read_little_endian_int(buf+i*52+4*8+4); | |
426 x += PosX(); | |
427 y += PosY(); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
428 if (p == -1) { a = 0; p = 0; } // p == -1 ならなにも表示しない |
0 | 429 if (p >= src_pos.size()) { |
430 fprintf(stderr,"Reading GAN file %s (G00 %s) : not enough pictures in .G00 file\n", path.c_str(), name.c_str()); | |
431 a = 0; p = 0; | |
432 } | |
433 total_time += t; | |
434 wid->ptns.push_back(AnmAlphaMove::Ptn(Rect(x,y), src_pos[p], a, total_time)); | |
435 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
436 wid->SetPtn(); // パターン登録終了 |
0 | 437 attr = Attribute(attr | ANM_PLAYSTART); |
438 anm = wid; | |
52 | 439 } |
440 | |
0 | 441 void GrpObj::CreateGanSpecial(Event::Container& event, int event_number, int time) { |
52 | 442 if (picture == NULL) { |
0 | 443 fprintf(stderr,"GrpObj::CreateGan() is called before Create()\n"); |
444 return; | |
445 } | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
446 if (anm != NULL) { |
0 | 447 anm->Abort(); |
448 delete anm; | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
449 anm = NULL; |
0 | 450 } |
451 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
452 // アニメーションを行う実体を作成 |
0 | 453 AnmAlphaMove* wid = new AnmAlphaMove(event, picture); |
454 | |
455 int i; | |
456 switch(event_number) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
457 case 0: // pattern を 0 から最後まで変化させる |
52 | 458 for (i=0; i<src_pos.size(); i++) { |
459 wid->ptns.push_back(AnmAlphaMove::Ptn(Rect(PosX(), PosY()), src_pos[i], 255, time*i)); | |
460 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
461 wid->SetPtn(); // パターン登録終了 |
52 | 462 anm = wid; |
463 attr = Attribute(attr | ANM_PLAYSTART); | |
464 break; | |
465 default: | |
466 break; | |
0 | 467 } |
52 | 468 } |
0 | 469 |
470 void GrpObj::SetZoomRotate(int new_zoom, int new_rotate) { | |
471 if (zoom == new_zoom && rotate == new_rotate) return; | |
18 | 472 if ( zoom == -1 || new_zoom == -1) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
473 attr = Attribute(attr | UPDATE_POS); // centering する |
18 | 474 } |
475 zoom = new_zoom; | |
0 | 476 if (new_rotate != -1) rotate = new_rotate; |
477 if (zoom < 0) zoom = 256; | |
478 if (rotate < 0) rotate = 0; | |
479 else if (rotate > 360) rotate %= 360; | |
480 | |
481 attr = Attribute(attr | UPDATE_PICTURE); | |
482 } | |
55 | 483 |
484 void GrpObj::Refresh(GrpObj& parent_obj) { | |
485 //if (&parent_obj != this) printf("Toto\n"); //FIXME | |
486 | |
487 GrpObjMap::iterator it; | |
488 | |
489 for (it = children_obj.begin(); it != children_obj.end(); it++) | |
490 it->second.Refresh(parent_obj); | |
491 | |
492 if (picture == NULL) return; | |
493 if (alpha == 0 || (attr & GrpObj::HIDDEN) || (parent_obj.attr & GrpObj::HIDDEN)) { | |
494 if (attr & GrpObj::ANM_PLAYING) { | |
495 attr = GrpObj::Attribute(attr & ~(GrpObj::ANM_PLAYING)); | |
496 if (anm != NULL) anm->Abort(); | |
497 } | |
498 picture->hide(); | |
499 } else { | |
500 Update(); | |
501 picture->show(); | |
502 } | |
503 } | |
504 | |
505 void GrpObj::_debug_Dump(int id, int indent) | |
506 { | |
507 const char* repr; | |
508 | |
509 if (indent == 0) | |
510 repr = "obj %04d(%p): name %10s pos %d,%d alpha %d (%d/%d/%d)\n"; | |
511 else | |
512 repr = " * obj %04d(%p): name %10s pos %d,%d alpha %d (%d/%d/%d)\n"; | |
513 | |
514 if (picture != NULL) { | |
515 if (!name.empty()) | |
516 fprintf(stderr, repr, | |
517 id, this, name.c_str(), PosX(), PosY(), alpha, attr&GrpObj::HIDDEN ? 1 : 0, 0, | |
518 picture->IsHidden()); | |
519 else if (!print_moji.empty()) | |
520 fprintf(stderr, repr, | |
521 id, this, print_moji.c_str(), PosX(), PosY(), alpha, attr&GrpObj::HIDDEN ? 1 : 0, | |
522 0, picture->IsHidden()); | |
523 else | |
524 fprintf(stderr, repr, | |
525 id, this, "<EMPTY>", PosX(), PosY(), alpha, attr&GrpObj::HIDDEN ? 1 : 0, 0, | |
526 picture->IsHidden()); | |
527 } | |
528 | |
529 GrpObjMap::iterator it; | |
530 for (it = children_obj.begin(); it != children_obj.end(); it++) | |
531 it->second._debug_Dump(it->first, indent+1); | |
532 } | |
533 | |
0 | 534 /****************************************************************** |
535 ** | |
536 ** class ScnGrp* | |
537 */ | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
538 /* Princess Bride: 背景画の一部のみ移動、の実装 */ |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
539 |
0 | 540 ScnGrpMove::ScnGrpMove(Event::Container& container, PicBase* _pic, PicRoot& _root, Surface* _dest, const Rect& _dest_r, Surface* _src, const Rect& _from, const Rect& _to, int total_time) : |
541 WidAnmTime(container, _pic, total_time), | |
542 dest(_dest), src(_src), root(_root),dest_r(_dest_r), from(_from), to(_to) { | |
543 int dx = to.lx - from.lx; | |
544 int dy = to.ty - from.ty; | |
545 if (dx < 0) dx = -dx; | |
546 if (dy < 0) dy = -dy; | |
547 if (dx < dy) dx = dy; | |
548 if (dx == 0) dx = 1; | |
549 SetAllCount(dx); | |
550 } | |
52 | 551 |
0 | 552 void ScnGrpMove::Exec(int count) { |
553 Rect r(0,0,dest_r.width(),dest_r.height()); | |
554 int dx = to.lx - from.lx; | |
555 int dy = to.ty - from.ty; | |
556 int x = dx*count/all_count + from.lx; | |
557 int y = dy*count/all_count + from.ty; | |
558 r.rmove(x, y); | |
559 root.BlitSurface(src, r, dest, dest_r); | |
560 iterator it; | |
561 for (it=pic.begin(); it!=pic.end(); it++) | |
562 (*it)->SetSurface(dest, 0, 0); | |
563 } | |
564 | |
565 void ScnGrpAnm::CalcTotal(void) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
566 /* total time を計算 */ |
0 | 567 if (empty()) return; |
568 int tm = 0; | |
569 vector<ScnGrpAnmAtom>::iterator it; | |
570 for (it=begin(); it != end(); it++) tm += it->time; | |
571 total_time = tm; | |
572 SetAllCount(tm); | |
573 } | |
52 | 574 |
0 | 575 void ScnGrpAnm::Exec(int count) { |
576 int tm = 0; vector<ScnGrpAnmAtom>::iterator it; | |
577 for (it=begin(); it != end(); it++) { | |
578 tm += it->time; | |
579 if (count < tm) break; | |
580 } | |
581 if (it == end()) it--; | |
582 owner.LoadSurface(it->name.c_str(), 0); | |
583 } | |
584 | |
585 | |
586 /***************************************************** | |
587 * | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
588 * Grp |
0 | 589 * |
590 */ | |
591 | |
52 | 592 #include "music2/music.h" |
0 | 593 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
594 Grp::Grp(Event::Container& _event, PicContainer& _parent, const Flags& f, set<int>& _cgm_data): |
0 | 595 event(_event), |
596 flags(f), | |
597 parent(_parent), | |
598 status(NORMAL), | |
599 skip_mode(SKIP_NO), | |
55 | 600 cgm_data(_cgm_data) |
0 | 601 { |
602 int i; | |
603 for (i=0; i<MAXPDT; i++) { | |
604 ssurface[i] = 0; | |
605 dsurface[i] = 0; | |
606 } | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
607 |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
608 music = MuSys::GetInstance(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
609 config = AyuSysConfig::GetInstance(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
610 |
0 | 611 screen = parent.create_leaf(Rect(0, 0, parent.Width(), parent.Height()), 0); |
612 screen_front = parent.create_leaf(Rect(0, 0, parent.Width(), parent.Height()), 0); | |
613 surface = parent.Root().NewSurface(parent.Width(), parent.Height(), NO_MASK); | |
614 surface_update = parent.Root().NewSurface(parent.Width(), parent.Height(), NO_MASK); | |
615 DSurfaceFill(surface, Rect(*surface), 0, 0, 0); | |
616 DSurfaceFill(surface_update, Rect(*surface), 0, 0, 0); | |
617 screen->SetSurface(surface, 0, 0); | |
618 screen->show(); | |
619 screen_front->hide(); | |
620 screen_front->ZMove(screen); | |
621 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
622 LoadCgm(); |
0 | 623 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
624 RegisterCommand(1, 30, 0, "stackClear", (CmdImpl) &Grp::impl_stackClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
625 RegisterCommand(1, 33, 70, "grpBuffer", (CmdImpl) &Grp::impl_grpBuffer); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
626 RegisterCommand(1, 33, 73, "grpOpenBG", (CmdImpl) &Grp::impl_grpOpen); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
627 RegisterCommand(1, 33, 75, "grpMulti", (CmdImpl) &Grp::impl_grpMulti); //FIXME: or not... |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
628 RegisterCommand(1, 33, 76, "grpOpen", (CmdImpl) &Grp::impl_grpOpen); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
629 RegisterCommand(1, 33, 32, "shake", (CmdImpl) &Grp::impl_shake); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
630 RegisterCommand(1, 33, 100, "grpCopy", (CmdImpl) &Grp::impl_grpCopy); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
631 RegisterCommand(1, 33, 1201, "recFill", (CmdImpl) &Grp::impl_recFill); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
632 RegisterCommand(1, 33, 1100, "recCopy", (CmdImpl) &Grp::impl_recCopy); |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
633 RegisterCommand(1, 33, 1101, "recMaskCopy", NULL); //TODO: Same thing as recCopy, but using source's alpha |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
634 RegisterCommand(1, 33, 1600, "recAdd", (CmdImpl) &Grp::impl_recAdd); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
635 RegisterCommand(1, 33, 406, "grpPan", (CmdImpl) &Grp::impl_grpPan); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
636 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
637 RegisterCommand(1, 34, 3120, "snmBgScroll", (CmdImpl) &Grp::impl_snmBgScroll); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
638 RegisterCommand(1, 34, 3100, "snmBgPlay", (CmdImpl) &Grp::impl_snmPlay); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
639 RegisterCommand(1, 34, 2100, "snmPlay", (CmdImpl) &Grp::impl_snmPlay); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
640 RegisterCommand(1, 34, 2101, "snmPlayEx", (CmdImpl) &Grp::impl_snmPlay); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
641 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
642 RegisterCommand(1, 4, 1500, "cgGetTotal", (CmdImpl) &Grp::impl_cgGet); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
643 RegisterCommand(1, 4, 1501, "cgGetViewed", (CmdImpl) &Grp::impl_cgGet); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
644 RegisterCommand(1, 4, 1502, "cgGetViewedPcnt", (CmdImpl) &Grp::impl_cgGet); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
645 RegisterCommand(1, 4, 1503, "cgGetFlag", (CmdImpl) &Grp::impl_cgStatus); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
646 RegisterCommand(1, 4, 1504, "cgStatus", (CmdImpl) &Grp::impl_cgStatus); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
647 |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
648 RegisterCommand(1, 4, 0x6a4, "CreateInput", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
649 RegisterCommand(1, 4, 0x6ae, "SetInput", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
650 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
651 RegisterCommand(1, 61, 10, "objClear", (CmdImpl) &Grp::impl_objClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
652 RegisterCommand(1, 61, 11, "objDelete", (CmdImpl) &Grp::impl_objClear); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
653 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
654 RegisterCommand(1, 71, 1000, "objOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
655 RegisterCommand(1, 71, 1003, "objOfFileGan", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
656 RegisterCommand(1, 71, 1100, "objOfArea", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
657 RegisterCommand(1, 71, 1200, "objOfText", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
658 RegisterCommand(1, 71, 1300, "objDriftOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
659 RegisterCommand(1, 71, 1400, "objOfDigits", (CmdImpl) &Grp::impl_createObj); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
660 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
661 RegisterCommand(2, 71, 1000, "subObjOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
662 RegisterCommand(2, 71, 1003, "subObjOfGan", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
663 RegisterCommand(2, 71, 1100, "subObjOfArea", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
664 RegisterCommand(2, 71, 1200, "subObjOfText", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
665 RegisterCommand(2, 71, 1300, "subObjDriftOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
666 RegisterCommand(2, 71, 1400, "subObjOfDigits", (CmdImpl) &Grp::impl_createObj); |
55 | 667 |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
668 //I suppose it's the same thing as createObj*, but I didn't see it in action. For now, mark it unhandled. |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
669 RegisterCommand(1, 72, 1000, "objBgOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
670 RegisterCommand(1, 72, 1003, "objBgOfFileGan", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
671 RegisterCommand(1, 72, 1100, "objBgOfArea", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
672 RegisterCommand(1, 72, 1200, "objBgOfText", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
673 RegisterCommand(1, 72, 1300, "objBgDriftOfFile", (CmdImpl) &Grp::impl_createObj); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
674 RegisterCommand(1, 72, 1400, "objBgOfDigits", (CmdImpl) &Grp::impl_createObj); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
675 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
676 RegisterCommand(2, 72, 1000, "subObjBgOfFile", NULL);//FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
677 RegisterCommand(2, 72, 1003, "subObjBgOfGan", NULL);//FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
678 RegisterCommand(2, 72, 1100, "subObjBgOfArea", NULL);//FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
679 RegisterCommand(2, 72, 1200, "subObjBgOfText", NULL);//FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
680 RegisterCommand(2, 72, 1300, "subObjBgDriftOfFile", NULL);//FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
681 RegisterCommand(2, 72, 1400, "subObjBgOfDigits", NULL);//FIXME; |
55 | 682 |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
683 RegisterCommand(1, 73, 0, "ganStop?", NULL); //That's what xclannad says, but I'm not sure... |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
684 RegisterCommand(1, 73, 1000, "ganStop", (CmdImpl) &Grp::impl_gan); //That's what rldev says |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
685 RegisterCommand(1, 73, 3, "ganIsPlaying", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
686 RegisterCommand(1, 73, 2003, "objPlay", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
687 RegisterCommand(1, 73, 1001, "ganLoop", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
688 RegisterCommand(1, 73, 1003, "ganPlay", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
689 RegisterCommand(1, 73, 1005, "ganPlayOnce", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
690 RegisterCommand(1, 73, 3001, "ganLoop2", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
691 RegisterCommand(1, 73, 3003, "ganPlay2", (CmdImpl) &Grp::impl_gan); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
692 RegisterCommand(1, 73, 3005, "ganPlayOnce2", (CmdImpl) &Grp::impl_gan); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
693 |
55 | 694 RegisterCommand(2, 73, 0, "ganSubStop?", NULL); //FIXME |
695 RegisterCommand(2, 73, 1000, "ganSubStop", NULL); //FIXME | |
696 RegisterCommand(2, 73, 3, "ganSubIsPlaying", NULL); //FIXME | |
697 RegisterCommand(2, 73, 2003, "objSubPlay", NULL); //FIXME | |
698 RegisterCommand(2, 73, 1001, "ganSubLoop", NULL); //FIXME | |
699 RegisterCommand(2, 73, 1003, "ganSubPlay", NULL); //FIXME | |
700 RegisterCommand(2, 73, 1005, "ganSubPlayOnce", NULL); //FIXME | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
701 RegisterCommand(2, 73, 3001, "ganSubLoop2", (CmdImpl) &Grp::impl_gan); //FIXME |
55 | 702 RegisterCommand(2, 73, 3003, "ganSubPlay2", NULL); //FIXME |
703 RegisterCommand(2, 73, 3005, "ganSubPlayOnce2", NULL); //FIXME | |
704 | |
705 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
706 RegisterCommand(1, 81, 1000, "objMove", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
707 RegisterCommand(1, 82, 1000, "objBgMove", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
708 RegisterCommand(1, 81, 1001, "objLeft", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
709 RegisterCommand(1, 82, 1001, "objBgLeft", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
710 RegisterCommand(1, 81, 1002, "objTop", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
711 RegisterCommand(1, 82, 1002, "objBgTop", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
712 RegisterCommand(1, 81, 1003, "objAlpha", (CmdImpl) &Grp::impl_objAlpha); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
713 RegisterCommand(1, 82, 1003, "objBgAlpha", (CmdImpl) &Grp::impl_objAlpha); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
714 RegisterCommand(1, 81, 1004, "objShow", (CmdImpl) &Grp::impl_objShow); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
715 RegisterCommand(1, 82, 1004, "objBgShow", (CmdImpl) &Grp::impl_objShow); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
716 RegisterCommand(1, 81, 1005, "objDispArea", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
717 RegisterCommand(1, 82, 1005, "objBgDispArea", NULL); |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
718 RegisterCommand(1, 81, 1006, "objAdjust", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
719 RegisterCommand(1, 82, 1006, "objBgAdjust", NULL); //FIXME: (CmdImpl) &Grp::impl_objSetPos); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
720 RegisterCommand(1, 81, 1007, "objAdjustX", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
721 RegisterCommand(1, 82, 1007, "objBgAdjustX", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
722 RegisterCommand(1, 81, 1008, "objAdjustY", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
723 RegisterCommand(1, 82, 1008, "objBgAdjustY", NULL); |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
724 RegisterCommand(1, 81, 2006, "objAdjust2?", NULL); //FIXME: (CmdImpl) &Grp::impl_objSetPos); I don't know if it is usefull or properly implemented |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
725 RegisterCommand(1, 82, 2006, "objBgAdjust2?", NULL); //FIXME: (CmdImpl) &Grp::impl_objSetPos); See above |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
726 RegisterCommand(1, 81, 1016, "objColour", NULL); //FIXME: (CmdImpl) &Grp::impl_objColour); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
727 RegisterCommand(1, 82, 1016, "objBgColour", NULL); //FIXME: (CmdImpl) &Grp::impl_objColour); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
728 RegisterCommand(1, 81, 1017, "objColR", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
729 RegisterCommand(1, 82, 1017, "objBgColR", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
730 RegisterCommand(1, 81, 1018, "objColG", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
731 RegisterCommand(1, 82, 1018, "objBgColG", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
732 RegisterCommand(1, 81, 1019, "objColB", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
733 RegisterCommand(1, 82, 1019, "objBgColB", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
734 RegisterCommand(1, 81, 1020, "objColLevel", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
735 RegisterCommand(1, 82, 1020, "objBgColLevel", NULL); |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
736 RegisterCommand(1, 81, 1021, "objComposite", (CmdImpl) &Grp::impl_objComposite); //FIXME: May be broken |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
737 RegisterCommand(1, 82, 1021, "objBgComposite", (CmdImpl) &Grp::impl_objComposite); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
738 RegisterCommand(1, 81, 1024, "objSetText", (CmdImpl) &Grp::impl_objSetText); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
739 RegisterCommand(1, 82, 1024, "objBgSetText", (CmdImpl) &Grp::impl_objSetText); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
740 RegisterCommand(1, 81, 1025, "objTextOpts", (CmdImpl) &Grp::impl_objTextOpts); //FIXME: Incomplete |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
741 RegisterCommand(1, 82, 1025, "objBgTextOpts", (CmdImpl) &Grp::impl_objTextOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
742 RegisterCommand(1, 81, 1032, "objOrder", (CmdImpl) &Grp::impl_objOrder); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
743 RegisterCommand(1, 82, 1032, "objBgOrder", (CmdImpl) &Grp::impl_objOrder); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
744 RegisterCommand(1, 81, 1034, "objDispRect", (CmdImpl) &Grp::impl_objDispArea); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
745 RegisterCommand(1, 82, 1034, "objBgDispRect", (CmdImpl) &Grp::impl_objDispArea); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
746 RegisterCommand(1, 81, 1037, "objSetDigits", (CmdImpl) &Grp::impl_objSetDigits); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
747 RegisterCommand(1, 82, 1037, "objBgSetDigits", (CmdImpl) &Grp::impl_objSetDigits); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
748 RegisterCommand(1, 81, 1038, "objNumOpts", (CmdImpl) &Grp::impl_objNumOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
749 RegisterCommand(1, 82, 1038, "objBgNumOpts", (CmdImpl) &Grp::impl_objNumOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
750 RegisterCommand(1, 81, 1039, "objPattNo", (CmdImpl) &Grp::impl_objPattNo); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
751 RegisterCommand(1, 82, 1039, "objBgPattNo", (CmdImpl) &Grp::impl_objPattNo); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
752 RegisterCommand(1, 81, 1046, "objScale", (CmdImpl) &Grp::impl_objScale); //FIXME: Broken behaviour |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
753 RegisterCommand(1, 82, 1046, "objBgScale", (CmdImpl) &Grp::impl_objScale); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
754 RegisterCommand(1, 81, 1047, "objWidth", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
755 RegisterCommand(1, 82, 1047, "objBgWidth", NULL); |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
756 RegisterCommand(1, 81, 1049, "objRotate", (CmdImpl) &Grp::impl_objRotate); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
757 RegisterCommand(1, 82, 1049, "objBgRotate", (CmdImpl) &Grp::impl_objRotate); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
758 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
759 RegisterCommand(2, 81, 1000, "childObjMove", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
760 RegisterCommand(2, 82, 1000, "childObjBgMove", (CmdImpl) &Grp::impl_objSetPos); |
55 | 761 RegisterCommand(2, 81, 1001, "childObjLeft", NULL); |
762 RegisterCommand(2, 82, 1001, "childObjBgLeft", NULL); | |
763 RegisterCommand(2, 81, 1002, "childObjTop", NULL); | |
764 RegisterCommand(2, 82, 1002, "childObjBgTop", NULL); | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
765 RegisterCommand(2, 81, 1003, "childObjAlpha", (CmdImpl) &Grp::impl_objAlpha); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
766 RegisterCommand(2, 82, 1003, "childObjBgAlpha", (CmdImpl) &Grp::impl_objAlpha); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
767 RegisterCommand(2, 81, 1004, "childObjShow", (CmdImpl) &Grp::impl_objShow); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
768 RegisterCommand(2, 82, 1004, "childObjBgShow", (CmdImpl) &Grp::impl_objShow); |
55 | 769 RegisterCommand(2, 81, 1005, "childObjDispArea", NULL); |
770 RegisterCommand(2, 82, 1005, "childObjBgDispArea", NULL); | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
771 RegisterCommand(2, 81, 1006, "childObjAdjust", (CmdImpl) &Grp::impl_objSetPos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
772 RegisterCommand(2, 82, 1006, "childObjBgAdjust", (CmdImpl) &Grp::impl_objSetPos); |
55 | 773 RegisterCommand(2, 81, 1007, "childObjAdjustX", NULL); |
774 RegisterCommand(2, 82, 1007, "childObjBgAdjustX", NULL); | |
775 RegisterCommand(2, 81, 1008, "childObjAdjustY", NULL); | |
776 RegisterCommand(2, 82, 1008, "childObjBgAdjustY", NULL); | |
777 RegisterCommand(2, 81, 2006, "childObjAdjust2?", NULL); | |
778 RegisterCommand(2, 82, 2006, "childObjBgAdjust2?", NULL); | |
779 RegisterCommand(2, 81, 1016, "childObjColour", NULL); | |
780 RegisterCommand(2, 82, 1016, "childObjBgColour", NULL); | |
781 RegisterCommand(2, 81, 1017, "childObjColR", NULL); | |
782 RegisterCommand(2, 82, 1017, "childObjBgColR", NULL); | |
783 RegisterCommand(2, 81, 1018, "childObjColG", NULL); | |
784 RegisterCommand(2, 82, 1018, "childObjBgColG", NULL); | |
785 RegisterCommand(2, 81, 1019, "childObjColB", NULL); | |
786 RegisterCommand(2, 82, 1019, "childObjBgColB", NULL); | |
787 RegisterCommand(2, 81, 1020, "childObjColLevel", NULL); | |
788 RegisterCommand(2, 82, 1020, "childObjBgColLevel", NULL); | |
789 RegisterCommand(2, 81, 1021, "childObjComposite", NULL); | |
790 RegisterCommand(2, 82, 1021, "childObjBgComposite", NULL); | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
791 RegisterCommand(2, 81, 1024, "childObjSetText", (CmdImpl) &Grp::impl_objSetText); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
792 RegisterCommand(2, 82, 1024, "childObjBgSetText", (CmdImpl) &Grp::impl_objSetText); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
793 RegisterCommand(2, 81, 1025, "childObjTextOpts", (CmdImpl) &Grp::impl_objTextOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
794 RegisterCommand(2, 82, 1025, "childObjBgTextOpts", (CmdImpl) &Grp::impl_objTextOpts); |
55 | 795 RegisterCommand(2, 81, 1032, "childObjOrder", NULL); |
796 RegisterCommand(2, 82, 1032, "childObjBgOrder", NULL); | |
797 RegisterCommand(2, 81, 1034, "childObjDispRect", NULL); | |
798 RegisterCommand(2, 82, 1034, "childObjBgDispRect", NULL); | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
799 RegisterCommand(2, 81, 1037, "childObjSetDigits", (CmdImpl) &Grp::impl_objSetDigits); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
800 RegisterCommand(2, 82, 1037, "childObjBgSetDigits", (CmdImpl) &Grp::impl_objSetDigits); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
801 RegisterCommand(2, 81, 1038, "childObjNumOpts", (CmdImpl) &Grp::impl_objNumOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
802 RegisterCommand(2, 82, 1038, "childObjBgNumOpts", (CmdImpl) &Grp::impl_objNumOpts); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
803 RegisterCommand(2, 81, 1039, "childObjPattNo", (CmdImpl) &Grp::impl_objPattNo); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
804 RegisterCommand(2, 82, 1039, "childObjBgPattNo", (CmdImpl) &Grp::impl_objPattNo); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
805 RegisterCommand(2, 81, 1046, "childObjScale", (CmdImpl) &Grp::impl_objScale); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
806 RegisterCommand(2, 82, 1046, "childObjBgScale", (CmdImpl) &Grp::impl_objScale); |
55 | 807 RegisterCommand(2, 81, 1047, "childObjWidth", NULL); |
808 RegisterCommand(2, 82, 1047, "childObjBgWidth", NULL); | |
809 RegisterCommand(2, 81, 1049, "childObjRotate", NULL); | |
810 RegisterCommand(2, 82, 1049, "childObjBgRotate", NULL); | |
811 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
812 RegisterCommand(1, 84, 1000, "objGetPos", (CmdImpl) &Grp::impl_objPosDims); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
813 RegisterCommand(1, 84, 1100, "objGetDims", (CmdImpl) &Grp::impl_objPosDims); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
814 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
815 RegisterCommand(2, 84, 1000, "childObjGetPos", (CmdImpl) &Grp::impl_objPosDims); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
816 RegisterCommand(2, 84, 1100, "childObjGetDims", (CmdImpl) &Grp::impl_objPosDims); |
55 | 817 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
818 RegisterCommand(1, 31, 0, "refresh", (CmdImpl) &Grp::impl_refresh); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
819 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
820 RegisterCommand(1, 20, 0, "bgmLoop", (CmdImpl) &Grp::impl_bgmLoop); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
821 RegisterCommand(1, 20, 1, "bgmPlayEx", (CmdImpl) &Grp::impl_bgmLoop); //FIXME: wait |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
822 RegisterCommand(1, 20, 2, "bgmPlay", (CmdImpl) &Grp::impl_bgmLoop); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
823 RegisterCommand(1, 20, 5, "bgmStop", (CmdImpl) &Grp::impl_bgmStop); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
824 RegisterCommand(1, 20, 105, "bgmFadeOut", (CmdImpl) &Grp::impl_bgmStop); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
825 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
826 RegisterCommand(1, 21, 0, "wavPlay", (CmdImpl) &Grp::impl_playWav); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
827 RegisterCommand(1, 21, 1, "wavPlayEx", (CmdImpl) &Grp::impl_playWav); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
828 RegisterCommand(1, 21, 2, "wavLoop", (CmdImpl) &Grp::impl_playWav); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
829 RegisterCommand(1, 21, 3, "wavWait", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
830 RegisterCommand(1, 21, 4, "wavPlaying", NULL); |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
831 RegisterCommand(1, 21, 5, "wavStop", (CmdImpl) &Grp::impl_stopWav); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
832 RegisterCommand(1, 21, 105, "wavFadeout", (CmdImpl) &Grp::impl_stopWav); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
833 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
834 RegisterCommand(1, 22, 0, "sePlay", (CmdImpl) &Grp::impl_playSE); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
835 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
836 RegisterCommand(1, 4, 2230, "SetBgmVolMod", (CmdImpl) &Grp::impl_SetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
837 RegisterCommand(1, 4, 2231, "SetKoeVolMod", (CmdImpl) &Grp::impl_SetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
838 RegisterCommand(1, 4, 2232, "SetPCMVolMod", (CmdImpl) &Grp::impl_SetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
839 RegisterCommand(1, 4, 2233, "SetSeVolMod", (CmdImpl) &Grp::impl_SetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
840 RegisterCommand(1, 4, 2330, "BgmVolMod", (CmdImpl) &Grp::impl_GetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
841 RegisterCommand(1, 4, 2331, "KoeVolMod", (CmdImpl) &Grp::impl_GetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
842 RegisterCommand(1, 4, 2332, "PCMVolMod", (CmdImpl) &Grp::impl_GetVolMod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
843 RegisterCommand(1, 4, 2333, "SeVolMod", (CmdImpl) &Grp::impl_GetVolMod); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
844 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
845 RegisterCommand(1, 23, 0, "koePlay", (CmdImpl) &Grp::impl_koePlay); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
846 RegisterCommand(1, 23, 1, "koePlayEx", (CmdImpl) &Grp::impl_koePlay); //FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
847 RegisterCommand(1, 23, 7, "koePlayExC", (CmdImpl) &Grp::impl_koePlay); //FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
848 RegisterCommand(1, 23, 8, "koeDoPlay", (CmdImpl) &Grp::impl_koePlay); //FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
849 RegisterCommand(1, 23, 9, "koeDoPlayEx", (CmdImpl) &Grp::impl_koePlay); //FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
850 RegisterCommand(1, 23, 10, "koeDoPlayExC", (CmdImpl) &Grp::impl_koePlay); //FIXME |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
851 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
852 RegisterCommand(1, 26, 1, "movPlayEx", (CmdImpl) &Grp::impl_movPlay); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
853 RegisterCommand(1, 26, 20, "movPlayExC", (CmdImpl) &Grp::impl_movPlay); |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
854 |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
855 RegisterCommand(1, 61, 14, "objSwap?", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
856 RegisterCommand(1, 62, 14, "objSwap?", NULL); |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
857 |
55 | 858 RegisterCommand(1, 4, 1211, "EnableSyscom", NULL); |
859 RegisterCommand(1, 4, 1212, "HideSyscom", NULL); | |
860 RegisterCommand(1, 4, 1213, "DisableSyscom", NULL); | |
861 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
862 anm1 = NULL; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
863 anm2 = NULL; |
0 | 864 } |
865 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
866 Grp::~Grp() { |
0 | 867 map<int,GrpObj>::iterator it; |
868 for (it=grpobj.begin(); it!=grpobj.end(); it++) { | |
869 PicBase* p = it->second.DeletePic(); | |
870 delete p; | |
871 } | |
872 | |
873 delete screen; | |
874 delete screen_front; | |
875 parent.Root().DeleteSurface(surface); | |
50 | 876 parent.Root().DeleteSurface(surface_update); |
0 | 877 int i; |
878 for (i=0; i<MAXPDT; i++) { | |
879 if (ssurface[i]) parent.Root().DeleteSurface(ssurface[i]); | |
880 if (dsurface[i]) parent.Root().DeleteSurface(dsurface[i]); | |
881 } | |
882 } | |
883 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
884 Surface* Grp::Dsurface(int pdt) { |
0 | 885 if (pdt == 0) return surface; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
886 if (dsurface[pdt] == 0) { // とりあえず画面の大きさということにする |
0 | 887 if (pdt == WORKPDT) |
888 dsurface[pdt] = parent.Root().NewSurface(parent.Width(), parent.Height(), ALPHA_MASK); | |
889 else | |
890 dsurface[pdt] = parent.Root().NewSurface(parent.Width(), parent.Height(), NO_MASK); | |
891 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
892 if (ssurface[pdt]) { // ssurface が存在すれば、dsurface にコピーして返す |
0 | 893 DSurfaceMove(ssurface[pdt], Rect(*ssurface[pdt]), dsurface[pdt], Rect(0,0)); |
894 parent.Root().DeleteSurface(ssurface[pdt]); | |
895 ssurface[pdt] = 0; | |
896 } | |
897 return dsurface[pdt]; | |
898 } | |
52 | 899 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
900 GrpObj* Grp::GetGraphicObj(int grp, bool fg) { |
55 | 901 if (fg) |
902 return &grpobj[grp]; | |
903 else | |
904 return &bs_obj[grp]; | |
905 } | |
906 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
907 GrpObj* Grp::GetGraphicObj(int grp, int index, bool fg) { |
55 | 908 GrpObj* g = GetGraphicObj(grp, fg); |
909 return &g->children_obj[index]; | |
910 } | |
911 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
912 GrpObj* Grp::GetGraphicObjVarMode(Cmd& cmd, int &base_arg, bool fg) { |
55 | 913 GrpObj* g; |
914 if (cmd.cmd1 == 2) { | |
915 g = GetGraphicObj(cmd.args[base_arg].value, cmd.args[base_arg+1].value, fg); | |
916 base_arg += 1; | |
917 } | |
918 else | |
919 g = GetGraphicObj(cmd.args[base_arg].value, fg); | |
920 return g; | |
921 } | |
922 | |
52 | 923 #include <SDL.h> |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
924 Surface* Grp::Ssurface(int pdt) { |
0 | 925 if (pdt == 0) return surface; |
926 if (ssurface[pdt]) { | |
927 return ssurface[pdt]; | |
928 } | |
929 return Dsurface(pdt); | |
930 } | |
931 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
932 void Grp::LoadSurface(const char* str, int pdt) { |
0 | 933 string s = str; |
934 if (cgm_info.find(s) != cgm_info.end()) { | |
935 cgm_data.insert(cgm_info[s]); | |
936 } | |
937 Surface* bg = parent.Root().NewSurface(s.c_str()); | |
52 | 938 if (bg == NULL) { |
0 | 939 s += ".g00"; |
940 bg = parent.Root().NewSurface(s.c_str()); | |
941 } | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
942 if (bg != NULL) { |
0 | 943 if (ssurface[pdt]) parent.Root().DeleteSurface(ssurface[pdt]); |
944 ssurface[pdt] = bg; | |
945 if (pdt == 0) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
946 /* とりあえず Princess Bride のアニメーション効果専用 */ |
0 | 947 Rect r(*ssurface[0]); |
948 Rect dr(*surface); | |
949 int x = (dr.width()-r.width())/2; | |
950 int y = (dr.height()-r.height())/2; | |
951 DSurfaceMove(ssurface[0], r, surface, Rect(x,y)); | |
952 parent.Root().DeleteSurface(ssurface[0]); | |
52 | 953 ssurface[0] = NULL; |
0 | 954 screen->SetSurface(surface, 0, 0); |
955 } | |
956 } else { | |
957 if (str[0] != 0) | |
958 fprintf(stderr,"Cannot find surface %d <- '%s'\n",pdt,str); | |
959 } | |
960 } | |
52 | 961 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
962 void Grp::InitSel(void) { |
52 | 963 int i; |
964 int args[16]; | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
965 char key[10]; |
0 | 966 for (i=0; i<999; i++) { |
967 sprintf(key, "#SEL.%03d",i); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
968 if (config->GetParam(key, 15, &args[0], &args[1], |
0 | 969 &args[2], &args[3], &args[4], &args[5], &args[6], &args[7], |
970 &args[8], &args[9], &args[10], &args[11], &args[12], &args[13], | |
971 &args[14])) { | |
972 | |
973 sprintf(key, "#SELR.%03d", i); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
974 if (config->GetParam(key, 16, &args[0], &args[1], |
0 | 975 &args[2], &args[3], &args[4], &args[5], &args[6], &args[7], |
976 &args[8], &args[9], &args[10], &args[11], &args[12], &args[13], | |
977 &args[14], &args[15])) continue; | |
978 } | |
979 SEL& s = anmtype[i]; | |
980 s.from = Rect(args[0], args[1], args[2]+1, args[3]+1); | |
981 s.to = Rect(args[4], args[5]); | |
982 s.time = args[6]; | |
983 s.sel_no = args[7]; | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
984 int j; |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
985 for (j=0; j<8; j++) s.args[j] = args[8+j]; |
0 | 986 } |
987 } | |
52 | 988 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
989 void Grp::SetSkipMode(SkipMode _mode) { |
0 | 990 if ( (skip_mode & SKIP_IN_MENU) && (_mode & SKIP_IN_MENU) == 0) { |
991 RefreshObj(); | |
992 } else if ( (skip_mode & SKIP_IN_MENU) == 0 && (_mode & SKIP_IN_MENU) ) { | |
993 } | |
994 skip_mode = _mode; | |
995 } | |
52 | 996 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
997 void Grp::SetObjChanged(int num) { |
0 | 998 changed_obj.insert(num); |
999 } | |
52 | 1000 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1001 void Grp::RefreshObj(void) { |
0 | 1002 if (!deleted_pic.empty()) { |
1003 vector<PicBase*>::iterator it; | |
1004 for (it=deleted_pic.begin(); it!=deleted_pic.end(); it++) { | |
1005 if (*it) delete *it; | |
1006 } | |
1007 deleted_pic.clear(); | |
1008 } | |
1009 if (!changed_obj.empty()) { | |
1010 set<int>::iterator it; | |
1011 for (it=changed_obj.begin(); it != changed_obj.end(); it++) { | |
1012 if (grpobj.find(*it) == grpobj.end()) continue; | |
1013 GrpObj& obj = grpobj[*it]; | |
55 | 1014 obj.Refresh(obj); |
0 | 1015 } |
1016 changed_obj.clear(); | |
1017 } | |
1018 if (reserved_load_surface0.length() != 0) { | |
1019 LoadSurface(reserved_load_surface0.c_str(), 0); | |
1020 reserved_load_surface0 = ""; | |
1021 } | |
1022 screen->ReBlit(); | |
1023 } | |
1024 | |
1025 | |
52 | 1026 #include <SDL.h> |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1027 void Grp::StartAnm(int type) { |
0 | 1028 SEL sel; |
1029 | |
1030 if (anmtype.find(type) == anmtype.end()) { | |
1031 if (anmtype.find(0) == anmtype.end()) { | |
1032 sel.sel_no = 1; | |
1033 sel.from = Rect(*surface); | |
1034 sel.to = Rect(0,0); | |
1035 sel.time = 0; | |
1036 } else { | |
1037 sel = anmtype[0]; | |
1038 } | |
1039 } else { | |
1040 sel = anmtype[type]; | |
1041 } | |
52 | 1042 if (anm1 != NULL) { |
0 | 1043 fprintf(stderr,"Warning: StartAnm() called before anm1 finished\n"); |
1044 anm1->Abort(); | |
1045 delete anm1; | |
52 | 1046 anm1 = NULL; |
0 | 1047 } |
1048 map<int,GrpObj>::iterator it; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1049 // 現在表示中のobjectを消去 |
0 | 1050 deleted_pic.push_back(screen); |
1051 for (it=grpobj.begin(); it!=grpobj.end(); it++) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1052 if (! (it->second.attr & GrpObj::WIPEON)) { // 画像切り替え時に object 削除 |
0 | 1053 deleted_pic.push_back(it->second.DeletePic()); |
1054 } else { | |
1055 GrpObj& new_obj = bs_obj[it->first]; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1056 if (new_obj.name.empty()) { // 新しい object が存在しなければ内容を引き継ぐ |
0 | 1057 new_obj = it->second; |
1058 it->second.DeletePic(); | |
1059 } else { | |
1060 new_obj.attr = GrpObj::Attribute(new_obj.attr | GrpObj::WIPEON); | |
1061 deleted_pic.push_back(it->second.DeletePic()); | |
1062 } | |
1063 } | |
1064 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1065 grpobj.clear(); // 全オブジェクト削除 |
0 | 1066 |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1067 // 全画像オブジェクトの前にscreen 移動 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1068 // 新しい screen_front を作成しておく |
0 | 1069 screen = screen_front; |
1070 screen->hide(); | |
1071 screen->SetSurface(surface_update, 0, 0); | |
1072 parent.Root().BlitSurface(Dsurface(1), Rect(*surface_update), surface_update, Rect(0,0)); | |
1073 | |
1074 screen_front = parent.create_leaf(Rect(0, 0, parent.Width(), parent.Height()), 0); | |
1075 screen_front->hide(); | |
1076 screen_front->ZMove(screen); | |
1077 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1078 // 新しい object へ更新、surface_update へ新しい object を表示 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1079 // (object 作成時は picture は hide されている) |
0 | 1080 for (it=bs_obj.begin(); it!=bs_obj.end(); it++) { |
1081 grpobj[it->first] = it->second; | |
1082 it->second.DeletePic(); | |
55 | 1083 CreateObj(it->first);//FIXME: Adapt to groups |
0 | 1084 GrpObj& g = grpobj[it->first]; |
1085 if (g.picture) { | |
1086 g.Update(); | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1087 if (g.alpha == 0 || (g.attr & GrpObj::HIDDEN)) ; |
0 | 1088 else g.picture->SimpleBlit(surface_update); |
1089 g.picture->hide(); | |
1090 } | |
1091 } | |
1092 bs_obj.clear(); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1093 // 画像効果開始 |
0 | 1094 switch(sel.sel_no) { |
1095 default: | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1096 case 0: case 50: // 0 と 50 の違いが良くわからない |
0 | 1097 if (skip_mode & SKIP_GRP_NOEFFEC) |
1098 anm1 = new WidAnmAlpha(event, screen, ALPHA_MAX, ALPHA_MAX, 0); | |
1099 else if (skip_mode & SKIP_GRP_FAST) | |
1100 anm1 = new WidAnmAlpha(event, screen, 0, ALPHA_MAX, sel.time/4); | |
1101 else | |
1102 anm1 = new WidAnmAlpha(event, screen, 0, ALPHA_MAX, sel.time); | |
1103 break; | |
1104 } | |
1105 if (anm1) anm1->Play(); | |
1106 if (skip_mode & SKIP_GRP_NOEFFEC) AbortAnm(); | |
1107 } | |
52 | 1108 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1109 void Grp::StartShake(int total, const int* pattern) { |
0 | 1110 if (anm2) { |
1111 fprintf(stderr,"Warning: StartShake() called before another animation finished\n"); | |
1112 anm2->Abort(); | |
1113 delete anm2; | |
52 | 1114 anm2 = NULL; |
0 | 1115 } |
1116 if (skip_mode & SKIP_GRP_NOEFFEC) return; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1117 AnmAlphaMove* new_anm = new AnmAlphaMove(event, &parent); // shake screen では元画面の座標を揺らす |
52 | 1118 int i; |
1119 int tm = 0; | |
0 | 1120 for (i=0; i<total; i+=3) { |
1121 int x = pattern[i]; | |
1122 int y = pattern[i+1]; | |
1123 new_anm->ptns.push_back(AnmAlphaMove::Ptn(Rect(x,y), Rect(0,0), 255, tm)); | |
1124 tm += pattern[i+2]; | |
1125 } | |
1126 new_anm->ptns.push_back(AnmAlphaMove::Ptn(Rect(0,0), Rect(0,0), 255, tm)); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1127 new_anm->SetPtn(); // パターン登録終了 |
0 | 1128 new_anm->Play(); |
1129 anm2 = new_anm; | |
1130 } | |
52 | 1131 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1132 void Grp::AbortAnm(void) { |
52 | 1133 if (anm1 == NULL) return; |
0 | 1134 anm1->Abort(); |
1135 delete anm1; | |
52 | 1136 anm1 = NULL; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1137 /* 画像効果終了 */ |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1138 /* 古い画面への画像効果があれば消去 */ |
0 | 1139 if (anm2 && anm2->pic[0] != screen) { |
1140 anm2->Abort(); | |
1141 delete anm2; | |
52 | 1142 anm2 = NULL; |
0 | 1143 } |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1144 /* pdt1 -> pdt0 へコピー */ |
0 | 1145 DSurfaceMove(dsurface[1], Rect(*dsurface[1]), surface, Rect(0,0)); |
1146 screen->SetSurface(surface, 0, 0); | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1147 // 画像効果開始時に存在したobjectを消去 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1148 // 新しい object 表示 |
0 | 1149 RefreshObj(); |
1150 return; | |
1151 } | |
52 | 1152 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1153 void Grp::LoadSurface(const char* str) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1154 if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了 |
0 | 1155 LoadSurface(str, 1); |
1156 bg_name = str; | |
1157 } | |
52 | 1158 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1159 void Grp::LoadSurface(void) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1160 if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了 |
0 | 1161 LoadSurface(bg_name.c_str(), 1); |
1162 } | |
52 | 1163 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1164 void Grp::AddSurface(const char* str) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1165 if (anm1 != NULL) AbortAnm(); // 前の描画が終わってなければ強制終了 |
0 | 1166 LoadSurface(bg_name.c_str()); |
1167 | |
1168 string s = str; | |
1169 Surface* front = parent.Root().NewSurface(s.c_str()); | |
52 | 1170 if (front == NULL) { |
0 | 1171 s += ".g00"; |
1172 front = parent.Root().NewSurface(s.c_str()); | |
1173 } | |
52 | 1174 if (front != NULL) { |
0 | 1175 parent.Root().BlitSurface(front, Rect(*front), Dsurface(1), Rect(0,0)); |
1176 parent.Root().DeleteSurface(front); | |
1177 } else { | |
1178 fprintf(stderr,"Cannot find surface %s\n",str); | |
1179 } | |
1180 } | |
1181 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1182 void Grp::CreateObj(int index) { |
55 | 1183 GrpObjMap::iterator cur = grpobj.find(index); |
0 | 1184 if (cur == grpobj.end()) return; |
1185 GrpObj& g = grpobj[index]; | |
1186 g.CreateSurface(&parent); | |
1187 g.order = index; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1188 if (g.picture == NULL) return; // エラー:surface が存在しない |
0 | 1189 g.picture->hide(); |
1190 SetObjChanged(index); | |
1191 ZMoveObj(index); | |
1192 } | |
52 | 1193 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1194 void Grp::CreateSubObj(int grp_index, int index) { |
55 | 1195 GrpObjMap::iterator cur = grpobj.find(grp_index); |
1196 if (cur == grpobj.end()) return; | |
1197 GrpObj* g = &grpobj[grp_index]; | |
1198 cur = g->children_obj.find(index); | |
1199 if (cur == g->children_obj.end()) return; | |
1200 g = &g->children_obj[index]; | |
1201 g->CreateSurface(&parent); | |
1202 g->order = index; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1203 if (g->picture == NULL) return; // エラー:surface が存在しない |
55 | 1204 g->picture->hide(); |
1205 //TODO | |
1206 SetObjChanged(grp_index); | |
1207 /*ZMoveObj(index);*/ | |
1208 } | |
1209 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1210 void Grp::ZMoveObj(int index) { |
55 | 1211 GrpObjMap::iterator cur = grpobj.find(index); |
0 | 1212 if (cur == grpobj.end()) return; |
1213 GrpObj& g = grpobj[index]; | |
52 | 1214 if (g.picture == NULL) return; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1215 // 自分より前に object があれば、その前に表示 |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1216 // そうでなければ screen の前に表示 |
55 | 1217 GrpObjMap::iterator cur_backobj = grpobj.end(); |
1218 GrpObjMap::iterator it; | |
0 | 1219 for (it = grpobj.begin(); it != grpobj.end(); it++) { |
1220 if (it == cur) continue; | |
52 | 1221 if (it->second.picture == NULL) continue; |
0 | 1222 if (it->second.order < g.order) { |
1223 if (cur_backobj == grpobj.end()) { | |
1224 cur_backobj = it; | |
1225 } else if (cur_backobj->second.order < it->second.order) { | |
1226 cur_backobj = it; | |
1227 } | |
1228 } | |
1229 } | |
1230 if (cur_backobj == grpobj.end()) { | |
1231 g.picture->ZMove(screen); | |
1232 } else { | |
1233 g.picture->ZMove(cur_backobj->second.picture); | |
1234 } | |
1235 } | |
52 | 1236 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1237 void Grp::SwapObj(int index1, int index2) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1238 // デフォルト値から order が変更されていた場合のみ、order は保存される |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1239 // まずは両方のobjectをswap |
0 | 1240 if (grpobj.find(index1) == grpobj.end()) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1241 if (grpobj.find(index2) == grpobj.end()) return; // どちらの object も存在しない |
0 | 1242 grpobj[index1] = grpobj[index2]; |
1243 if (grpobj[index1].order == index2) | |
1244 grpobj[index1].order = index1; | |
1245 grpobj[index2].DeletePic(); | |
1246 grpobj.erase(index2); | |
1247 ZMoveObj(index1); | |
1248 return; | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1249 } else if (grpobj.find(index2) == grpobj.end()) { // index2 が存在しない場合 |
0 | 1250 grpobj[index2] = grpobj[index1]; |
1251 if (grpobj[index2].order == index1) | |
1252 grpobj[index2].order = index2; | |
1253 grpobj[index1].DeletePic(); | |
1254 grpobj.erase(index1); | |
1255 ZMoveObj(index2); | |
1256 return; | |
1257 } else { | |
1258 GrpObj obj = grpobj[index1]; | |
1259 grpobj[index1] = grpobj[index2]; | |
1260 grpobj[index2].DeletePic(); | |
1261 if (grpobj[index1].order == index2) | |
1262 grpobj[index1].order = index1; | |
1263 ZMoveObj(index1); | |
1264 grpobj[index2] = obj; | |
1265 if (grpobj[index2].order == index1) | |
1266 grpobj[index2].order = index2; | |
1267 ZMoveObj(index2); | |
1268 obj.DeletePic(); | |
1269 } | |
1270 } | |
1271 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1272 bool Grp::Pressed(int x, int y, void* pointer) { // マウスクリックでキャンセル |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1273 Grp* g = (Grp*)pointer; |
0 | 1274 if (g->status == WAIT_MOVIE) |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1275 g->music->StopMovie(); |
0 | 1276 if (g->status == WAIT_ANM) |
1277 g->AbortAnm(); | |
52 | 1278 if (g->status == WAIT_SHAKE && g->anm2 != NULL) { |
18 | 1279 g->anm2->Abort(); |
0 | 1280 delete g->anm2; |
52 | 1281 g->anm2 = NULL; |
0 | 1282 } |
1283 return false; // event deleted | |
1284 } | |
1285 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1286 /* mode.cgm の decode 用 */ |
0 | 1287 static unsigned char decode_char[256] = { |
1288 0x8b, 0xe5, 0x5d, 0xc3, 0xa1, 0xe0, 0x30, 0x44, | |
1289 0x00, 0x85, 0xc0, 0x74, 0x09, 0x5f, 0x5e, 0x33, | |
1290 0xc0, 0x5b, 0x8b, 0xe5, 0x5d, 0xc3, 0x8b, 0x45, | |
1291 0x0c, 0x85, 0xc0, 0x75, 0x14, 0x8b, 0x55, 0xec, | |
1292 0x83, 0xc2, 0x20, 0x52, 0x6a, 0x00, 0xe8, 0xf5, | |
1293 0x28, 0x01, 0x00, 0x83, 0xc4, 0x08, 0x89, 0x45, | |
1294 0x0c, 0x8b, 0x45, 0xe4, 0x6a, 0x00, 0x6a, 0x00, | |
1295 0x50, 0x53, 0xff, 0x15, 0x34, 0xb1, 0x43, 0x00, | |
1296 0x8b, 0x45, 0x10, 0x85, 0xc0, 0x74, 0x05, 0x8b, | |
1297 0x4d, 0xec, 0x89, 0x08, 0x8a, 0x45, 0xf0, 0x84, | |
1298 0xc0, 0x75, 0x78, 0xa1, 0xe0, 0x30, 0x44, 0x00, | |
1299 0x8b, 0x7d, 0xe8, 0x8b, 0x75, 0x0c, 0x85, 0xc0, | |
1300 0x75, 0x44, 0x8b, 0x1d, 0xd0, 0xb0, 0x43, 0x00, | |
1301 0x85, 0xff, 0x76, 0x37, 0x81, 0xff, 0x00, 0x00, | |
1302 0x04, 0x00, 0x6a, 0x00, 0x76, 0x43, 0x8b, 0x45, | |
1303 0xf8, 0x8d, 0x55, 0xfc, 0x52, 0x68, 0x00, 0x00, | |
1304 0x04, 0x00, 0x56, 0x50, 0xff, 0x15, 0x2c, 0xb1, | |
1305 0x43, 0x00, 0x6a, 0x05, 0xff, 0xd3, 0xa1, 0xe0, | |
1306 0x30, 0x44, 0x00, 0x81, 0xef, 0x00, 0x00, 0x04, | |
1307 0x00, 0x81, 0xc6, 0x00, 0x00, 0x04, 0x00, 0x85, | |
1308 0xc0, 0x74, 0xc5, 0x8b, 0x5d, 0xf8, 0x53, 0xe8, | |
1309 0xf4, 0xfb, 0xff, 0xff, 0x8b, 0x45, 0x0c, 0x83, | |
1310 0xc4, 0x04, 0x5f, 0x5e, 0x5b, 0x8b, 0xe5, 0x5d, | |
1311 0xc3, 0x8b, 0x55, 0xf8, 0x8d, 0x4d, 0xfc, 0x51, | |
1312 0x57, 0x56, 0x52, 0xff, 0x15, 0x2c, 0xb1, 0x43, | |
1313 0x00, 0xeb, 0xd8, 0x8b, 0x45, 0xe8, 0x83, 0xc0, | |
1314 0x20, 0x50, 0x6a, 0x00, 0xe8, 0x47, 0x28, 0x01, | |
1315 0x00, 0x8b, 0x7d, 0xe8, 0x89, 0x45, 0xf4, 0x8b, | |
1316 0xf0, 0xa1, 0xe0, 0x30, 0x44, 0x00, 0x83, 0xc4, | |
1317 0x08, 0x85, 0xc0, 0x75, 0x56, 0x8b, 0x1d, 0xd0, | |
1318 0xb0, 0x43, 0x00, 0x85, 0xff, 0x76, 0x49, 0x81, | |
1319 0xff, 0x00, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x76 | |
1320 }; | |
1321 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1322 void Grp::LoadCgm() { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1323 /* cgm ファイル読み込み */ |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1324 const char* fname = config->GetParaStr("#CGTABLE_FILE"); |
52 | 1325 if (fname == NULL) return; |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1326 ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::ALL, fname, ""); |
52 | 1327 if (info == NULL) return; |
0 | 1328 char* data = info->CopyRead(); |
1329 int sz = info->Size(); | |
1330 delete info; | |
1331 | |
1332 | |
8 | 1333 if ( strncmp(data, "CGTABLE", 7) != 0) { |
1334 delete[] data; | |
1335 return; | |
1336 } | |
20
824b89018ea8
* CG completion percentage (maybe not working properly?)
thib
parents:
18
diff
changeset
|
1337 cgm_size = read_little_endian_int(data+0x10); |
0 | 1338 |
52 | 1339 int i, j; |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1340 // xor 解除 |
52 | 1341 for (i=0; i < sz-0x20; i++) { |
0 | 1342 data[i+0x20]^=decode_char[i&0xff]; |
1343 } | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1344 // 展開 |
0 | 1345 int dest_size = cgm_size * 36; |
1346 char* dest = new char[dest_size+1024]; | |
1347 char* src = data + 0x28; | |
1348 char* dest_orig = dest; | |
1349 ARCINFO::Extract2k(dest,src,dest+dest_size,data+sz); | |
1350 dest = dest_orig; | |
1351 for (i=0; i<cgm_size; i++) { | |
1352 char* s = dest + i * 36; | |
1353 int n = read_little_endian_int(dest + i * 36 + 32); | |
1354 cgm_info[s] = n; | |
1355 } | |
8 | 1356 delete[] data; |
0 | 1357 delete[] dest_orig; |
1358 } | |
1359 | |
1360 /***************************************************** | |
1361 * | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1362 * Grp :: Save, Load : セーブファイル処理 |
0 | 1363 * |
1364 */ | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1365 void Grp::Save(std::string& str) { |
0 | 1366 } |
52 | 1367 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1368 void Grp::Load(const char* str) { |
0 | 1369 status = NORMAL; |
52 | 1370 if (anm1 != NULL) { |
0 | 1371 AbortAnm(); |
1372 } | |
52 | 1373 if (anm2 != NULL) { |
0 | 1374 anm2->Abort(); |
1375 delete anm2; | |
52 | 1376 anm2 = NULL; |
0 | 1377 } |
1378 map<int,GrpObj>::iterator it; | |
1379 for (it=grpobj.begin(); it!=grpobj.end(); it++) { | |
1380 PicBase* p = it->second.DeletePic(); | |
1381 delete p; | |
1382 } | |
1383 grpobj.clear(); | |
1384 | |
1385 bg_name = ""; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1386 music->StopCDROM(100); |
0 | 1387 } |
52 | 1388 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1389 void Grp::SaveSys(string& save) { |
0 | 1390 char buf[1024]; |
1391 save = "\n[Graphics]\n"; | |
1392 save += "CGM_CG="; | |
1393 | |
1394 set<int>::iterator it; | |
1395 for (it=cgm_data.begin(); it != cgm_data.end(); it++) { | |
1396 sprintf(buf,"%d,",*it); | |
1397 save += buf; | |
1398 } | |
1399 save += "\n"; | |
1400 } | |
52 | 1401 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1402 void Grp::LoadSys(const char* save) { |
0 | 1403 cgm_data.clear(); |
1404 save = strstr(save, "\n[Graphics]\n"); | |
1405 | |
1406 if (save) { | |
1407 save += strlen("\n[Graphics]\n"); | |
1408 do { | |
1409 if (save[0] == '[') break; // next section | |
1410 if (strncmp(save, "CGM_CG=",7) == 0) { | |
1411 save += 7; | |
1412 while(isdigit(*save)) { | |
1413 int n = atoi(save); | |
1414 cgm_data.insert(n); | |
1415 save = strchr(save, ','); | |
1416 if (save) save++; | |
1417 } | |
1418 } | |
1419 save = strchr(save, '\n'); | |
1420 if (save) save++; | |
1421 } while (save); | |
1422 } | |
1423 return; | |
1424 } | |
1425 | |
1426 | |
1427 /***************************************************** | |
1428 * | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1429 * Grp :: Wait , Exec : コマンド実行部 |
0 | 1430 * |
1431 */ | |
1432 static vector<int> drawn_images; | |
1433 static int draw_n = 0; | |
1434 extern bool grpdump_req; | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1435 bool Grp::Wait(unsigned int current_time, Cmd& cmd) { |
0 | 1436 if (grpdump_req) { |
1437 grpdump_req = 0; | |
55 | 1438 GrpObjMap::iterator it; |
48 | 1439 fprintf(stderr,"front %p(%d) / %p(%d)\n",screen,screen->IsHidden(),screen_front,screen_front->IsHidden()); |
0 | 1440 for (it=grpobj.begin(); it != grpobj.end(); it++) { |
1441 GrpObj& obj = it->second; | |
55 | 1442 obj._debug_Dump(it->first, 0); |
0 | 1443 } |
1444 std::list<PicBase*>::iterator it2; | |
1445 for (it2=parent.children.begin(); it2!=parent.children.end();it2++) { | |
48 | 1446 fprintf(stderr,"%p(%d)\n",*it2,(*it2)->IsHidden()); |
0 | 1447 } |
1448 RefreshObj(); | |
1449 | |
1450 } | |
1451 #if 0 | |
1452 if (event.presscount(MOUSE_UP)) { | |
1453 std::list<PicBase*>::iterator lit; | |
1454 draw_n++; int i=0; | |
1455 for (lit=parent.children.end(); lit!=parent.children.begin(); ) { | |
1456 lit--; | |
1457 (*lit)->hide(); | |
1458 i++; | |
1459 if (i >= draw_n) break; | |
1460 } | |
1461 if (drawn_images.empty()) { | |
1462 map<int, GrpObj>::iterator it; | |
1463 for (it=grpobj.begin(); it!=grpobj.end(); it++) { | |
1464 if (it->second.picture) { | |
1465 drawn_images.push_back(it->first); | |
1466 PicBase* p = it->second.DeletePic(); | |
1467 delete p; | |
1468 } | |
1469 } | |
1470 } else { | |
1471 vector<int>::iterator it; | |
1472 for (it=drawn_images.begin(); it!=drawn_images.end(); it++) { | |
1473 CreateObj(*it); | |
1474 } | |
1475 drawn_images.clear(); | |
1476 } | |
1477 } | |
1478 #endif | |
1479 if (status == WAIT_ANM) { | |
52 | 1480 if (anm1 != NULL) { |
0 | 1481 if (!anm1->IsEnd()) return true; |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1482 //FIXME: Handle animation loops |
0 | 1483 AbortAnm(); |
1484 } | |
1485 } else if (status == WAIT_SHAKE) { | |
52 | 1486 if (anm2 != NULL) { |
0 | 1487 if (!anm2->IsEnd()) return true; |
1488 delete anm2; | |
52 | 1489 anm2 = NULL; |
0 | 1490 } |
1491 status = NORMAL; | |
1492 } else if (status == WAIT_SE) { | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1493 if (music->IsStopSE()) status = NORMAL; |
0 | 1494 return true; |
1495 } else if (status == WAIT_MOVIE) { | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1496 if (music->IsStopMovie()) { |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1497 music->StopMovie(); |
0 | 1498 status = NORMAL; |
1499 screen->ReBlit(); | |
1500 } | |
1501 return true; | |
1502 } | |
52 | 1503 if (anm2 != NULL) { |
0 | 1504 if (anm2->IsEnd()) { |
1505 delete anm2; | |
52 | 1506 anm2 = NULL; |
0 | 1507 } |
1508 } | |
1509 return false; | |
1510 } | |
1511 | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1512 void Grp::DeleteObjPic(int num) { // object の surface のみ削除 |
0 | 1513 if (grpobj.find(num) == grpobj.end()) return; |
1514 deleted_pic.push_back(grpobj[num].DeletePic()); | |
1515 } | |
52 | 1516 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1517 void Grp::DeleteSubObjPic(int num_grp, int num) { |
55 | 1518 if (grpobj.find(num_grp) == grpobj.end()) return; |
1519 if (grpobj[num_grp].children_obj.find(num) == grpobj[num_grp].children_obj.end()) return; | |
1520 deleted_pic.push_back(grpobj[num_grp].children_obj[num].DeletePic()); | |
1521 } | |
1522 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1523 void Grp::DeleteObj(int num) { |
0 | 1524 if (grpobj.find(num) == grpobj.end()) return; |
1525 deleted_pic.push_back(grpobj[num].DeletePic()); | |
55 | 1526 GrpObjMap::iterator it; |
1527 for (it = grpobj[num].children_obj.begin(); it != grpobj[num].children_obj.end(); it++) { | |
1528 deleted_pic.push_back(it->second.DeletePic()); | |
1529 } | |
0 | 1530 grpobj.erase(num); |
1531 } | |
52 | 1532 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1533 void Grp::DeleteSubObj(int num_grp, int num) { |
55 | 1534 if (grpobj.find(num_grp) == grpobj.end()) return; |
1535 if (grpobj[num_grp].children_obj.find(num) == grpobj[num_grp].children_obj.end()) return; | |
1536 deleted_pic.push_back(grpobj[num_grp].children_obj[num].DeletePic()); | |
1537 grpobj[num_grp].children_obj.erase(num); | |
1538 } | |
1539 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1540 void Grp::Exec(Cmd& cmd) { |
0 | 1541 if (cmd.cmd_type == CMD_TEXTEND) { |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1542 music->StopKoe(500); // テキスト終了で声を止める |
0 | 1543 cmd.clear(); |
1544 return; | |
1545 } | |
1546 if (cmd.cmd_type == CMD_WAITFRAMEUPDATE) { | |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1547 // wait する場合は RefreshObj() しておく |
0 | 1548 RefreshObj(); |
1549 } | |
1550 if (cmd.cmd_type != CMD_OTHER) return; | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1551 |
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1552 CommandHandler::Exec(cmd); |
26 | 1553 |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1554 //TODO: ??? |
65
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1555 if (cmd.cmd1 == 1 && cmd.cmd2 == 60 && cmd.cmd3 == 0) { // ??? : KANOGI : 画像オブジェクトの削除? |
4416cfac86ae
Convert EUC-JP files to UTF8
Thibaut Girka <thib@sitedethib.com>
parents:
60
diff
changeset
|
1556 DeleteObjPic(cmd.args[0].value); // 旧ファイル名のsurfaceを削除 |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1557 GrpObj& g = grpobj[cmd.args[0].value]; |
0 | 1558 g.attr = GrpObj::Attribute(g.attr | GrpObj::HIDDEN); |
1559 cmd.clear(); | |
1560 } | |
5 | 1561 |
60
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
1562 // Refresh changed objects... |
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
1563 //FIXME: should may be go away? |
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
1564 //Seems it'll work only for objects in the foreground |
e16e13d8cd68
Replaced SATURATE -> ADD, implemented objComposite, corrected minor things
Thibaut GIRKA <thib@sitedethib.com>
parents:
56
diff
changeset
|
1565 if ( (cmd.cmd1 == 1 || cmd.cmd1 == 2) && cmd.cmd2 == 81) { |
55 | 1566 GrpObj* g; |
1567 if (cmd.cmd1 == 2) | |
1568 g = GetGraphicObj(cmd.args[0].value, cmd.args[1].value); | |
1569 else | |
1570 g = GetGraphicObj(cmd.args[0].value); | |
1571 if (g->attr & GrpObj::UPDATE_ALL) | |
54
d7cde171a1de
* scn2k_grp.cc now handles commands in a cleanier way \o/
thib
parents:
53
diff
changeset
|
1572 SetObjChanged(cmd.args[0].value); |
0 | 1573 } |
1574 } | |
1575 |