cyross-ruby-miyako 2.0.0 → 2.0.5.1.0
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 +106 -154
- data/defines.h +144 -0
- data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
- data/extern.h +29 -0
- data/install_miyako.rb +26 -14
- data/lib/Miyako/API/audio.rb +2 -2
- data/lib/Miyako/API/basic_data.rb +183 -41
- data/lib/Miyako/API/bitmap.rb +474 -2
- data/lib/Miyako/API/choices.rb +215 -48
- data/lib/Miyako/API/collision.rb +267 -251
- data/lib/Miyako/API/diagram.rb +58 -70
- data/lib/Miyako/API/drawing.rb +93 -52
- data/lib/Miyako/API/fixedmap.rb +233 -120
- data/lib/Miyako/API/font.rb +59 -40
- data/lib/Miyako/API/input.rb +34 -27
- data/lib/Miyako/API/layout.rb +154 -172
- data/lib/Miyako/API/map.rb +285 -159
- data/lib/Miyako/API/map_event.rb +4 -4
- data/lib/Miyako/API/modules.rb +1 -1
- data/lib/Miyako/API/movie.rb +8 -5
- data/lib/Miyako/API/parts.rb +44 -9
- data/lib/Miyako/API/plane.rb +37 -2
- data/lib/Miyako/API/screen.rb +90 -22
- data/lib/Miyako/API/shape.rb +118 -37
- data/lib/Miyako/API/sprite.rb +475 -61
- data/lib/Miyako/API/sprite_animation.rb +83 -63
- data/lib/Miyako/API/spriteunit.rb +47 -13
- data/lib/Miyako/API/story.rb +123 -47
- data/lib/Miyako/API/textbox.rb +361 -132
- data/lib/Miyako/API/utility.rb +388 -0
- data/lib/Miyako/API/viewport.rb +54 -349
- data/lib/Miyako/API/yuki.rb +570 -353
- data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
- data/lib/Miyako/EXT/slides.rb +22 -1
- data/lib/Miyako/miyako.rb +12 -13
- 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/miyako_basicdata.c +590 -0
- data/miyako_bitmap.c +1225 -0
- data/miyako_collision.c +403 -0
- data/miyako_drawing.c +187 -0
- data/miyako_font.c +334 -0
- data/miyako_hsv.c +830 -0
- data/miyako_layout.c +191 -0
- data/miyako_no_katana.c +1074 -0
- data/miyako_transform.c +438 -0
- data/miyako_utility.c +288 -0
- data/sample/Animation1/m1ku.rb +10 -31
- data/sample/Animation1/readme.txt +6 -6
- data/sample/Animation2/lex.rb +1 -0
- data/sample/Animation2/readme.txt +6 -6
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
- data/sample/Diagram_sample/readme.txt +9 -6
- data/sample/Room3/blue.rb +234 -187
- data/sample/Room3/ending.rb +68 -63
- data/sample/Room3/green.rb +159 -124
- data/sample/Room3/main.rb +50 -32
- data/sample/Room3/main_component.rb +3 -2
- data/sample/Room3/readme.txt +6 -6
- data/sample/Room3/red.rb +161 -134
- data/sample/Room3/room3.rb +1 -0
- data/sample/Room3/title.rb +75 -62
- 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 +66 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +108 -0
- data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
- data/sample/fixed_map_test/readme.txt +38 -38
- data/sample/map_test/chara.rb +17 -9
- data/sample/map_test/main_parts.rb +30 -9
- data/sample/map_test/main_scene.rb +57 -41
- data/sample/map_test/map_manager.rb +13 -30
- data/sample/map_test/map_test.rb +2 -2
- data/sample/map_test/oasis.rb +17 -11
- data/sample/map_test/readme.txt +50 -48
- data/sample/map_test/route.rb +46 -33
- data/sample/map_test/town.rb +19 -13
- 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
- data/win/miyako_no_katana.so +0 -0
- metadata +165 -148
- data/miyako.png +0 -0
- data/miyako_banner.png +0 -0
- data/miyako_no_katana/miyako_no_katana.c +0 -3301
- data/sample/fixed_map_test/map_sample.rb +0 -121
data/lib/Miyako/API/map_event.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -151,7 +151,7 @@ module Miyako
|
|
151
151
|
#イベント発生が可能なときはtrueを返す(その後、startメソッドを呼び出す)処理を実装する
|
152
152
|
#_param_:: 問い合わせに使用するパラメータ群。デフォルトはnil
|
153
153
|
#返却値:: イベント発生可能ならばtrue
|
154
|
-
def met?(params
|
154
|
+
def met?(*params)
|
155
155
|
return false
|
156
156
|
end
|
157
157
|
|
@@ -165,7 +165,7 @@ module Miyako
|
|
165
165
|
#ここに、イベント発生イベントを実装する。更新はupdateメソッドに実装する
|
166
166
|
#_param_:: イベント発生に必要なパラメータ群。デフォルトはnil
|
167
167
|
#返却値:: 自分自身を返す
|
168
|
-
def start(params
|
168
|
+
def start(*params)
|
169
169
|
return self
|
170
170
|
end
|
171
171
|
|
@@ -173,7 +173,7 @@ module Miyako
|
|
173
173
|
#ここに、イベント停止・終了イベントを実装する。更新はupdateメソッドに実装する
|
174
174
|
#_param_:: イベント発生に必要なパラメータ群。デフォルトはnil
|
175
175
|
#返却値:: 自分自身を返す
|
176
|
-
def stop(params
|
176
|
+
def stop(*params)
|
177
177
|
return self
|
178
178
|
end
|
179
179
|
|
data/lib/Miyako/API/modules.rb
CHANGED
data/lib/Miyako/API/movie.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -29,6 +29,8 @@ module Miyako
|
|
29
29
|
extend Forwardable
|
30
30
|
|
31
31
|
@@movie_list = []
|
32
|
+
|
33
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
32
34
|
|
33
35
|
#===動画のインスタンスを作成する
|
34
36
|
#(但し、現在の所、loopパラメータは利用できない)
|
@@ -45,6 +47,7 @@ module Miyako
|
|
45
47
|
@size = Size.new(@movie.info.width, @movie.info.height)
|
46
48
|
set_layout_size(*(@size.to_a))
|
47
49
|
|
50
|
+
@visible = true
|
48
51
|
@sprite = Sprite.new({:size=>@size , :type=>:movie})
|
49
52
|
@sprite.snap(self)
|
50
53
|
|
@@ -60,6 +63,7 @@ module Miyako
|
|
60
63
|
def update_layout_position #:nodoc:
|
61
64
|
@x = @layout.pos[0]
|
62
65
|
@y = @layout.pos[1]
|
66
|
+
@sprite.move_to(*@layout.pos)
|
63
67
|
end
|
64
68
|
|
65
69
|
#===動画再生時の音量を指定する
|
@@ -101,7 +105,7 @@ module Miyako
|
|
101
105
|
#===動画を再生させる
|
102
106
|
#動画の先頭から再生する。ブロックを渡したときは、ブロックを評価している間動画を再生する
|
103
107
|
#_vol_:: 動画再生時の音量。0~100の整数
|
104
|
-
def
|
108
|
+
def start(vol = nil)
|
105
109
|
set_volume(vol) if vol
|
106
110
|
@movie.play
|
107
111
|
if block_given?
|
@@ -131,11 +135,10 @@ module Miyako
|
|
131
135
|
|
132
136
|
#===画面に描画を指示する
|
133
137
|
#現在表示できる選択肢を、現在の状態で描画するよう指示する
|
134
|
-
|
135
|
-
#(但し、実際に描画されるのはScreen.renderメソッドが呼び出された時)
|
136
|
-
#++
|
138
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
137
139
|
#返却値:: 自分自身を返す
|
138
140
|
def render
|
141
|
+
return slef nless @visible
|
139
142
|
@sprite.render
|
140
143
|
return self
|
141
144
|
end
|
data/lib/Miyako/API/parts.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -33,14 +33,17 @@ module Miyako
|
|
33
33
|
include Layout
|
34
34
|
extend Forwardable
|
35
35
|
|
36
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
37
|
+
|
36
38
|
#===Partsクラスインスタンスを生成
|
37
39
|
#_size_:: パーツ全体の大きさ。Size構造体のインスタンスもしくは要素数が2の配列
|
38
40
|
def initialize(size)
|
39
|
-
init_layout
|
40
|
-
set_layout_size(size[0], size[1])
|
41
|
-
|
42
41
|
@parts = {}
|
43
42
|
@parts_list = []
|
43
|
+
@visible = true
|
44
|
+
|
45
|
+
init_layout
|
46
|
+
set_layout_size(size[0], size[1])
|
44
47
|
end
|
45
48
|
|
46
49
|
#===nameで示した補助パーツを返す
|
@@ -97,7 +100,7 @@ module Miyako
|
|
97
100
|
return self
|
98
101
|
end
|
99
102
|
|
100
|
-
#===メインパーツと補助パーツのすべてのアニメーションを更新する
|
103
|
+
#===メインパーツと補助パーツのすべてのアニメーションを更新する
|
101
104
|
#返却値:: 自分自身
|
102
105
|
def update_animation
|
103
106
|
self.each{|parts| parts.update_animation }
|
@@ -110,23 +113,32 @@ module Miyako
|
|
110
113
|
return self
|
111
114
|
end
|
112
115
|
|
113
|
-
|
114
|
-
|
115
|
-
def update
|
116
|
-
self.update_animation
|
116
|
+
def update #:nodoc:
|
117
|
+
self.each{|parts| parts.update }
|
117
118
|
return self
|
118
119
|
end
|
119
120
|
|
120
121
|
#===スプライトに変換した画像を表示する
|
121
122
|
#すべてのパーツを貼り付けた、1枚のスプライトを返す
|
123
|
+
#引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
|
122
124
|
#返却値:: 描画したスプライト
|
123
125
|
def to_sprite
|
124
126
|
rect = self.broad_rect
|
125
127
|
sprite = Sprite.new(:size=>rect.to_a[2,2], :type=>:ac)
|
128
|
+
Drawing.fill(sprite, [0,0,0])
|
129
|
+
Bitmap.ck_to_ac!(sprite, [0,0,0])
|
126
130
|
self.render_to(sprite){|sunit, dunit| sunit.x -= rect.x; sunit.y -= rect.y }
|
131
|
+
yield sprite if block_given?
|
127
132
|
return sprite
|
128
133
|
end
|
129
134
|
|
135
|
+
#===SpriteUnit構造体を生成する
|
136
|
+
#いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。
|
137
|
+
#返却値:: 生成したSpriteUnit構造体
|
138
|
+
def to_unit
|
139
|
+
return self.to_sprite.to_unit
|
140
|
+
end
|
141
|
+
|
130
142
|
#===現在の画面の最大の大きさを矩形で取得する
|
131
143
|
#各パーツの位置により、取得できる矩形の大きさが変わる
|
132
144
|
#但し、パーツ未登録の時は、インスタンス生成時の大きさから矩形を生成する
|
@@ -150,5 +162,28 @@ module Miyako
|
|
150
162
|
@parts.clear
|
151
163
|
@parts = nil
|
152
164
|
end
|
165
|
+
|
166
|
+
#===パーツを画面に描画する
|
167
|
+
#各パーツの描画範囲は、それぞれのSpriteUnitの(ox,oy)を起点にする。
|
168
|
+
#画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、各パーツを貼り付ける。
|
169
|
+
#ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
|
170
|
+
#(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
|
171
|
+
#ブロックの引数は、|パーツのSpriteUnit|となる。
|
172
|
+
#デフォルトでは、描画順は登録順となる。順番を変更したいときは、renderメソッドをオーバーライドする必要がある
|
173
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
174
|
+
def render
|
175
|
+
end
|
176
|
+
|
177
|
+
#===パーツを画面に描画する
|
178
|
+
#各パーツの描画範囲は、それぞれのSpriteUnitの(ox,oy)を起点にする。
|
179
|
+
#転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
|
180
|
+
#ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
|
181
|
+
#(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
|
182
|
+
#ブロックの引数は、|パーツのSpriteUnit|となる。
|
183
|
+
#デフォルトでは、描画順は登録順となる。順番を変更したいときは、render_toメソッドをオーバーライドする必要がある
|
184
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
185
|
+
#_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
|
186
|
+
def render_to(dst)
|
187
|
+
end
|
153
188
|
end
|
154
189
|
end
|
data/lib/Miyako/API/plane.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -45,6 +45,7 @@ module Miyako
|
|
45
45
|
end
|
46
46
|
resize
|
47
47
|
@pos = Point.new(0, 0)
|
48
|
+
@visible = true
|
48
49
|
end
|
49
50
|
|
50
51
|
#===プレーン画像左上の x 座標の値を取得する
|
@@ -115,17 +116,51 @@ module Miyako
|
|
115
116
|
@size.w.times{|x|
|
116
117
|
u = @sprite.to_unit
|
117
118
|
u.move_to(x * @sprite.ow + @pos.x, y * @sprite.oh + @pos.y)
|
118
|
-
Screen.render_screen(u) if u.x >= 0 && u.y >= 0 && u.x + u.ow <= Screen.
|
119
|
+
Screen.render_screen(u) if u.x >= 0 && u.y >= 0 && u.x + u.ow <= Screen.bitmap.w && u.y + u.oh <= Screen.bitmap.h
|
119
120
|
}
|
120
121
|
}
|
121
122
|
return self
|
122
123
|
end
|
123
124
|
|
125
|
+
#===現在表示されているプレーンをSpriteクラスのインスタンスとして取得
|
126
|
+
#引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
|
127
|
+
#返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
|
128
|
+
def to_sprite
|
129
|
+
sprite = Sprite.new(:size=>self.rect.to_a[2..3], :type=>:ac)
|
130
|
+
Drawing.fill(sprite, [0,0,0])
|
131
|
+
Bitmap.ck_to_ac!(sprite, [0,0,0])
|
132
|
+
self.render_to(sprite)
|
133
|
+
yield sprite if block_given?
|
134
|
+
return sprite
|
135
|
+
end
|
136
|
+
|
137
|
+
#===SpriteUnit構造体を生成する
|
138
|
+
#いったんSpriteインスタンスを作成し、それをもとにSpriteUnit構造体を生成する。
|
139
|
+
#返却値:: 生成したSpriteUnit構造体
|
140
|
+
def to_unit
|
141
|
+
return self.to_sprite.to_unit
|
142
|
+
end
|
143
|
+
|
124
144
|
def Plane::resize #:nodoc:
|
125
145
|
@@planes.each{|p| p.resize }
|
126
146
|
return nil
|
127
147
|
end
|
128
148
|
|
149
|
+
#===プレーンを画面に描画する
|
150
|
+
#転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
|
151
|
+
#画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
|
152
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
153
|
+
def render
|
154
|
+
end
|
155
|
+
|
156
|
+
#===プレーンを画像に描画する
|
157
|
+
#転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点にする。
|
158
|
+
#転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、タイリングを行いながら貼り付ける。
|
159
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
160
|
+
#_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
|
161
|
+
def render_to(dst)
|
162
|
+
end
|
163
|
+
|
129
164
|
def_delegators(:sprite)
|
130
165
|
end
|
131
166
|
end
|
data/lib/Miyako/API/screen.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -46,9 +46,17 @@ module Miyako
|
|
46
46
|
FULLSCREEN_MODE = 1
|
47
47
|
|
48
48
|
#ウインドウモード・フルスクリーンモードを切り替える際のフラグを示す配列
|
49
|
-
ScreenFlag =
|
50
|
-
|
51
|
-
|
49
|
+
ScreenFlag = $miyako_use_opengl ? [SDL::OPENGL, SDL::OPENGL | SDL::FULLSCREEN] : [SDL::HWSURFACE | SDL::DOUBLEBUF | SDL::ANYFORMAT, SDL::ANYFORMAT | SDL::FULLSCREEN]
|
50
|
+
|
51
|
+
if $miyako_use_opengl
|
52
|
+
SDL::GL.set_attr(SDL::GL::RED_SIZE, 8)
|
53
|
+
SDL::GL.set_attr(SDL::GL::GREEN_SIZE, 8)
|
54
|
+
SDL::GL.set_attr(SDL::GL::BLUE_SIZE, 8)
|
55
|
+
SDL::GL.set_attr(SDL::GL::ALPHA_SIZE, 8)
|
56
|
+
SDL::GL.set_attr(SDL::GL::DEPTH_SIZE, 32)
|
57
|
+
SDL::GL.set_attr(SDL::GL::STENCIL_SIZE, 32)
|
58
|
+
SDL::GL.set_attr(SDL::GL::DOUBLEBUFFER, 1)
|
59
|
+
end
|
52
60
|
|
53
61
|
def Screen::get_fps_count
|
54
62
|
return @@fps == 0 ? 0 : FpsMax / @@fps
|
@@ -71,6 +79,9 @@ module Miyako
|
|
71
79
|
@@screen = nil
|
72
80
|
@@viewport = nil
|
73
81
|
|
82
|
+
@@pre_render_array = []
|
83
|
+
@@auto_render_array = []
|
84
|
+
|
74
85
|
#===画面の状態(ウインドウモードとフルスクリーンモード)を設定する
|
75
86
|
#_v_:: ウィンドウモードのときは、Screen::WINDOW_MODE、 フルスクリーンモードのときはScreen::FULLSCREEN_MODE
|
76
87
|
def Screen::set_mode(v)
|
@@ -80,6 +91,27 @@ module Miyako
|
|
80
91
|
end
|
81
92
|
end
|
82
93
|
|
94
|
+
#=== 事前描画インスタンス配列を取得する
|
95
|
+
#Screenモジュールに属している事前レンダー(プリレンダー)配列にアクセス可能
|
96
|
+
#この配列に取り込んだインスタンスは、配列インデックスの順に描画される
|
97
|
+
#また、配列の要素は、必ずrenderメソッドを実装していなければならない(renderメソッドで描画するため)
|
98
|
+
#但し、配列の要素が配列のときは、再帰的に描画が可能
|
99
|
+
#描画は、Screen.pre_renderメソッドの明示的呼び出しで実行される
|
100
|
+
#返却値:: 自動描画配列
|
101
|
+
def Screen::pre_render_array
|
102
|
+
@@pre_render_array
|
103
|
+
end
|
104
|
+
|
105
|
+
#=== 自動描画インスタンス配列を取得する
|
106
|
+
#Screenモジュールに属しているオートレンダー(自動描画)配列にアクセス可能
|
107
|
+
#この配列に取り込んだインスタンスは、配列インデックスの順に描画される
|
108
|
+
#また、配列の要素は、必ずrenderメソッドを実装していなければならない(renderメソッドで描画するため)
|
109
|
+
#但し、配列の要素が配列のときは、再帰的に描画が可能
|
110
|
+
#返却値:: 自動描画配列
|
111
|
+
def Screen::auto_render_array
|
112
|
+
@@auto_render_array
|
113
|
+
end
|
114
|
+
|
83
115
|
#===ウインドウモードとフルスクリーンモードを切り替える
|
84
116
|
def Screen::toggle_mode
|
85
117
|
@@mode = (@@mode + 1) % WINMODES
|
@@ -105,7 +137,7 @@ module Miyako
|
|
105
137
|
|
106
138
|
#===画面を管理するインスタンスを取得する
|
107
139
|
#返却値:: 画面インスタンス(SDL::Screenクラスのインスタンス)
|
108
|
-
def Screen::
|
140
|
+
def Screen::bitmap
|
109
141
|
return @@screen
|
110
142
|
end
|
111
143
|
|
@@ -122,9 +154,10 @@ module Miyako
|
|
122
154
|
end
|
123
155
|
|
124
156
|
#===画面を管理するSpriteUnitを取得する
|
157
|
+
#得られるインスタンスは複写していないので、インスタンスの値を調整するには、dupメソッドで複製する必要がある
|
125
158
|
#返却値:: SpriteUnitインスタンス
|
126
159
|
def Screen::to_unit
|
127
|
-
return @@unit
|
160
|
+
return @@unit
|
128
161
|
end
|
129
162
|
|
130
163
|
#===画像の回転・拡大・縮小の中心座標を取得する
|
@@ -181,11 +214,26 @@ module Miyako
|
|
181
214
|
return @@size.dup
|
182
215
|
end
|
183
216
|
|
184
|
-
|
185
|
-
|
186
|
-
|
217
|
+
#===Segment構造体を生成する
|
218
|
+
# 生成される線分は、x方向が[0,w-1]、y方向が[0,h-1]となる
|
219
|
+
#返却値:: 生成したSegment構造体インスタンス
|
220
|
+
def Screen::segment
|
221
|
+
return Segment.new([0, @@size[0]-1], [0, @@size[1]-1])
|
222
|
+
end
|
223
|
+
|
224
|
+
#===画面のサーフェスを生成する
|
225
|
+
#グローバル変数$miyako_open_screen==falseの時に有効
|
226
|
+
#画面サーフェスを生成し、表示させる
|
227
|
+
#require 'Miyako/miyako'を記述する前に、"$miyako_open_screen=false"と記述すると
|
228
|
+
def Screen::open
|
229
|
+
@@screen = SDL::Screen.open(*(@@size.to_a << BPP << ScreenFlag[@@mode]))
|
187
230
|
SpriteUnitFactory.apply(@@unit, {:bitmap=>@@screen, :ow=>@@screen.w, :oh=>@@screen.h})
|
188
231
|
@@viewport = Viewport.new(0, 0, @@screen.w, @@screen.h)
|
232
|
+
end
|
233
|
+
|
234
|
+
def Screen::set_screen #:nodoc:
|
235
|
+
return false unless SDL.checkVideoMode(*(@@size.to_a << BPP << ScreenFlag[@@mode]))
|
236
|
+
self.open
|
189
237
|
return true
|
190
238
|
end
|
191
239
|
|
@@ -195,16 +243,15 @@ module Miyako
|
|
195
243
|
#_h_:: 画面の高さ
|
196
244
|
#返却値:: 変更に成功したときは trueを返す
|
197
245
|
def Screen::set_size(w, h)
|
246
|
+
return unless @@screen
|
198
247
|
return false unless SDL.checkVideoMode(w, h, BPP, ScreenFlag[@@mode])
|
199
248
|
@@size = Size.new(w, h)
|
200
|
-
|
201
|
-
SpriteUnitFactory.apply(@@unit, {:bitmap=>@@screen, :ow=>@@screen.w, :oh=>@@screen.h})
|
202
|
-
@@viewport = Viewport.new(0, 0, @@screen.w, @@screen.h)
|
249
|
+
self.open
|
203
250
|
return true
|
204
251
|
end
|
205
252
|
|
206
253
|
def Screen::check_mode_error #:nodoc:
|
207
|
-
unless Screen::set_screen
|
254
|
+
unless Screen::set_screen
|
208
255
|
print "Sorry, this system not supported display...\n";
|
209
256
|
exit(1)
|
210
257
|
end
|
@@ -227,31 +274,52 @@ module Miyako
|
|
227
274
|
|
228
275
|
#===現在表示されている画面を複製し、Spriteクラスのインスタンスとして取得
|
229
276
|
#Screen.captureとの違いは、パラメータ・サイズは不変(画面の大きさで複製)で取り扱う。
|
230
|
-
|
231
|
-
#_param_:: Spriteインスタンスを生成するときに渡すパラメータ(但し、:sizeと:typeのみ使用する)
|
232
|
-
#_rect_:: 取り込む画像の矩形(4要素の配列もしくはRect構造体のインスタンス)
|
233
|
-
#デフォルトは画面の大きさ
|
277
|
+
#引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
|
234
278
|
#返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
|
235
279
|
def Screen::to_sprite
|
236
|
-
|
237
|
-
|
238
|
-
|
280
|
+
dst = Sprite.new(:size => Size.new(*(rect[2..3])), :type => :ac)
|
281
|
+
Bitmap.screen_to_ac(Screen, dst)
|
282
|
+
yield dst if block_given?
|
239
283
|
return dst
|
240
284
|
end
|
241
285
|
|
242
286
|
#===画像を消去する
|
243
287
|
#画像を黒色([0,0,0,0])で塗りつぶす
|
244
288
|
def Screen::clear
|
289
|
+
return unless @@screen
|
245
290
|
@@screen.fillRect(0, 0, @@screen.w, @@screen.h, [0, 0, 0, 0])
|
246
291
|
end
|
247
292
|
|
293
|
+
#===プリレンダー配列に登録されたインスタンスを画面に描画する
|
294
|
+
#Screen.pre_render_arrayに登録したインスタンスを描画する
|
295
|
+
def Screen::pre_render
|
296
|
+
end
|
297
|
+
|
248
298
|
#===画面を更新する
|
249
299
|
#描画した画面を、実際にミニ見える形に反映させる
|
250
|
-
|
300
|
+
#呼び出し時に画面の消去は行われないため、消去が必要なときは明示的にScreen.clearメソッドを呼び出す必要がある
|
301
|
+
#また、自動描画配列にインスタンスを入れているときは、このメソッドを呼び出した時に描画されるため
|
302
|
+
#(つまり、表示の最後に描画される)、描画の順番に注意して配列を利用すること
|
251
303
|
def Screen::render
|
252
|
-
Shape.text(
|
304
|
+
Shape.text(
|
305
|
+
{
|
306
|
+
:text => (FpsMax/(@@interval == 0 ? 1 : @@interval)).to_s() + " fps",
|
307
|
+
:font => Font.sans_serif
|
308
|
+
}
|
309
|
+
).render if @@fpsView
|
253
310
|
Screen::update_tick
|
254
311
|
@@screen.flip
|
255
312
|
end
|
313
|
+
|
314
|
+
#===インスタンスの内容を画面に描画する
|
315
|
+
#転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
|
316
|
+
#画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
|
317
|
+
#ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
|
318
|
+
#(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
|
319
|
+
#ブロックの引数は、|インスタンスのSpriteUnit,画面のSpriteUnit|となる。
|
320
|
+
#_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
|
321
|
+
#返却値:: 自分自身を返す
|
322
|
+
def Screen::render_screen(src)
|
323
|
+
end
|
256
324
|
end
|
257
325
|
end
|