cyross-ruby-miyako-mswin32 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +929 -0
- data/img/cursor.png +0 -0
- data/img/cursors.png +0 -0
- data/img/dice.png +0 -0
- data/img/wait_cursor.png +0 -0
- data/img/win_base.png +0 -0
- data/img/window.png +0 -0
- data/install_miyako.rb +61 -0
- data/lib/Miyako/API/audio.rb +198 -0
- data/lib/Miyako/API/basic_data.rb +573 -0
- data/lib/Miyako/API/bitmap.rb +507 -0
- data/lib/Miyako/API/choices.rb +475 -0
- data/lib/Miyako/API/collision.rb +460 -0
- data/lib/Miyako/API/diagram.rb +561 -0
- data/lib/Miyako/API/drawing.rb +151 -0
- data/lib/Miyako/API/fixedmap.rb +428 -0
- data/lib/Miyako/API/font.rb +403 -0
- data/lib/Miyako/API/input.rb +447 -0
- data/lib/Miyako/API/layout.rb +433 -0
- data/lib/Miyako/API/map.rb +529 -0
- data/lib/Miyako/API/map_event.rb +198 -0
- data/lib/Miyako/API/modules.rb +109 -0
- data/lib/Miyako/API/movie.rb +154 -0
- data/lib/Miyako/API/parts.rb +189 -0
- data/lib/Miyako/API/plane.rb +166 -0
- data/lib/Miyako/API/screen.rb +325 -0
- data/lib/Miyako/API/shape.rb +443 -0
- data/lib/Miyako/API/sprite.rb +752 -0
- data/lib/Miyako/API/sprite_animation.rb +481 -0
- data/lib/Miyako/API/spriteunit.rb +147 -0
- data/lib/Miyako/API/story.rb +300 -0
- data/lib/Miyako/API/textbox.rb +725 -0
- data/lib/Miyako/API/utility.rb +388 -0
- data/lib/Miyako/API/viewport.rb +140 -0
- data/lib/Miyako/API/yuki.rb +996 -0
- data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
- data/lib/Miyako/EXT/raster_scroll.rb +138 -0
- data/lib/Miyako/EXT/slides.rb +157 -0
- data/lib/Miyako/miyako.rb +171 -0
- data/lib/Miyako/miyako_no_katana.so +0 -0
- data/logo/EGSR_logo.png +0 -0
- data/logo/EGSR_logo_bg.png +0 -0
- data/logo/EGSR_logo_fg.png +0 -0
- data/logo/EGSR_title_banner.png +0 -0
- data/logo/EGSR_title_logo.png +0 -0
- data/logo/miyako.png +0 -0
- data/logo/miyako_banner.png +0 -0
- data/logo/space.png +0 -0
- data/sample/Animation1/m1ku.rb +68 -0
- data/sample/Animation1/m1ku_arm_0.png +0 -0
- data/sample/Animation1/m1ku_arm_1.png +0 -0
- data/sample/Animation1/m1ku_arm_2.png +0 -0
- data/sample/Animation1/m1ku_arm_3.png +0 -0
- data/sample/Animation1/m1ku_back.jpg +0 -0
- data/sample/Animation1/m1ku_body.png +0 -0
- data/sample/Animation1/m1ku_eye_0.png +0 -0
- data/sample/Animation1/m1ku_eye_1.png +0 -0
- data/sample/Animation1/m1ku_eye_2.png +0 -0
- data/sample/Animation1/m1ku_eye_3.png +0 -0
- data/sample/Animation1/m1ku_hair_front.png +0 -0
- data/sample/Animation1/m1ku_hair_rear.png +0 -0
- data/sample/Animation1/readme.txt +72 -0
- data/sample/Animation2/lex.rb +96 -0
- data/sample/Animation2/lex_back.png +0 -0
- data/sample/Animation2/lex_body.png +0 -0
- data/sample/Animation2/lex_roadroller.png +0 -0
- data/sample/Animation2/lex_wheel_0.png +0 -0
- data/sample/Animation2/lex_wheel_1.png +0 -0
- data/sample/Animation2/lex_wheel_2.png +0 -0
- data/sample/Animation2/readme.txt +72 -0
- data/sample/Animation2/song_title.png +0 -0
- data/sample/Diagram_sample/back.png +0 -0
- data/sample/Diagram_sample/chr01.png +0 -0
- data/sample/Diagram_sample/chr02.png +0 -0
- data/sample/Diagram_sample/cursor.png +0 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +387 -0
- data/sample/Diagram_sample/readme.txt +90 -0
- data/sample/Diagram_sample/wait_cursor.png +0 -0
- data/sample/Room3/blue.rb +297 -0
- data/sample/Room3/ending.rb +180 -0
- data/sample/Room3/green.rb +220 -0
- data/sample/Room3/image/akamatsu.png +0 -0
- data/sample/Room3/image/aoyama.png +0 -0
- data/sample/Room3/image/congra.png +0 -0
- data/sample/Room3/image/congratulation.png +0 -0
- data/sample/Room3/image/congratulation_bg.png +0 -0
- data/sample/Room3/image/cursor.png +0 -0
- data/sample/Room3/image/midori.png +0 -0
- data/sample/Room3/image/mittsu_no_oheya.png +0 -0
- data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
- data/sample/Room3/image/room_blue.png +0 -0
- data/sample/Room3/image/room_green.png +0 -0
- data/sample/Room3/image/room_red.png +0 -0
- data/sample/Room3/image/start.png +0 -0
- data/sample/Room3/image/three_doors.png +0 -0
- data/sample/Room3/image/wait_cursor.png +0 -0
- data/sample/Room3/main.rb +120 -0
- data/sample/Room3/main_component.rb +59 -0
- data/sample/Room3/readme.txt +76 -0
- data/sample/Room3/red.rb +227 -0
- data/sample/Room3/room3.rb +27 -0
- data/sample/Room3/title.rb +184 -0
- data/sample/ball_action_sample.rb +204 -0
- data/sample/blit_rop.rb +70 -0
- data/sample/cairo_sample.rb +25 -0
- data/sample/circle_collision_test.rb +62 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +104 -0
- data/sample/fixed_map_test/cursor.png +0 -0
- data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
- data/sample/fixed_map_test/map.csv +19 -0
- data/sample/fixed_map_test/map_01.png +0 -0
- data/sample/fixed_map_test/mapchip.csv +23 -0
- data/sample/fixed_map_test/monster.png +0 -0
- data/sample/fixed_map_test/readme.txt +72 -0
- data/sample/map_test/chara.rb +58 -0
- data/sample/map_test/chr1.png +0 -0
- data/sample/map_test/cursor.png +0 -0
- data/sample/map_test/main_parts.rb +69 -0
- data/sample/map_test/main_scene.rb +153 -0
- data/sample/map_test/map.png +0 -0
- data/sample/map_test/map2.png +0 -0
- data/sample/map_test/map_layer.csv +127 -0
- data/sample/map_test/map_manager.rb +75 -0
- data/sample/map_test/map_test.rb +23 -0
- data/sample/map_test/mapchip.csv +21 -0
- data/sample/map_test/oasis.rb +71 -0
- data/sample/map_test/readme.txt +89 -0
- data/sample/map_test/route.rb +157 -0
- data/sample/map_test/sea.png +0 -0
- data/sample/map_test/town.rb +74 -0
- data/sample/map_test/wait_cursor.png +0 -0
- data/sample/map_test/window.png +0 -0
- data/sample/polygon_test.rb +35 -0
- data/sample/rasterscroll.rb +25 -0
- data/sample/takahashi.rb +42 -0
- data/sample/text.png +0 -0
- data/sample/textbox_sample.rb +190 -0
- data/sample/transform.rb +54 -0
- data/sample/utility_test.rb +73 -0
- data/sample/utility_test2.rb +61 -0
- data/sample/utility_test3.rb +64 -0
- data/sample/utility_test4.rb +73 -0
- data/uninstall_miyako.rb +19 -0
- metadata +196 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
--
|
|
4
|
+
Miyako v2.0
|
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
|
6
|
+
|
|
7
|
+
This library is free software; you can redistribute it and/or
|
|
8
|
+
modify it under the terms of the GNU Lesser General Public
|
|
9
|
+
License as published by the Free Software Foundation; either
|
|
10
|
+
version 2.1 of the License, or (at your option) any later version.
|
|
11
|
+
|
|
12
|
+
This library is distributed in the hope that it will be useful,
|
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
Lesser General Public License for more details.
|
|
16
|
+
|
|
17
|
+
You should have received a copy of the GNU Lesser General Public
|
|
18
|
+
License along with this library; if not, write to the Free Software
|
|
19
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
++
|
|
21
|
+
=end
|
|
22
|
+
|
|
23
|
+
require 'csv'
|
|
24
|
+
require 'forwardable'
|
|
25
|
+
|
|
26
|
+
module Miyako
|
|
27
|
+
#==マップ上のイベント全体を管理するクラス
|
|
28
|
+
#Map/FixedMapクラス内で使用する
|
|
29
|
+
#使い方:
|
|
30
|
+
#
|
|
31
|
+
#(1)インスタンスを生成する
|
|
32
|
+
#
|
|
33
|
+
#em = MapEventManager.new
|
|
34
|
+
#
|
|
35
|
+
#(2)MapEventクラスとIDを登録する
|
|
36
|
+
#
|
|
37
|
+
#(例)MapEventモジュールをmixinしたクラスXを、ID=0のイベントとして登録
|
|
38
|
+
#
|
|
39
|
+
#em.add(0, X)
|
|
40
|
+
#
|
|
41
|
+
#(3)Map/FixedMapクラスインスタンス生成時に引数として渡す
|
|
42
|
+
#
|
|
43
|
+
#@map = Map.new(...,em)
|
|
44
|
+
#
|
|
45
|
+
#(注)登録するIDは、イベントレイヤー上の番号と対応しておくこと
|
|
46
|
+
class MapEventManager
|
|
47
|
+
#===インスタンスを生成する
|
|
48
|
+
#_map_obj_:: Managerが属するMap/FixedMapクラスのインスタンス
|
|
49
|
+
#返却値:: 生成されたインスタンス
|
|
50
|
+
def initialize
|
|
51
|
+
@map = nil
|
|
52
|
+
@id2event = Hash.new
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def set(map) #:nodoc:
|
|
56
|
+
@map = map
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
#===イベントクラスをマップに追加登録する
|
|
60
|
+
#_id_:: マップ(イベントレイヤ)上の番号。
|
|
61
|
+
#イベントレイヤ上に存在しない番号を渡してもエラーや警告は発しない
|
|
62
|
+
#_event_:: イベントクラス。クラスのインスタンスではないことに注意!
|
|
63
|
+
#返却値:: 自分自身を返す
|
|
64
|
+
def add(id, event)
|
|
65
|
+
@id2event[id] = event
|
|
66
|
+
return self
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
#===イベントが登録されているかを確認する
|
|
70
|
+
#引数で渡した番号に対応するイベントクラスが登録されているかどうかを確認する
|
|
71
|
+
#_id_:: イベントクラスに対応した番号
|
|
72
|
+
#返却値:: イベントクラスが登録されている時はtrueを返す
|
|
73
|
+
def include?(id)
|
|
74
|
+
raise MiyakoError, "This MapEventManager instance is not set Map/FixedMap instance!" unless @map
|
|
75
|
+
return @id2event.has_key?(id)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
#===イベントのインスタンスを生成する(番号指定)
|
|
79
|
+
#インスタンス生成と同時に、マップ上の座標を渡して初期位置を設定する
|
|
80
|
+
#登録していないIDを指定するとエラーになる
|
|
81
|
+
#
|
|
82
|
+
#設置は、マップ上の座標に設置する。表示上の座標ではない事に注意。
|
|
83
|
+
#_id_:: イベントクラスと登録した際の番号
|
|
84
|
+
#_x_:: イベントを設置する位置(X座標)
|
|
85
|
+
#_y_:: イベントを設置する位置(Y座標)
|
|
86
|
+
#返却値:: 生成したインスタンス
|
|
87
|
+
def create(id, x = 0, y = 0)
|
|
88
|
+
raise MiyakoError, "This MapEventManager instance is not set Map/FixedMap instance!" unless @map
|
|
89
|
+
raise MiyakoError, "Unknown Map Event ID! : #{id}" unless include?(id)
|
|
90
|
+
return @id2event[id].new(@map, x, y)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
#===すべての登録済みイベントクラスの登録を解除する
|
|
94
|
+
def clear
|
|
95
|
+
@id2event.keys.each{|k| @id2event[k] = nil }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def dispose
|
|
99
|
+
@map = nil
|
|
100
|
+
@id2event.clear
|
|
101
|
+
@id2event = nil
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
#==マップ上のイベントを管理するモジュール
|
|
106
|
+
#実際に使う際にはmix-inして使う
|
|
107
|
+
module MapEvent
|
|
108
|
+
#===イベントのインスタンスを作成する
|
|
109
|
+
#引数として渡せるX,Y座標の値は、表示上ではなく理論上の座標位置
|
|
110
|
+
#_map_obj_:: 関連づけられたMap/FixedMapクラスのインスタンス
|
|
111
|
+
#_x_:: マップ上のX座標の値。デフォルトは0
|
|
112
|
+
#_y_:: マップ上のY座標の値。デフォルトは0
|
|
113
|
+
#返却値:: 生成されたインスタンス
|
|
114
|
+
def initialize(map_obj, x = 0, y = 0)
|
|
115
|
+
init(map_obj, x, y)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
#===イベント生成時のテンプレートメソッド
|
|
119
|
+
#イベントクラスからインスタンスが生成された時の初期化処理を実装する
|
|
120
|
+
#_map_obj_:: 関連づけられたMap/FixedMapクラスのインスタンス
|
|
121
|
+
#_x_:: マップ上のX座標の値
|
|
122
|
+
#_y_:: マップ上のY座標の値
|
|
123
|
+
def init(map_obj, x, y)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
#===インスタンス内の表示やデータを更新するテンプレートメソッド
|
|
127
|
+
#マップ画像が更新された時に呼び出される
|
|
128
|
+
#_map_obj_:: インスタンスが組み込まれているMap/FixedMapクラスのインスタンス
|
|
129
|
+
#_events_:: マップに登録されているイベントインスタンスの配列
|
|
130
|
+
#_params_:: 開発者が明示的に用意した引数。内容はハッシュ
|
|
131
|
+
def update(map_obj, events, params)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
#===イベントを指定の分量で移動させる(テンプレートメソッド)
|
|
135
|
+
#_dx_:: 移動量(x座標)。単位はピクセル
|
|
136
|
+
#_dy_:: 移動量(y座標)。単位はピクセル
|
|
137
|
+
#返却値:: 自分自身を返す
|
|
138
|
+
def move(dx,dy)
|
|
139
|
+
return self
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
#===イベントを指定の位置へ移動させる(テンプレートメソッド)
|
|
143
|
+
#_x_:: 移動先の位置(x座標)。単位はピクセル
|
|
144
|
+
#_y_:: 移動先の位置(y座標)。単位はピクセル
|
|
145
|
+
#返却値:: 自分自身を返す
|
|
146
|
+
def move_to(x,y)
|
|
147
|
+
return self
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
#===イベント発生可否問い合わせ(テンプレートメソッド)
|
|
151
|
+
#イベント発生が可能なときはtrueを返す(その後、startメソッドを呼び出す)処理を実装する
|
|
152
|
+
#_param_:: 問い合わせに使用するパラメータ群。デフォルトはnil
|
|
153
|
+
#返却値:: イベント発生可能ならばtrue
|
|
154
|
+
def met?(*params)
|
|
155
|
+
return false
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
#===画面に画像を描画する(テンプレートメソッド)
|
|
159
|
+
#イベントで所持している画像を描画するメソッドを実装する
|
|
160
|
+
#(イベント内部で用意している画像の描画用テンプレートメソッド)
|
|
161
|
+
def render
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
#===イベントを発生させる(テンプレートメソッド)
|
|
165
|
+
#ここに、イベント発生イベントを実装する。更新はupdateメソッドに実装する
|
|
166
|
+
#_param_:: イベント発生に必要なパラメータ群。デフォルトはnil
|
|
167
|
+
#返却値:: 自分自身を返す
|
|
168
|
+
def start(*params)
|
|
169
|
+
return self
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
#===イベントを停止・終了させる(テンプレートメソッド)
|
|
173
|
+
#ここに、イベント停止・終了イベントを実装する。更新はupdateメソッドに実装する
|
|
174
|
+
#_param_:: イベント発生に必要なパラメータ群。デフォルトはnil
|
|
175
|
+
#返却値:: 自分自身を返す
|
|
176
|
+
def stop(*params)
|
|
177
|
+
return self
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
#===イベント発生中問い合わせ(テンプレートメソッド)
|
|
181
|
+
#ここに、イベント発生中の問い合わせ処理を実装する。
|
|
182
|
+
#_param_:: あとで書く
|
|
183
|
+
#返却値:: イベント発生中の時はtrue
|
|
184
|
+
def executing?
|
|
185
|
+
return false
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
#===イベント終了後の後処理(テンプレートメソッド)
|
|
189
|
+
#ここに、イベント終了後の後処理を実装する。
|
|
190
|
+
def final
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
#===イベントに使用しているインスタンスを解放する(テンプレートメソッド)
|
|
194
|
+
#ここに、インスタンス解放処理を実装する。
|
|
195
|
+
def dispose
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
--
|
|
4
|
+
Miyako v2.0
|
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
|
6
|
+
|
|
7
|
+
This library is free software; you can redistribute it and/or
|
|
8
|
+
modify it under the terms of the GNU Lesser General Public
|
|
9
|
+
License as published by the Free Software Foundation; either
|
|
10
|
+
version 2.1 of the License, or (at your option) any later version.
|
|
11
|
+
|
|
12
|
+
This library is distributed in the hope that it will be useful,
|
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
Lesser General Public License for more details.
|
|
16
|
+
|
|
17
|
+
You should have received a copy of the GNU Lesser General Public
|
|
18
|
+
License along with this library; if not, write to the Free Software
|
|
19
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
++
|
|
21
|
+
=end
|
|
22
|
+
|
|
23
|
+
module Miyako
|
|
24
|
+
=begin rdoc
|
|
25
|
+
==基本スプライトモジュール
|
|
26
|
+
スプライトの基本メソッドで構成されるテンプレートモジュール
|
|
27
|
+
=end
|
|
28
|
+
module SpriteBase
|
|
29
|
+
#===スプライトインスタンスを取得するメソッドのテンプレート
|
|
30
|
+
#_data_:: あとで書く
|
|
31
|
+
#返却値:: 自分自身を返す
|
|
32
|
+
def to_sprite(data = nil)
|
|
33
|
+
return self
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
#===SpriteUnit構造体を取得するメソッドのテンプレート
|
|
37
|
+
#返却値:: nilを返す
|
|
38
|
+
def to_unit
|
|
39
|
+
return nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#===領域の矩形を取得するメソッドのテンプレート
|
|
43
|
+
#返却値:: nilを返す
|
|
44
|
+
def rect
|
|
45
|
+
return nil
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
#===領域の最大矩形を取得するメソッドのテンプレート
|
|
49
|
+
#返却値:: nilを返す
|
|
50
|
+
def broad_rect
|
|
51
|
+
return nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
#===画像(Bitmapクラスのインスタンス)を取得するメソッドのテンプレート
|
|
55
|
+
#返却値:: nilを返す
|
|
56
|
+
def bitmap
|
|
57
|
+
return nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#===画像内での描画開始位置(x座標)を取得するメソッドのテンプレート
|
|
61
|
+
#返却値:: 0を返す
|
|
62
|
+
def ox
|
|
63
|
+
return 0
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#===画像内での描画開始位置(y座標)を取得するメソッドのテンプレート
|
|
67
|
+
#返却値:: 0を返す
|
|
68
|
+
def oy
|
|
69
|
+
return 0
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
#===画面への描画を指示するメソッドのテンプレート
|
|
73
|
+
#_block_:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。呼び先に渡すことが出来る。ブロックがなければnilが入る
|
|
74
|
+
#返却値:: 自分自身を返す
|
|
75
|
+
def render(&block)
|
|
76
|
+
return self
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
=begin rdoc
|
|
81
|
+
==基本アニメーションモジュール
|
|
82
|
+
アニメーションの基本メソッドで構成されるテンプレートモジュール
|
|
83
|
+
=end
|
|
84
|
+
module Animation
|
|
85
|
+
#===アニメーションを開始するメソッドのテンプレート
|
|
86
|
+
#返却値:: 自分自身を返す
|
|
87
|
+
def start
|
|
88
|
+
return self
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
#===アニメーションを停止するメソッドのテンプレート
|
|
92
|
+
#返却値:: 自分自身を返す
|
|
93
|
+
def stop
|
|
94
|
+
return self
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
#===アニメーションパターンを先頭に戻すメソッドのテンプレート
|
|
98
|
+
#返却値:: 自分自身を返す
|
|
99
|
+
def reset
|
|
100
|
+
return self
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
#===アニメーションを更新するメソッドのテンプレート
|
|
104
|
+
#返却値:: falseを返す(アニメーションパターンが更新されたときにtrueを返す)
|
|
105
|
+
def update_animation
|
|
106
|
+
return false
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
=begin
|
|
3
|
+
--
|
|
4
|
+
Miyako v2.0
|
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
|
6
|
+
|
|
7
|
+
This library is free software; you can redistribute it and/or
|
|
8
|
+
modify it under the terms of the GNU Lesser General Public
|
|
9
|
+
License as published by the Free Software Foundation; either
|
|
10
|
+
version 2.1 of the License, or (at your option) any later version.
|
|
11
|
+
|
|
12
|
+
This library is distributed in the hope that it will be useful,
|
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
Lesser General Public License for more details.
|
|
16
|
+
|
|
17
|
+
You should have received a copy of the GNU Lesser General Public
|
|
18
|
+
License along with this library; if not, write to the Free Software
|
|
19
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
|
+
++
|
|
21
|
+
=end
|
|
22
|
+
|
|
23
|
+
module Miyako
|
|
24
|
+
#==動画管理クラス
|
|
25
|
+
#動画ファイル(MPEGファイル限定)をロード・再生するクラス
|
|
26
|
+
class Movie
|
|
27
|
+
include SpriteBase
|
|
28
|
+
include Layout
|
|
29
|
+
extend Forwardable
|
|
30
|
+
|
|
31
|
+
@@movie_list = []
|
|
32
|
+
|
|
33
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
|
34
|
+
|
|
35
|
+
#===動画のインスタンスを作成する
|
|
36
|
+
#(但し、現在の所、loopパラメータは利用できない)
|
|
37
|
+
#_fname_:: 動画ファイル名
|
|
38
|
+
#_loops_:: ループ再生の可否。ループ再生させるときは true を渡す
|
|
39
|
+
#返却値:: 生成したインスタンス
|
|
40
|
+
def initialize(fname, loops = true)
|
|
41
|
+
init_layout
|
|
42
|
+
|
|
43
|
+
@x = 0
|
|
44
|
+
@y = 0
|
|
45
|
+
|
|
46
|
+
@movie = SDL::MPEG.load(fname)
|
|
47
|
+
@size = Size.new(@movie.info.width, @movie.info.height)
|
|
48
|
+
set_layout_size(*(@size.to_a))
|
|
49
|
+
|
|
50
|
+
@visible = true
|
|
51
|
+
@sprite = Sprite.new({:size=>@size , :type=>:movie})
|
|
52
|
+
@sprite.snap(self)
|
|
53
|
+
|
|
54
|
+
@movie.enable_audio(true) unless $not_use_audio
|
|
55
|
+
@movie.enable_video(true)
|
|
56
|
+
@movie.set_loop(loops)
|
|
57
|
+
|
|
58
|
+
@movie.set_display(@sprite.bitmap)
|
|
59
|
+
@movie.scale(1.0)
|
|
60
|
+
@@movie_list.push(self)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def update_layout_position #:nodoc:
|
|
64
|
+
@x = @layout.pos[0]
|
|
65
|
+
@y = @layout.pos[1]
|
|
66
|
+
@sprite.move_to(*@layout.pos)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
#===動画再生時の音量を指定する
|
|
70
|
+
#_v_:: 指定する音量。(0~100までの整数)
|
|
71
|
+
def set_volume(v)
|
|
72
|
+
return if v < 0 || v > 100 || $not_use_audio
|
|
73
|
+
@movie.set_volume(v)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#===動画再生中かを返す
|
|
77
|
+
#返却値:: 再生中のときは true を返す
|
|
78
|
+
def playing?
|
|
79
|
+
return @movie.status == SDL::MPEG::PLAYING
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
#===動画データを解放する
|
|
83
|
+
def dispose
|
|
84
|
+
@movie.stop if playing?
|
|
85
|
+
@sprite.dispose
|
|
86
|
+
layout_dispose
|
|
87
|
+
@@movie_list.delete(self)
|
|
88
|
+
@movie = nil
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
#===再生領域の範囲を設定する
|
|
92
|
+
#元動画のうち、表示させたい箇所を Rect クラスのインスタンスか4要素の配列で指定する
|
|
93
|
+
#_rect_:: 再生領域。
|
|
94
|
+
def region(rect)
|
|
95
|
+
@movie.set_display_region(*(rect.to_a))
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
#===動画の再生を一時停止する
|
|
99
|
+
#再生を裁可するには、 Miyako::Movie#rewind メソッドを呼び出す必要がある
|
|
100
|
+
#_pause_by_input_:: ダミー
|
|
101
|
+
def pause(pause_by_input)
|
|
102
|
+
@movie.pause
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
#===動画を再生させる
|
|
106
|
+
#動画の先頭から再生する。ブロックを渡したときは、ブロックを評価している間動画を再生する
|
|
107
|
+
#_vol_:: 動画再生時の音量。0~100の整数
|
|
108
|
+
def start(vol = nil)
|
|
109
|
+
set_volume(vol) if vol
|
|
110
|
+
@movie.play
|
|
111
|
+
if block_given?
|
|
112
|
+
yield self
|
|
113
|
+
@movie.stop
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
#===動画再生を停止する
|
|
118
|
+
def stop
|
|
119
|
+
@movie.stop
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
#===再生中の動画の再生位置を返す
|
|
123
|
+
#位置は秒単位で返す
|
|
124
|
+
#返却値:: 再生位置
|
|
125
|
+
def current
|
|
126
|
+
return @movie.info.current_time
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
#===動画の長さを返す
|
|
130
|
+
#長さは、秒単位で返す。
|
|
131
|
+
#返却値:: 動画の長さ
|
|
132
|
+
def length
|
|
133
|
+
return @movie.info.total_time
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
#===画面に描画を指示する
|
|
137
|
+
#現在表示できる選択肢を、現在の状態で描画するよう指示する
|
|
138
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
|
139
|
+
#返却値:: 自分自身を返す
|
|
140
|
+
def render
|
|
141
|
+
return slef nless @visible
|
|
142
|
+
@sprite.render
|
|
143
|
+
return self
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
#===一時停止中の動画の再生を再開する
|
|
147
|
+
#Miyako::Movie#pause メソッドを実行した後に呼び出す
|
|
148
|
+
def_delegators(:@movie, :rewind)
|
|
149
|
+
#===指定時間ぶん、スキップ再生を行う
|
|
150
|
+
#size:: スキップ長(秒単位)
|
|
151
|
+
def_delegators(:@movie, :skip)
|
|
152
|
+
def_delegators(:@sprite, :rect, :broad_rect, :ox, :oy)
|
|
153
|
+
end
|
|
154
|
+
end
|