ruby-miyako 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +275 -20
- data/extern.h +21 -1
- data/install_miyako.rb +5 -3
- data/lib/Miyako/API/audio.rb +11 -6
- data/lib/Miyako/API/basic_data.rb +0 -985
- data/lib/Miyako/API/bitmap.rb +19 -22
- data/lib/Miyako/API/choices.rb +203 -69
- data/lib/Miyako/API/collision.rb +451 -9
- data/lib/Miyako/API/color.rb +177 -0
- data/lib/Miyako/API/diagram.rb +18 -20
- data/lib/Miyako/API/fixedmap.rb +207 -73
- data/lib/Miyako/API/font.rb +111 -18
- data/lib/Miyako/API/i_yuki.rb +1201 -0
- data/lib/Miyako/API/input.rb +65 -0
- data/lib/Miyako/API/layout.rb +41 -29
- data/lib/Miyako/API/map.rb +202 -157
- data/lib/Miyako/API/map_event.rb +86 -19
- data/lib/Miyako/API/map_struct.rb +268 -0
- data/lib/Miyako/API/modules.rb +136 -37
- data/lib/Miyako/API/movie.rb +8 -8
- data/lib/Miyako/API/parts.rb +63 -20
- data/lib/Miyako/API/plane.rb +4 -4
- data/lib/Miyako/API/screen.rb +16 -8
- data/lib/Miyako/API/sprite.rb +290 -23
- data/lib/Miyako/API/sprite_animation.rb +23 -11
- data/lib/Miyako/API/sprite_list.rb +406 -183
- data/lib/Miyako/API/story.rb +4 -65
- data/lib/Miyako/API/struct_point.rb +157 -0
- data/lib/Miyako/API/struct_rect.rb +233 -0
- data/lib/Miyako/API/struct_segment.rb +641 -0
- data/lib/Miyako/API/struct_size.rb +158 -0
- data/lib/Miyako/API/struct_square.rb +253 -0
- data/lib/Miyako/API/textbox.rb +49 -35
- data/lib/Miyako/API/viewport.rb +5 -5
- data/lib/Miyako/API/wait_counter.rb +350 -0
- data/lib/Miyako/API/yuki.rb +95 -60
- data/lib/Miyako/EXT/raster_scroll.rb +30 -8
- data/lib/Miyako/EXT/slides.rb +6 -6
- data/lib/Miyako/miyako.rb +25 -11
- data/lib/miyako.rb +28 -0
- data/lib/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +201 -17
- data/miyako_collision.c +315 -6
- data/miyako_diagram.c +331 -0
- data/miyako_drawing.c +26 -7
- data/miyako_font.c +259 -129
- data/miyako_input_audio.c +24 -14
- data/miyako_layout.c +106 -8
- data/miyako_no_katana.c +398 -171
- data/miyako_sprite2.c +275 -38
- data/miyako_transform.c +113 -107
- data/miyako_utility.c +34 -48
- data/miyako_yuki.c +241 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
- data/sample/Room3/blue.rb +19 -19
- data/sample/Room3/green.rb +9 -9
- data/sample/Room3/main.rb +12 -12
- data/sample/Room3/red.rb +12 -12
- data/sample/Room3/title.rb +15 -10
- data/sample/collision_test2.rb +2 -1
- data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
- data/sample/map_test/main_scene.rb +12 -10
- data/sample/map_test/map_manager.rb +14 -13
- data/sample/rasterscroll.rb +5 -5
- data/sample/takahashi.rb +3 -3
- data/sample/textbox_sample.rb +7 -6
- data/sample/transform.rb +2 -1
- data/uninstall_miyako.rb +4 -1
- data/win/miyako_no_katana.so +0 -0
- metadata +15 -4
- data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
- data/sample/cairo_sample.rb +0 -25
@@ -0,0 +1,177 @@
|
|
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
|
+
module Miyako
|
24
|
+
#==色を管理するクラス
|
25
|
+
#
|
26
|
+
#色情報は、[r(赤),g(緑),b(青),a(透明度)]、[r,g,b,a(透明度)]の2種類の配列
|
27
|
+
#
|
28
|
+
#それぞれの要素の値は0〜255の範囲
|
29
|
+
#
|
30
|
+
#4要素必要な色情報に3要素の配列を渡すと、自動的に4要素目(値は255)が挿入される
|
31
|
+
#
|
32
|
+
#(注)本クラスで採用する透明度と、画像が持つ透明度とは別物
|
33
|
+
class Color
|
34
|
+
@@symbol2color = {:black => [ 0, 0, 0, 255],
|
35
|
+
:white => [255,255,255, 255],
|
36
|
+
:blue => [ 0, 0,255, 255],
|
37
|
+
:green => [ 0,255, 0, 255],
|
38
|
+
:red => [255, 0, 0, 255],
|
39
|
+
:cyan => [ 0,255,255, 255],
|
40
|
+
:purple => [255, 0,255, 255],
|
41
|
+
:yellow => [255,255, 0, 255],
|
42
|
+
:light_gray => [200,200,200, 255],
|
43
|
+
:half_gray => [128,128,128, 255],
|
44
|
+
:half_blue => [ 0, 0,128, 255],
|
45
|
+
:half_green => [ 0,128, 0, 255],
|
46
|
+
:half_red => [128, 0, 0, 255],
|
47
|
+
:half_cyan => [ 0,128,128, 255],
|
48
|
+
:half_purple => [128, 0,128, 255],
|
49
|
+
:half_yellow => [128,128, 0, 255],
|
50
|
+
:dark_gray => [ 80, 80, 80, 255],
|
51
|
+
:dark_blue => [ 0, 0, 80, 255],
|
52
|
+
:dark_green => [ 0, 80, 0, 255],
|
53
|
+
:dark_red => [ 80, 0, 0, 255],
|
54
|
+
:dark_cyan => [ 0, 80, 80, 255],
|
55
|
+
:dark_purple => [ 80, 0, 80, 255],
|
56
|
+
:dark_yellow => [ 80, 80, 0, 255]}
|
57
|
+
@@symbol2color.default = nil
|
58
|
+
|
59
|
+
#===シンボルから色情報を取得する
|
60
|
+
#_name_::色に対応したシンボル(以下の一覧参照)。存在しないシンボルを渡したときはエラーを返す
|
61
|
+
#返却値::シンボルに対応した4要素の配列
|
62
|
+
#
|
63
|
+
#シンボル:: 色配列([赤,緑,青,透明度])
|
64
|
+
#:black:: [ 0, 0, 0, 255]
|
65
|
+
#:white:: [255,255,255, 255]
|
66
|
+
#:blue:: [ 0, 0,255, 255]
|
67
|
+
#:green:: [ 0,255, 0, 255]
|
68
|
+
#:red:: [255, 0, 0, 255]
|
69
|
+
#:cyan:: [ 0,255,255, 255]
|
70
|
+
#:purple:: [255, 0,255, 255]
|
71
|
+
#:yellow:: [255,255, 0, 255]
|
72
|
+
#:light_gray:: [200,200,200, 255]
|
73
|
+
#:half_gray:: [128,128,128, 255]
|
74
|
+
#:half_blue:: [ 0, 0,128, 255]
|
75
|
+
#:half_green:: [ 0,128, 0, 255]
|
76
|
+
#:half_red:: [128, 0, 0, 255]
|
77
|
+
#:half_cyan:: [ 0,128,128, 255]
|
78
|
+
#:half_purple:: [128, 0,128, 255]
|
79
|
+
#:half_yellow:: [128,128, 0, 255]
|
80
|
+
#:dark_gray:: [ 80, 80, 80, 255]
|
81
|
+
#:dark_blue:: [ 0, 0, 80, 255]
|
82
|
+
#:dark_green:: [ 0, 80, 0, 255]
|
83
|
+
#:dark_red:: [ 80, 0, 0, 255]
|
84
|
+
#:dark_cyan:: [ 0, 80, 80, 255]
|
85
|
+
#:dark_purple:: [ 80, 0, 80, 255]
|
86
|
+
#:dark_yellow:: [ 80, 80, 0, 255]
|
87
|
+
def Color.[](name, alpha = nil)
|
88
|
+
c = (@@symbol2color[name.to_sym].dup or raise MiyakoError, "Illegal Color Name! : #{name}")
|
89
|
+
c[3] = alpha if alpha
|
90
|
+
return c
|
91
|
+
end
|
92
|
+
|
93
|
+
#===Color.[]メソッドで使用できるシンボルと色情報との対を登録する
|
94
|
+
#_name_:: 色に対応させるシンボル
|
95
|
+
#_value_:: 色情報を示す3〜4要素の配列。3要素のときは4要素目を自動的に追加する
|
96
|
+
def Color.[]=(name, value)
|
97
|
+
@@symbol2color[name.to_sym] = value
|
98
|
+
@@symbol2color[name.to_sym] << 255 if value.length == 3
|
99
|
+
end
|
100
|
+
|
101
|
+
#===様々な形式のデータを色情報に変換する
|
102
|
+
#_v_::変換対象のインスタンス。変換可能な内容は以下の一覧参照
|
103
|
+
#_alpha_::透明度。デフォルトはnil
|
104
|
+
#
|
105
|
+
#インスタンス:: 書式
|
106
|
+
#配列:: 最低3要素の数値の配列
|
107
|
+
#文字列:: ”#RRGGBB"で示す16進数の文字列、もしくは"red"、"black"など。使える文字列はColor.[]で使えるシンボルに対応
|
108
|
+
#数値:: 32bitの値を8bitずつ割り当て(aaaaaaaarrrrrrrrggggggggbbbbbbbb)
|
109
|
+
#シンボル:: Color.[]と同じ
|
110
|
+
def Color::to_rgb(v, alpha = nil)
|
111
|
+
c = (v.to_miyako_color or raise MiyakoError, "Illegal parameter")
|
112
|
+
c[3] = alpha if alpha
|
113
|
+
return c
|
114
|
+
end
|
115
|
+
|
116
|
+
#===色情報をColor.[]メソッドで使用できるシンボルと色情報との対を登録する
|
117
|
+
#_cc_:: 色情報(シンボル、文字列)
|
118
|
+
#_value_:: 色情報を示す3〜4要素の配列。3要素のときは4要素目を自動的に追加する
|
119
|
+
def Color::to_s(cc)
|
120
|
+
c = to_rgb(cc)
|
121
|
+
return "[#{c[0]},#{c[1]},#{c[2]},#{c[3]}]"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# for duck typing
|
127
|
+
class Object
|
128
|
+
def to_miyako_color #:nodoc:
|
129
|
+
raise Miyako::MiyakoError, "Illegal color parameter class!"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
class String
|
134
|
+
def to_miyako_color #:nodoc:
|
135
|
+
case self
|
136
|
+
when /\A\[\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*(\d+)\s*\]\z/
|
137
|
+
#4要素の配列形式
|
138
|
+
return [$1.to_i, $2.to_i, $3.to_i, $4.to_i]
|
139
|
+
when /\A\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\z/
|
140
|
+
#4個の数列形式
|
141
|
+
return [$1.to_i, $2.to_i, $3.to_i, $4.to_i]
|
142
|
+
when /\A\#([\da-fA-F]{8})\z/
|
143
|
+
#HTML形式(#RRGGBBAA)
|
144
|
+
return [$1[0,2].hex, $1[2,2].hex, $1[4,2].hex, $1[6,2].hex]
|
145
|
+
when /\A\[\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\]\z/
|
146
|
+
#3要素の配列形式
|
147
|
+
return [$1.to_i, $2.to_i, $3.to_i, 255]
|
148
|
+
when /\A\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\z/
|
149
|
+
#3個の数列方式
|
150
|
+
[$1.to_i, $2.to_i, $3.to_i, 255]
|
151
|
+
when /\A\#([\da-fA-F]{6})\z/
|
152
|
+
#HTML形式(#RRGGBB)
|
153
|
+
return [$1[0,2].hex, $1[2,2].hex, $1[4,2].hex, 255]
|
154
|
+
else return self.to_sym.to_miyako_color
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
class Symbol
|
160
|
+
def to_miyako_color #:nodoc:
|
161
|
+
return Miyako::Color[self]
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
class Integer
|
166
|
+
def to_miyako_color #:nodoc:
|
167
|
+
return [(self >> 16) & 0xff, (self >> 8) & 0xff, self & 0xff, (self >> 24) & 0xff]
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
class Array
|
172
|
+
def to_miyako_color #:nodoc:
|
173
|
+
raise Miyako::MiyakoError, "Color Array needs more than 3 elements : #{self.length} elements" if self.length < 3
|
174
|
+
return (self[0,3] << 255) if self.length == 3
|
175
|
+
return self[0,4]
|
176
|
+
end
|
177
|
+
end
|
data/lib/Miyako/API/diagram.rb
CHANGED
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
23
23
|
module Miyako
|
24
24
|
#==遷移図モジュール群
|
25
25
|
module Diagram
|
26
|
-
|
26
|
+
|
27
27
|
#==遷移図矢印構造体
|
28
28
|
#ノードの移動先とトリガー(遷移条件)を収めている。
|
29
29
|
#to::移動先ノードのインスタンス
|
@@ -68,7 +68,7 @@ module Miyako
|
|
68
68
|
#_params_:: Processor::update_inputメソッドが呼ばれた時のパラメータ群。オーバーライドするときに省略可能
|
69
69
|
def update_input(*params)
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
#===ノードでの更新処理を実装する
|
73
73
|
#Processor#update メソッドが呼ばれたときの処理を実装する
|
74
74
|
#_params_:: Processor::updateメソッドが呼ばれた時のパラメータ群。オーバーライドするときに省略可能
|
@@ -80,7 +80,7 @@ module Miyako
|
|
80
80
|
#Processor#reset_input メソッドが呼ばれたときの処理を実装する
|
81
81
|
def reset_input
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
#===ノードでのレンダリング処理を実装する
|
85
85
|
#Screen.update メソッドを呼び出しているときは、本メソッドを実装する必要はない
|
86
86
|
#Processor#render メソッドが呼ばれたときの処理を実装する
|
@@ -95,7 +95,7 @@ module Miyako
|
|
95
95
|
def finish?
|
96
96
|
return false
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
#===現在実行しているノードの変数の値を取得するテンプレートメソッド
|
100
100
|
#Diagram#[] メソッドが呼ばれたときの処理を実装する
|
101
101
|
#
|
@@ -143,12 +143,12 @@ module Miyako
|
|
143
143
|
#Processor#start メソッドが呼び出されたときの処理を実装する
|
144
144
|
def pre_process
|
145
145
|
end
|
146
|
-
|
146
|
+
|
147
147
|
#===後始末を実装する
|
148
148
|
#Processor#stop メソッドが呼び出されたときの処理を実装する
|
149
149
|
def post_process
|
150
150
|
end
|
151
|
-
|
151
|
+
|
152
152
|
#===ノードの更新処理を行うかどうかの問い合わせメソッドを実装する
|
153
153
|
#NodeBase#update を呼び出すかどうかを返す処理を実装する
|
154
154
|
#デフォルトでは、無条件で true を返す
|
@@ -161,7 +161,7 @@ module Miyako
|
|
161
161
|
#NodeBase#update を呼び出された後の処理を実装する
|
162
162
|
def post_update
|
163
163
|
end
|
164
|
-
|
164
|
+
|
165
165
|
#===ノードのレンダリング処理を行うかどうかの問い合わせメソッドを実装する
|
166
166
|
#NodeBase#render を呼び出すかどうかを返す処理を実装する
|
167
167
|
#デフォルトでは、無条件で true を返す
|
@@ -170,7 +170,7 @@ module Miyako
|
|
170
170
|
def render?
|
171
171
|
return true
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
#===ノードのレンダリング処理が終わった後の後始末を行う
|
175
175
|
#Screen.update メソッドを呼び出しているときは、本メソッドを実装する必要はない
|
176
176
|
#NodeBase#render を呼び出された後の処理を実装する
|
@@ -234,7 +234,7 @@ module Miyako
|
|
234
234
|
def update_input(*params) #:nodoc:
|
235
235
|
@node.update_input(*params)
|
236
236
|
end
|
237
|
-
|
237
|
+
|
238
238
|
def update(*params) #:nodoc:
|
239
239
|
if @trigger.update?
|
240
240
|
@node.update(*params)
|
@@ -270,7 +270,7 @@ module Miyako
|
|
270
270
|
#_new_trigger_:: 置き換え対象のトリガーオブジェクト
|
271
271
|
#_timing_:: 置き換えのタイミング。:immediateと:nextの2種類がある
|
272
272
|
def replace_trigger(new_trigger, timing=:next)
|
273
|
-
raise MiyakoError, "I can't understand Timing
|
273
|
+
raise MiyakoError, "I can't understand Timing Type! : #{timing}" unless TRIGGER_TYPES.include?(timing)
|
274
274
|
case timing
|
275
275
|
when :immediate
|
276
276
|
@trigger.stop
|
@@ -281,7 +281,7 @@ module Miyako
|
|
281
281
|
@next_trigger = new_trigger
|
282
282
|
end
|
283
283
|
end
|
284
|
-
|
284
|
+
|
285
285
|
def dispose #:nodoc:
|
286
286
|
@node.dispose
|
287
287
|
end
|
@@ -345,7 +345,7 @@ module Miyako
|
|
345
345
|
@name2idx[from_name].add_arrow(to_name ? @name2idx[to_name] : nil, trigger)
|
346
346
|
return self
|
347
347
|
end
|
348
|
-
|
348
|
+
|
349
349
|
#===対象の名前を持つノードを取得する
|
350
350
|
#ノード内の変数にアクセスするときに使う
|
351
351
|
#_name_:: ノード名
|
@@ -354,7 +354,7 @@ module Miyako
|
|
354
354
|
raise MiyakoError, "Don't set undefined node name!" unless @name2idx.has_key?(name)
|
355
355
|
return @name2idx[name]
|
356
356
|
end
|
357
|
-
|
357
|
+
|
358
358
|
#===実行開始ノードを変更する
|
359
359
|
#但し、遷移図処理が行われていないときに変更可能
|
360
360
|
#_name_:: ノード名
|
@@ -382,7 +382,7 @@ module Miyako
|
|
382
382
|
def nodes
|
383
383
|
return @name2idx.keys
|
384
384
|
end
|
385
|
-
|
385
|
+
|
386
386
|
def start #:nodoc:
|
387
387
|
@ptr = @first unless @ptr
|
388
388
|
return unless @ptr
|
@@ -407,7 +407,7 @@ module Miyako
|
|
407
407
|
def update_input(*params) #:nodoc:
|
408
408
|
@ptr.update_input(*params) if @ptr
|
409
409
|
end
|
410
|
-
|
410
|
+
|
411
411
|
def update(*params) #:nodoc:
|
412
412
|
return unless @ptr
|
413
413
|
@ptr.update(*params)
|
@@ -472,7 +472,6 @@ module Miyako
|
|
472
472
|
#(Manager#add, Manager#add_arrow の各メソッドを参照)
|
473
473
|
#返却値:: 生成されたインスタンス
|
474
474
|
def initialize
|
475
|
-
@loop = self.method(:main_loop)
|
476
475
|
@states = {:execute => false, :pause => false, :type1 => false }
|
477
476
|
@diagram = Miyako::Diagram::Manager.new
|
478
477
|
@visible = true
|
@@ -480,7 +479,6 @@ module Miyako
|
|
480
479
|
end
|
481
480
|
|
482
481
|
def initialize_copy(obj) #:nodocs:
|
483
|
-
@loop = @loop.dup
|
484
482
|
@states = @states.dup
|
485
483
|
@diagram = @diagram.dup
|
486
484
|
end
|
@@ -520,7 +518,7 @@ module Miyako
|
|
520
518
|
return if @states[:pause]
|
521
519
|
@diagram.update_input(*params)
|
522
520
|
end
|
523
|
-
|
521
|
+
|
524
522
|
#===処理の更新を行う
|
525
523
|
#現在処理中のノードupdateメソッドを呼び出す。
|
526
524
|
#_params_:: パラメータ群。省略可能
|
@@ -529,7 +527,7 @@ module Miyako
|
|
529
527
|
@diagram.update(*params)
|
530
528
|
@states[:execute] = false if @diagram.finish?
|
531
529
|
end
|
532
|
-
|
530
|
+
|
533
531
|
#===レンダリング処理を行う
|
534
532
|
#現在処理中のノードのrenderメソッドを呼び出す。
|
535
533
|
#visibleメソッドの値がfalseのときは描画されない。
|
@@ -556,7 +554,7 @@ module Miyako
|
|
556
554
|
def renderer
|
557
555
|
return Miyako::Diagram::Renderer.new(self.method(:render))
|
558
556
|
end
|
559
|
-
|
557
|
+
|
560
558
|
#===指定した名前のノードを取得する
|
561
559
|
#_name_:: ノード名(文字列・シンボル)
|
562
560
|
#返却値:: ノード名に対応したノードのインスタンス
|