%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
tsukuba_bunko.peko.scenario.stage.StageCoordinator |
|
|
1 | /* |
|
2 | * All Rights Reserved. |
|
3 | * Copyright (C) 1999-2005 Tsukuba Bunko. |
|
4 | * |
|
5 | * Licensed under the BSD License ("the License"); you may not use |
|
6 | * this file except in compliance with the License. |
|
7 | * You may obtain a copy of the License at |
|
8 | * |
|
9 | * http://www.tsukuba-bunko.org/licenses/LICENSE.txt |
|
10 | * |
|
11 | * Unless required by applicable law or agreed to in writing, software |
|
12 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
14 | * See the License for the specific language governing permissions and |
|
15 | * limitations under the License. |
|
16 | * |
|
17 | * $Id: StageCoordinator.java,v 1.3 2005/08/19 03:18:11 ppoi Exp $ |
|
18 | */ |
|
19 | package tsukuba_bunko.peko.scenario.stage; |
|
20 | ||
21 | import tsukuba_bunko.peko.ActionControler; |
|
22 | import tsukuba_bunko.peko.Logger; |
|
23 | ||
24 | import tsukuba_bunko.peko.canvas.stage.Actor; |
|
25 | import tsukuba_bunko.peko.canvas.stage.Stage; |
|
26 | ||
27 | import tsukuba_bunko.peko.scenario.Coordinator; |
|
28 | import tsukuba_bunko.peko.scenario.SceneContext; |
|
29 | ||
30 | ||
31 | /** |
|
32 | * StageCanvas への操作を取り持つコーディネータモジュールです。 |
|
33 | * @author $Author: ppoi $ |
|
34 | * @version $Revision: 1.3 $ $Date: 2005/08/19 03:18:11 $ |
|
35 | */ |
|
36 | public class StageCoordinator extends Coordinator { |
|
37 | ||
38 | /** |
|
39 | * 立ち位置:中央 |
|
40 | */ |
|
41 | public static final int POSITION_CENTER = 0; |
|
42 | ||
43 | /** |
|
44 | * 立ち位置:左 |
|
45 | */ |
|
46 | public static final int POSITION_LEFT = 1; |
|
47 | ||
48 | /** |
|
49 | * 立ち位置:右 |
|
50 | */ |
|
51 | public static final int POSITION_RIGHT = 2; |
|
52 | ||
53 | ||
54 | /** |
|
55 | * ネストレベル |
|
56 | */ |
|
57 | 0 | protected int _level = 0; |
58 | ||
59 | ||
60 | /** |
|
61 | * <code>StageCoordinator</code> のインスタンスを生成します。 |
|
62 | */ |
|
63 | public StageCoordinator() |
|
64 | { |
|
65 | 0 | super(); |
66 | 0 | } |
67 | ||
68 | ||
69 | /** |
|
70 | * <code>name</code> で識別される役者の情報を取得します。 |
|
71 | * @param name 役者名 |
|
72 | * @return Actor オブジェクト。該当する役者がいない場合 <code>null</code> |
|
73 | */ |
|
74 | public Actor getActor( String name ) |
|
75 | { |
|
76 | 0 | Actor actor = getStage().getActor( name ); |
77 | 0 | if( actor == null ) { |
78 | 0 | return null; |
79 | } |
|
80 | else { |
|
81 | 0 | Actor copy = new Actor( actor.getName() ); |
82 | 0 | actor.copyTo( copy ); |
83 | 0 | return copy; |
84 | } |
|
85 | } |
|
86 | ||
87 | ||
88 | /** |
|
89 | * 役者を舞台に登場させます。 |
|
90 | * @param actor 登場する役者 |
|
91 | */ |
|
92 | public void enter( Actor actor ) |
|
93 | { |
|
94 | 0 | if( isActiveThread() ) { |
95 | 0 | getStage().enter( actor ); |
96 | } |
|
97 | 0 | } |
98 | ||
99 | /** |
|
100 | * 役者を動かします。 |
|
101 | * @param actor 動かす役者 |
|
102 | */ |
|
103 | public void action( Actor actor ) |
|
104 | { |
|
105 | 0 | if( isActiveThread() ) { |
106 | 0 | Stage stage = getStage(); |
107 | 0 | Actor current = stage.getActor( actor.getName() ); |
108 | 0 | if( current != null ) { |
109 | 0 | if( current.getLooksImage() != actor.getLooksImage() ) { |
110 | 0 | stage.exit( actor.getName() ); |
111 | 0 | stage.enter( actor ); |
112 | 0 | } |
113 | else { |
|
114 | 0 | stage.enter( actor ); |
115 | } |
|
116 | } |
|
117 | } |
|
118 | 0 | } |
119 | ||
120 | /** |
|
121 | * 役者を退場させます。 |
|
122 | * @param name 退場させる役者名 |
|
123 | * @return 退場した役者 |
|
124 | */ |
|
125 | public Actor exit( String name ) |
|
126 | { |
|
127 | 0 | if( isActiveThread() ) { |
128 | 0 | return getStage().exit( name ); |
129 | } |
|
130 | else { |
|
131 | 0 | return null; |
132 | } |
|
133 | } |
|
134 | ||
135 | /** |
|
136 | * 背景を指定した色に設定します。 |
|
137 | * @param color 色名 |
|
138 | */ |
|
139 | public void setBackgroundColor( String color ) |
|
140 | { |
|
141 | 0 | if( isActiveThread() ) { |
142 | 0 | getStage().setBackgroundColor( color ); |
143 | } |
|
144 | 0 | } |
145 | ||
146 | /** |
|
147 | * 背景を指定された画像に設定します。 |
|
148 | * @param image 画像名 |
|
149 | */ |
|
150 | public void setBackgroundImage( String image ) |
|
151 | { |
|
152 | 0 | if( isActiveThread() ) { |
153 | 0 | getStage().setBackgroundImage( image ); |
154 | } |
|
155 | 0 | } |
156 | ||
157 | /** |
|
158 | * スライドを表示します。 |
|
159 | * @param slide スライド名 |
|
160 | */ |
|
161 | public void showSlide( String slide ) |
|
162 | { |
|
163 | 0 | if( isActiveThread() ) { |
164 | 0 | getStage().showSlide( slide ); |
165 | } |
|
166 | 0 | } |
167 | ||
168 | /** |
|
169 | * スライドを隠します。 |
|
170 | */ |
|
171 | public void hideSlide() |
|
172 | { |
|
173 | 0 | if( isActiveThread() ) { |
174 | 0 | getStage().hideSlide(); |
175 | } |
|
176 | 0 | } |
177 | ||
178 | /** |
|
179 | * BGM を再生します。 |
|
180 | * @param id BGM ID |
|
181 | * @param clipName クリップ名 |
|
182 | * @param loop ループする場合 <code>true</code>、それ以外の場合 <code>false</code> |
|
183 | */ |
|
184 | public void playBGM( String id, String clipName, boolean loop ) |
|
185 | { |
|
186 | 0 | if( isActiveThread() ) { |
187 | 0 | getStage().playBGM( id, clipName, loop ); |
188 | } |
|
189 | 0 | } |
190 | ||
191 | /** |
|
192 | * BGM を停止します。 |
|
193 | * @param id BGM ID |
|
194 | */ |
|
195 | public void stopBGM( String id, int mode ) |
|
196 | { |
|
197 | 0 | if( isActiveThread() ) { |
198 | 0 | getStage().stopBGM( id, mode ); |
199 | } |
|
200 | 0 | } |
201 | ||
202 | /** |
|
203 | * SE を再生します。 |
|
204 | * @param id SE ID |
|
205 | * @param clipName クリップ名 |
|
206 | * @param loop ループする場合 <code>true</code>、それ以外の場合 <code>false</code> |
|
207 | */ |
|
208 | public void playSE( String id, String clipName, boolean loop ) |
|
209 | { |
|
210 | 0 | if( isActiveThread() ) { |
211 | 0 | getStage().playSE( id, clipName, loop ); |
212 | } |
|
213 | 0 | } |
214 | ||
215 | /** |
|
216 | * SE を停止します。 |
|
217 | * @param id SE ID |
|
218 | */ |
|
219 | public void stopSE( String id, int mode ) |
|
220 | { |
|
221 | 0 | if( isActiveThread() ) { |
222 | 0 | getStage().stopSE( id, mode ); |
223 | } |
|
224 | 0 | } |
225 | ||
226 | /** |
|
227 | * ステージを指定されたエフェクトを使用して更新します。 |
|
228 | * @param effect エフェクト名 |
|
229 | */ |
|
230 | public void updateStage( String effect ) |
|
231 | { |
|
232 | 0 | Logger.debug( "[scenario.stage] update stage. effect=" + effect ); |
233 | 0 | if( _level > 1 ) { |
234 | 0 | return; |
235 | } |
|
236 | ||
237 | 0 | Stage stage = getStage(); |
238 | 0 | stage.updateCanvas( effect ); |
239 | 0 | } |
240 | ||
241 | /** |
|
242 | * エフェクトを使用せずにステージを更新します。 |
|
243 | */ |
|
244 | public void updateStage() |
|
245 | { |
|
246 | 0 | if( isActiveThread() ) { |
247 | 0 | updateStage( null ); |
248 | } |
|
249 | 0 | } |
250 | ||
251 | /** |
|
252 | * テキストキャンバスを隠します。 |
|
253 | */ |
|
254 | public void hideTextCanvas() |
|
255 | { |
|
256 | 0 | if( isActiveThread() ) { |
257 | 0 | getCanvasManager().hideTextCanvas(); |
258 | } |
|
259 | 0 | } |
260 | ||
261 | /** |
|
262 | * ステージを取得します。 |
|
263 | * @return ステージ |
|
264 | */ |
|
265 | protected Stage getStage() |
|
266 | { |
|
267 | 0 | return getCanvasManager().getStage(); |
268 | } |
|
269 | ||
270 | /** |
|
271 | * スライドが表示中かどうかを判定します。 |
|
272 | * @return スライドが表示中の場合 <code>true</code>,非表示中の場合 <code>false</code> |
|
273 | */ |
|
274 | public boolean isSlideVisible() |
|
275 | { |
|
276 | 0 | return (getStage().getSlideImage() != null); |
277 | } |
|
278 | ||
279 | ||
280 | // |
|
281 | // Coordinator の実装 |
|
282 | // |
|
283 | public void prepare( SceneContext context, Thread activeThread ) |
|
284 | { |
|
285 | 0 | super.prepare( context, activeThread ); |
286 | 0 | _level = 0; |
287 | 0 | } |
288 | ||
289 | /** |
|
290 | * StageCanvas に対する操作を開始します。 |
|
291 | */ |
|
292 | public void begin() |
|
293 | { |
|
294 | 0 | if( isActiveThread() ) { |
295 | 0 | _level++; |
296 | 0 | getCanvasManager().hideTextCanvas(); |
297 | 0 | getActionControler().setActive( false ); |
298 | 0 | getActionControler().setSaveEnabled( true ); |
299 | } |
|
300 | 0 | } |
301 | ||
302 | /** |
|
303 | * StageCanvas に対する操作を終了し、キャンバスの状態を確定します。 |
|
304 | */ |
|
305 | public void commit() |
|
306 | { |
|
307 | 0 | if( isActiveThread() ) { |
308 | 0 | _level--; |
309 | 0 | if( _level == 0 ) { |
310 | 0 | ActionControler controler = getActionControler(); |
311 | 0 | controler.setActive( true ); |
312 | 0 | controler.setSaveEnabled( false ); |
313 | 0 | Stage stage = getStage(); |
314 | 0 | stage.commit(); |
315 | } |
|
316 | } |
|
317 | 0 | } |
318 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |