1
2
3
4
5
6
7
8
9 package tsukuba_bunko.peko.scenario;
10
11 import tsukuba_bunko.peko.ActionControler;
12 import tsukuba_bunko.peko.PekoSystem;
13
14 import tsukuba_bunko.peko.canvas.CanvasManager;
15
16
17 /***
18 * Canvas モジュールに対する操作を取り持つクラスの基本機能を提供します。
19 * @author $Author: ppoi $
20 * @version $Revision: 1.1 $
21 */
22 public abstract class Coordinator {
23
24 /***
25 * シーンコンテクスト
26 */
27 protected SceneContext _context = null;
28
29 /***
30 * 現在アクティブなシーン処理スレッド
31 */
32 protected Thread _activeThread = null;
33
34
35 /***
36 * <code>Coordinator</code> のインスタンスを生成します。
37 */
38 protected Coordinator()
39 {
40 super();
41 }
42
43
44 /***
45 * この Coordinator インスタンスを指定されたコンテクスト、シーン処理スレッドで動作するように設定します。
46 * @param context シーンコンテクスト
47 * @param activeThread アクティブなシーン処理スレッド
48 */
49 public void prepare( SceneContext context, Thread activeThread )
50 {
51 _context = context;
52 _activeThread = activeThread;
53 }
54
55 /***
56 * Coordinator を非アクティブにします。
57 */
58 public void dormantize()
59 {
60 _activeThread = null;
61 }
62
63 public abstract void begin();
64
65 public abstract void commit();
66
67 /***
68 * 現在のスレッドがアクティブなスレッドかどうかを判定します。
69 * @return 現在のスレッドがアクティブな場合 <code>true</code>、それ以外の場合 <code>false</code>
70 */
71 protected boolean isActiveThread()
72 {
73 return (_activeThread == Thread.currentThread());
74 }
75
76 /***
77 * 現在処理中のシーンコンテクストを取得します。
78 * @return シーンコンテクスト
79 */
80 protected SceneContext getSceneContext()
81 {
82 return _context;
83 }
84
85 /***
86 * CanvasManager を取得します。
87 * @return CanvasManager
88 */
89 protected CanvasManager getCanvasManager()
90 {
91 return PekoSystem.getInstance().getCanvasManager();
92 }
93
94 /***
95 * ActionControler を取得します。
96 * @return ActionControler
97 */
98 protected ActionControler getActionControler()
99 {
100 return PekoSystem.getInstance().getActionControler();
101 }
102 }