ruby-miyako-mswin32 2.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 +1115 -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 +87 -0
- data/lib/Miyako/API/audio.rb +584 -0
- data/lib/Miyako/API/basic_data.rb +1026 -0
- data/lib/Miyako/API/bitmap.rb +534 -0
- data/lib/Miyako/API/choices.rb +481 -0
- data/lib/Miyako/API/collision.rb +638 -0
- data/lib/Miyako/API/diagram.rb +586 -0
- data/lib/Miyako/API/drawing.rb +151 -0
- data/lib/Miyako/API/exceptions.rb +105 -0
- data/lib/Miyako/API/fixedmap.rb +462 -0
- data/lib/Miyako/API/font.rb +430 -0
- data/lib/Miyako/API/input.rb +456 -0
- data/lib/Miyako/API/layout.rb +644 -0
- data/lib/Miyako/API/map.rb +583 -0
- data/lib/Miyako/API/map_event.rb +222 -0
- data/lib/Miyako/API/modules.rb +357 -0
- data/lib/Miyako/API/movie.rb +166 -0
- data/lib/Miyako/API/parts.rb +188 -0
- data/lib/Miyako/API/plane.rb +205 -0
- data/lib/Miyako/API/screen.rb +341 -0
- data/lib/Miyako/API/shape.rb +443 -0
- data/lib/Miyako/API/sprite.rb +773 -0
- data/lib/Miyako/API/sprite_animation.rb +494 -0
- data/lib/Miyako/API/sprite_list.rb +1135 -0
- data/lib/Miyako/API/spriteunit.rb +168 -0
- data/lib/Miyako/API/story.rb +350 -0
- data/lib/Miyako/API/textbox.rb +773 -0
- data/lib/Miyako/API/utility.rb +419 -0
- data/lib/Miyako/API/viewport.rb +190 -0
- data/lib/Miyako/API/yuki.rb +1180 -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 +201 -0
- data/lib/Miyako/miyako_no_katana.so +0 -0
- data/lib/Miyako/miyako_require_only.rb +35 -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 +329 -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 +25 -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 +66 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +108 -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 +199 -0
@@ -0,0 +1,341 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
=begin
|
3
|
+
--
|
4
|
+
Miyako v2.1
|
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 'singleton'
|
24
|
+
|
25
|
+
module Miyako
|
26
|
+
|
27
|
+
#==画面管理モジュール
|
28
|
+
module Screen
|
29
|
+
#デフォルトの画面解像度(幅)
|
30
|
+
DefaultWidth = 640
|
31
|
+
#デフォルトの画面解像度(高さ)
|
32
|
+
DefaultHeight = 480
|
33
|
+
#fpsの最大値(1000fps)
|
34
|
+
FpsMax = 1000
|
35
|
+
#画面モードの数(ウインドウモード、フルスクリーンモード)
|
36
|
+
WINMODES = 2
|
37
|
+
#ウインドウモードを示す値
|
38
|
+
WINDOW_MODE = 0
|
39
|
+
#フルスクリーンモードを示す値
|
40
|
+
FULLSCREEN_MODE = 1
|
41
|
+
#ウインドウモード・フルスクリーンモードを切り替える際のフラグを示す配列
|
42
|
+
ScreenFlag = $miyako_use_opengl ? [SDL::OPENGL, SDL::OPENGL | SDL::FULLSCREEN] : [SDL::HWSURFACE | SDL::DOUBLEBUF | SDL::ANYFORMAT, SDL::ANYFORMAT | SDL::FULLSCREEN]
|
43
|
+
|
44
|
+
def Screen::get_fps_count
|
45
|
+
return @@fps == 0 ? 0 : FpsMax / @@fps
|
46
|
+
end
|
47
|
+
|
48
|
+
@@initialized = false
|
49
|
+
|
50
|
+
@@fps = 0 # fps=0 : no-limit
|
51
|
+
@@fpsView = false
|
52
|
+
@@fpscnt = Screen::get_fps_count
|
53
|
+
@@interval = 0
|
54
|
+
@@min_interval = 3
|
55
|
+
@@min_interval_r = @@min_interval / 1000
|
56
|
+
@@t = 0
|
57
|
+
@@freezing = false
|
58
|
+
@@mode = WINDOW_MODE
|
59
|
+
@@unit = SpriteUnitFactory.create
|
60
|
+
|
61
|
+
@@size = Size.new(DefaultWidth, DefaultHeight)
|
62
|
+
@@in_the_scene = false
|
63
|
+
@@screen = nil
|
64
|
+
@@viewport = nil
|
65
|
+
|
66
|
+
@@pre_render_array = []
|
67
|
+
@@auto_render_array = []
|
68
|
+
|
69
|
+
#===画面関連の初期化処理
|
70
|
+
#呼び出し時に、別プロセスで生成したSDL::Screenクラスインスタンスを引数として渡すと、
|
71
|
+
#Miyakoはこのインスタンスを利用して描画を行う
|
72
|
+
#ただし、既に初期化済みの時はMiyakoErrorが発生する
|
73
|
+
#_screen_:: 別のプロセスで生成されたSDL::Screenクラスのインスタンス。省略時はnil
|
74
|
+
def Screen.init(screen = nil)
|
75
|
+
raise MiyakoError, "Already initialized!" if @@initialized
|
76
|
+
#プログラムで使用する色深度を示す。デフォルトは現在システムが使用している色深度
|
77
|
+
$miyako_bpp ||= SDL.video_info.bpp
|
78
|
+
#色深度が32ビット以外の時はエラーを返す
|
79
|
+
raise MiyakoError, "Unsupported Color bits! : #{$miyako_bpp}" unless [32].include?($miyako_bpp)
|
80
|
+
|
81
|
+
if $miyako_use_opengl
|
82
|
+
SDL::GL.set_attr(SDL::GL::RED_SIZE, 8)
|
83
|
+
SDL::GL.set_attr(SDL::GL::GREEN_SIZE, 8)
|
84
|
+
SDL::GL.set_attr(SDL::GL::BLUE_SIZE, 8)
|
85
|
+
SDL::GL.set_attr(SDL::GL::ALPHA_SIZE, 8)
|
86
|
+
SDL::GL.set_attr(SDL::GL::DEPTH_SIZE, 32)
|
87
|
+
SDL::GL.set_attr(SDL::GL::STENCIL_SIZE, 32)
|
88
|
+
SDL::GL.set_attr(SDL::GL::DOUBLEBUFFER, 1)
|
89
|
+
end
|
90
|
+
|
91
|
+
Screen::check_mode_error(screen)
|
92
|
+
@@initialized = true
|
93
|
+
end
|
94
|
+
|
95
|
+
#===画面関係の初期化がされた?
|
96
|
+
def Screen.initialized?
|
97
|
+
@@initialized
|
98
|
+
end
|
99
|
+
|
100
|
+
#===画面の状態(ウインドウモードとフルスクリーンモード)を設定する
|
101
|
+
#_v_:: ウィンドウモードのときは、Screen::WINDOW_MODE、 フルスクリーンモードのときはScreen::FULLSCREEN_MODE
|
102
|
+
def Screen::set_mode(v)
|
103
|
+
if v.to_i == WINDOW_MODE || v.to_i == FULLSCREEN_MODE
|
104
|
+
@@mode = v.to_i
|
105
|
+
Screen::check_mode_error
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
#=== 事前描画インスタンス配列を取得する
|
110
|
+
#Screenモジュールに属している事前レンダー(プリレンダー)配列にアクセス可能
|
111
|
+
#この配列に取り込んだインスタンスは、配列インデックスの順に描画される
|
112
|
+
#また、配列の要素は、必ずrenderメソッドを実装していなければならない(renderメソッドで描画するため)
|
113
|
+
#但し、配列の要素が配列のときは、再帰的に描画が可能
|
114
|
+
#描画は、Screen.pre_renderメソッドの明示的呼び出しで実行される
|
115
|
+
#返却値:: 自動描画配列
|
116
|
+
def Screen::pre_render_array
|
117
|
+
@@pre_render_array
|
118
|
+
end
|
119
|
+
|
120
|
+
#=== 自動描画インスタンス配列を取得する
|
121
|
+
#Screenモジュールに属しているオートレンダー(自動描画)配列にアクセス可能
|
122
|
+
#この配列に取り込んだインスタンスは、配列インデックスの順に描画される
|
123
|
+
#また、配列の要素は、必ずrenderメソッドを実装していなければならない(renderメソッドで描画するため)
|
124
|
+
#但し、配列の要素が配列のときは、再帰的に描画が可能
|
125
|
+
#返却値:: 自動描画配列
|
126
|
+
def Screen::auto_render_array
|
127
|
+
@@auto_render_array
|
128
|
+
end
|
129
|
+
|
130
|
+
#===ウインドウモードとフルスクリーンモードを切り替える
|
131
|
+
def Screen::toggle_mode
|
132
|
+
@@mode = (@@mode + 1) % WINMODES
|
133
|
+
Screen::check_mode_error
|
134
|
+
end
|
135
|
+
|
136
|
+
def Screen::fps # :nodoc:
|
137
|
+
return @@fps
|
138
|
+
end
|
139
|
+
|
140
|
+
def Screen::fps=(val) # :nodoc:
|
141
|
+
@@fps = val
|
142
|
+
@@fpscnt = @@fps == 0 ? 0 : Screen::get_fps_count
|
143
|
+
end
|
144
|
+
|
145
|
+
def Screen::fps_view # :nodoc:
|
146
|
+
return @@fpsView
|
147
|
+
end
|
148
|
+
|
149
|
+
def Screen::fps_view=(val) # :nodoc:
|
150
|
+
@@fpsView = val
|
151
|
+
end
|
152
|
+
|
153
|
+
#===画面を管理するインスタンスを取得する
|
154
|
+
#返却値:: 画面インスタンス(SDL::Screenクラスのインスタンス)
|
155
|
+
def Screen::bitmap
|
156
|
+
return @@screen
|
157
|
+
end
|
158
|
+
|
159
|
+
#===画面の幅を取得する
|
160
|
+
#返却値:: 画面の幅(ピクセル)
|
161
|
+
def Screen::w
|
162
|
+
return @@size[0]
|
163
|
+
end
|
164
|
+
|
165
|
+
#===画面の高さを取得する
|
166
|
+
#返却値:: 画面の高さ(ピクセル)
|
167
|
+
def Screen::h
|
168
|
+
return @@size[1]
|
169
|
+
end
|
170
|
+
|
171
|
+
#===画面を管理するSpriteUnitを取得する
|
172
|
+
#新しいSpriteUnitを作成して返す
|
173
|
+
#返却値:: SpriteUnitインスタンス
|
174
|
+
def Screen::to_unit
|
175
|
+
return @@unit.dup
|
176
|
+
end
|
177
|
+
|
178
|
+
#===画像の回転・拡大・縮小の中心座標を取得する
|
179
|
+
#x方向の中心座標を取得する
|
180
|
+
#返却値:: 中心座標。
|
181
|
+
def Screen::center_x
|
182
|
+
return @@unit.cx
|
183
|
+
end
|
184
|
+
|
185
|
+
#===画像の回転・拡大・縮小の中心座標を取得する
|
186
|
+
#x方向の中心座標を取得する
|
187
|
+
#_pos_:: 中心座標
|
188
|
+
def Screen::center_x=(pos)
|
189
|
+
@@unit.cx = pos
|
190
|
+
end
|
191
|
+
|
192
|
+
#===画像の回転・拡大・縮小の中心座標を取得する
|
193
|
+
#y方向の中心座標を取得する
|
194
|
+
#返却値:: 中心座標。
|
195
|
+
def Screen::center_y
|
196
|
+
return @@unit.cy
|
197
|
+
end
|
198
|
+
|
199
|
+
#===画像の回転・拡大・縮小の中心座標を取得する
|
200
|
+
#y方向の中心座標を取得する
|
201
|
+
#_pos_:: 中心座標
|
202
|
+
def Screen::center_y=(pos)
|
203
|
+
@@unit.cy = pos
|
204
|
+
end
|
205
|
+
|
206
|
+
#===現在の画面の大きさを矩形で取得する
|
207
|
+
#返却値:: 画像の大きさ(Rect構造体のインスタンス)
|
208
|
+
def Screen::rect
|
209
|
+
return Rect.new(*([0, 0]+@@size.to_a))
|
210
|
+
end
|
211
|
+
|
212
|
+
#===現在の画面の最大の大きさを矩形で取得する
|
213
|
+
#但し、Screenの場合は最大の大きさ=画面の大きさなので、rectと同じ値が得られる
|
214
|
+
#返却値:: 画像の大きさ(Rect構造体のインスタンス)
|
215
|
+
def Screen::broad_rect
|
216
|
+
return Screen.rect
|
217
|
+
end
|
218
|
+
|
219
|
+
#===現在のビューポート(表示区画)を取得する
|
220
|
+
#ビューポートの設定は、Viewport#renderで行う
|
221
|
+
#返却値:: ビューポート(Viewportクラスのインスタンス)
|
222
|
+
def Screen::viewport
|
223
|
+
return @@viewport
|
224
|
+
end
|
225
|
+
|
226
|
+
#===現在の画面の大きさを取得する
|
227
|
+
#返却値:: 画像の大きさ(Size構造体のインスタンス)
|
228
|
+
def Screen::size
|
229
|
+
return @@size.dup
|
230
|
+
end
|
231
|
+
|
232
|
+
#===Segment構造体を生成する
|
233
|
+
# 生成される線分は、x方向が[0,w-1]、y方向が[0,h-1]となる
|
234
|
+
#返却値:: 生成したSegment構造体インスタンス
|
235
|
+
def Screen::segment
|
236
|
+
return Segments.create([0, 0, @@size[0]-1, @@size[1]-1])
|
237
|
+
end
|
238
|
+
|
239
|
+
#===画面のサーフェスを生成する
|
240
|
+
#グローバル変数$miyako_open_screen==falseの時に有効
|
241
|
+
#画面サーフェスを生成し、表示させる
|
242
|
+
#事前に何もせずにrequire 'Miyako/miyako'を行うと本メソッドが自動的に呼ばれる。
|
243
|
+
#require 前に"$miyako_open_screen=false"と記述すると、本メソッドの呼び出しが抑制される。
|
244
|
+
#_screen_:: 別のプロセスで生成されたSDL::Screenクラスのインスタンス。省略時はnil
|
245
|
+
def Screen::open(screen = nil)
|
246
|
+
@@screen = screen ? screen : SDL::Screen.open(*(@@size.to_a << $miyako_bpp << ScreenFlag[@@mode]))
|
247
|
+
SpriteUnitFactory.apply(@@unit, {:bitmap=>@@screen, :ow=>@@screen.w, :oh=>@@screen.h})
|
248
|
+
@@size = Size.new(@@screen.w, @@screen.h)
|
249
|
+
@@viewport = Viewport.new(0, 0, @@screen.w, @@screen.h)
|
250
|
+
end
|
251
|
+
|
252
|
+
def Screen::set_screen(screen = nil) #:nodoc:
|
253
|
+
return false unless (screen || SDL.checkVideoMode(*(@@size.to_a << $miyako_bpp << ScreenFlag[@@mode])))
|
254
|
+
self.open(screen)
|
255
|
+
return true
|
256
|
+
end
|
257
|
+
|
258
|
+
#===画面の大きさを変更する
|
259
|
+
#単位はピクセル単位
|
260
|
+
#_w_:: 画面の幅
|
261
|
+
#_h_:: 画面の高さ
|
262
|
+
#返却値:: 変更に成功したときは trueを返す
|
263
|
+
def Screen::set_size(w, h)
|
264
|
+
return unless @@screen
|
265
|
+
return false unless SDL.checkVideoMode(w, h, $miyako_bpp, ScreenFlag[@@mode])
|
266
|
+
@@size = Size.new(w, h)
|
267
|
+
self.open
|
268
|
+
return true
|
269
|
+
end
|
270
|
+
|
271
|
+
def Screen::check_mode_error(screen = nil) #:nodoc:
|
272
|
+
unless Screen::set_screen(screen)
|
273
|
+
raise MiyakoError, "Sorry, this system not supported display...";
|
274
|
+
exit(1)
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
#===現在表示されている画面を画像(Spriteクラスのインスタンス)として取り込む
|
279
|
+
#_param_:: Spriteインスタンスを生成するときに渡すパラメータ(但し、:sizeと:typeのみ使用する)
|
280
|
+
#_rect_:: 取り込む画像の矩形(4要素の配列もしくはRect構造体のインスタンス)
|
281
|
+
#デフォルトは画面の大きさ
|
282
|
+
#返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
|
283
|
+
def Screen::capture(param, rect = ([0, 0] + @@size.to_a))
|
284
|
+
param = param.dup
|
285
|
+
param[:size] = Size.new(*(rect[2..3]))
|
286
|
+
dst = Sprite.new(param)
|
287
|
+
SDL.blit_surface(*([@@screen] + rect.to_a << dst.bitmap << 0 << 0))
|
288
|
+
return dst
|
289
|
+
end
|
290
|
+
|
291
|
+
#===現在表示されている画面を複製し、Spriteクラスのインスタンスとして取得
|
292
|
+
#Screen.captureとの違いは、パラメータ・サイズは不変(画面の大きさで複製)で取り扱う。
|
293
|
+
#引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
|
294
|
+
#返却値:: 取り込んだ画像を含むSpriteクラスのインスタンス
|
295
|
+
def Screen::to_sprite
|
296
|
+
dst = Sprite.new(:size => Size.new(*(rect[2..3])), :type => :ac)
|
297
|
+
Bitmap.screen_to_ac(Screen, dst)
|
298
|
+
yield dst if block_given?
|
299
|
+
return dst
|
300
|
+
end
|
301
|
+
|
302
|
+
#===画像を消去する
|
303
|
+
#画像を黒色([0,0,0,0])で塗りつぶす
|
304
|
+
def Screen::clear
|
305
|
+
return unless @@screen
|
306
|
+
@@screen.fillRect(0, 0, @@screen.w, @@screen.h, [0, 0, 0, 0])
|
307
|
+
end
|
308
|
+
|
309
|
+
#===プリレンダー配列に登録されたインスタンスを画面に描画する
|
310
|
+
#Screen.pre_render_arrayに登録したインスタンスを描画する
|
311
|
+
def Screen::pre_render
|
312
|
+
end
|
313
|
+
|
314
|
+
#===画面を更新する
|
315
|
+
#描画した画面を、実際にミニ見える形に反映させる
|
316
|
+
#呼び出し時に画面の消去は行われないため、消去が必要なときは明示的にScreen.clearメソッドを呼び出す必要がある
|
317
|
+
#また、自動描画配列にインスタンスを入れているときは、このメソッドを呼び出した時に描画されるため
|
318
|
+
#(つまり、表示の最後に描画される)、描画の順番に注意して配列を利用すること
|
319
|
+
def Screen::render
|
320
|
+
Shape.text(
|
321
|
+
{
|
322
|
+
:text => (FpsMax/(@@interval == 0 ? 1 : @@interval)).to_s() + " fps",
|
323
|
+
:font => Font.sans_serif
|
324
|
+
}
|
325
|
+
).render if @@fpsView
|
326
|
+
Screen::update_tick
|
327
|
+
@@screen.flip
|
328
|
+
end
|
329
|
+
|
330
|
+
#===インスタンスの内容を画面に描画する
|
331
|
+
#転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
|
332
|
+
#画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
|
333
|
+
#ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
|
334
|
+
#(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
|
335
|
+
#ブロックの引数は、|インスタンスのSpriteUnit,画面のSpriteUnit|となる。
|
336
|
+
#_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
|
337
|
+
#返却値:: 自分自身を返す
|
338
|
+
def Screen::render_screen(src)
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|