ruby-miyako 2.1.6 → 2.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,8 +1,8 @@
1
1
  *******************************************************************************
2
2
  【 作者名 】 サイロス誠
3
3
  【 ソフト名 】 Interactive Media Authoring System "Miyako"
4
- 【 バージョン 】 2.1.6
5
- 【 作成日 】 2010/01/01
4
+ 【 バージョン 】 2.1.7
5
+ 【 作成日 】 2010/01/03
6
6
  【 種別 】 フリーウェア
7
7
  【 開発言語 】 Ruby 1.9.1
8
8
  【 ランタイム 】 Ruby 1.9.1~,Ruby/SDL 2.1~,SDL
@@ -15,7 +15,7 @@
15
15
 
16
16
  【 注意事項 】
17
17
 
18
- 本バージョンは、2.1.5公式リリース版です。
18
+ 本バージョンは、2.1.7公式リリース版です。
19
19
  本バージョンでは、ドキュメント・リファレンスは不十分ですが、「サイログ。」内や、サンプルプログラムの紹介等で随時ドキュメントを公開して行きます。
20
20
  (RDOC化を進めていますので、我こそはと思う方は是非・・・)
21
21
 
@@ -1546,5 +1546,47 @@ v2.1.6(2010.01.01)
1546
1546
  ・InitiativeScenarioEngine#update_animation_all
1547
1547
  <インスタンスメソッド廃止>
1548
1548
 
1549
+ v2.1.7(2010.01.03)
1550
+ <バグ修正>
1551
+ ・InitiativeScenarioEngine#Command構造体の順番がScenarioEngine#Commandと同期されていなかった問題を修正
1552
+ ・InitiativeScenarioEngine#CommandEx構造体の順番がScenarioEngine#CommandExと同期されていなかった問題を修正
1553
+ ・InitiativeScenarioEngine#render_allでエラーを出すバグを修正
1554
+ ・InitiativeScenarioEngine#render_to_allでエラーを出すバグを修正
1555
+ ・InitiativeScenarioEngine#pauseで解除待ちカーソルが消えないバグを修正
1556
+ <機能改善>
1557
+ <仕様変更>
1558
+ ・(Initiative)ScenarioEngine#commandで、第2引数にnilを渡すことで、キャンセル操作無効にするようにした(明示的な引数渡しが必要)
1559
+ ・over_execで使用するシナリオエンジンの事前登録が可能
1560
+ ・ScenarioEngine#over_execメソッドの仕様を変更(engine,plotが省略可能に)
1561
+ ・InitiativeScenarioEngine#over_execメソッドの仕様を変更(base,engine,plotが省略可能に)
1562
+ <ファイル追加>
1563
+ ・API/simple_story.rb
1564
+ <ファイル削除>
1565
+ <グローバル変数追加>
1566
+ <定数追加>
1567
+ <定数削除>
1568
+ <構造体追加>
1569
+ <クラス追加>
1570
+ ・SimpleStory
1571
+ <モジュール追加>
1572
+ ・SimpleStory::Scene
1573
+ <mixin>
1574
+ <クラス・モジュールメソッド追加>
1575
+ <クラス・モジュールメソッド廃止>
1576
+ <モジュール関数追加>
1577
+ <モジュール関数廃止>
1578
+ <インスタンスメソッド追加>
1579
+ ・ScenarioEngine#over_engine=
1580
+ ・ScenarioEngine#under_engine
1581
+ ・ScenarioEngine#under_engine=
1582
+ ・ScenarioEngine#render_all
1583
+ ・ScenarioEngine#render_to_all
1584
+ ・InitiativeScenarioEngine#over_engine=
1585
+ ・InitiativeScenarioEngine#under_engine
1586
+ ・InitiativeScenarioEngine#under_engine=
1587
+ ・InitiativeScenarioEngine#engine_stack
1588
+ ・InitiativeScenarioEngine#create_engine_stack
1589
+ <インスタンスメソッド廃止>
1590
+
1549
1591
  *******************************************************************************
1550
1592
  このReadMeファイルは「れ~どめ~えじた~」によって作成されました。
@@ -82,7 +82,7 @@ module Miyako
82
82
  #_result_:: 選択結果(移動先シーンクラス名、シナリオ(メソッド)名他のオブジェクト)
83
83
  #_body_disable_:: 選択不可時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
84
84
  #_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
85
- Command = Struct.new(:body, :body_selected, :condition, :result, :body_disable, :enable)
85
+ Command = Struct.new(:body, :body_selected, :body_disable, :enable, :condition, :result)
86
86
 
87
87
  #==コマンド構造体
88
88
  #_body_:: コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)
@@ -93,7 +93,7 @@ module Miyako
93
93
  #_body_disable_:: 選択不可時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
94
94
  #ブロックは1つの引数を取る(コマンド選択テキストボックス))。デフォルトはnil
95
95
  #_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
96
- CommandEX = Struct.new(:body, :body_selected, :condition, :result, :end_select_proc, :body_disable, :enable)
96
+ CommandEX = Struct.new(:body, :body_selected, :condition, :body_disable, :enable, :result, :end_select_proc)
97
97
 
98
98
  attr_reader :visibles, :pre_visibles, :bgs, :base
99
99
  attr_reader :valign
@@ -114,6 +114,11 @@ module Miyako
114
114
  #callメソッドを持つブロックが使用可能。
115
115
  attr_reader :selecting_procs
116
116
 
117
+ #over_execを使用したシナリオエンジンのコールスタック
118
+ #over_execするエンジンを基準に、一番大本のエンジンから順に積み込まれる
119
+ #自分自身(self)は含まない
120
+ attr_reader :engine_stack
121
+
117
122
  #===Yukiにメソッドを追加する(すべてのYukiインスタンスに適応)
118
123
  #ブロックを渡すことで、Yukiに新しいメソッドを追加できる。
119
124
  #追加したメソッドは、すべてのYukiインスタンスで利用可能となる。
@@ -152,6 +157,7 @@ module Miyako
152
157
  def initialize(*params, &proc)
153
158
  @base = nil
154
159
  @over_yuki = nil
160
+ @under_yuki = nil
155
161
  @yuki = { }
156
162
  @text_box = nil
157
163
  @command_box = nil
@@ -168,6 +174,7 @@ module Miyako
168
174
  @select_ok = false
169
175
  @select_cancel = false
170
176
  @select_amount = [0, 0]
177
+ @cencel = nil
171
178
  @mouse_amount = nil
172
179
 
173
180
  @mouse_enable = true
@@ -215,6 +222,8 @@ module Miyako
215
222
  @now_page = nil
216
223
  @first_page = nil
217
224
 
225
+ @engine_stack = []
226
+
218
227
  raise MiyakoProcError, "Aagument count is not same block parameter count!" if proc && proc.arity.abs != params.length
219
228
  instance_exec(*params, &proc) if block_given?
220
229
  end
@@ -223,6 +232,13 @@ module Miyako
223
232
  raise MiyakoCopyError.not_copy("Yuki")
224
233
  end
225
234
 
235
+ #===エンジンスタックを生成する
236
+ #base:: over_exec呼び出し元のエンジン
237
+ def create_engine_stack(base)
238
+ return unless @engine_stack.empty?
239
+ @engine_stack.push(*base.engine_stack, base)
240
+ end
241
+
226
242
  #===マウスでの制御を可能にする
227
243
  #ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、
228
244
  #それに加えて、マウスでもゲームパッド・キーボードでの制御が行える
@@ -254,7 +270,7 @@ module Miyako
254
270
  self.bgs.render
255
271
  self.visibles.render
256
272
  self.textbox_all.render
257
- self.commandbox_all.render unless yuki.box_shared?
273
+ self.commandbox_all.render unless self.box_shared?
258
274
  self.pre_visibles.render
259
275
  end
260
276
 
@@ -271,7 +287,7 @@ module Miyako
271
287
  self.bgs.render_to(dst)
272
288
  self.visibles.render_to(dst)
273
289
  self.textbox_all.render_to(dst)
274
- self.commandbox_all.render_to(dst) unless yuki.box_shared?
290
+ self.commandbox_all.render_to(dst) unless self.box_shared?
275
291
  self.pre_visibles.render_to(dst)
276
292
  end
277
293
 
@@ -825,6 +841,21 @@ module Miyako
825
841
  @over_yuki
826
842
  end
827
843
 
844
+ def over_engine=(engine)
845
+ @over_yuki = engine
846
+ engine.under_engine = self
847
+ engine.engine_stack.clear
848
+ engine.create_engine_stack(self)
849
+ end
850
+
851
+ def under_engine
852
+ @under_yuki
853
+ end
854
+
855
+ def under_engine=(engine)
856
+ @under_yuki = engine
857
+ end
858
+
828
859
  #===別のYukiエンジンを実行する
829
860
  #[[Yukiスクリプトとして利用可能]]
830
861
  #もう一つのYukiエンジンを実行させ、並行実行させることができる
@@ -835,10 +866,11 @@ module Miyako
835
866
  #_plot_:: プロットインスタンス。すでにsetupなどで登録しているときはnilを渡す
836
867
  #_params_:: プロット実行開始時に、プロットに渡す引数
837
868
  #返却値:: 自分自身を返す
838
- def over_exec(yuki, base, plot, *params)
869
+ def over_exec(yuki = nil, base = nil, plot = nil, *params)
839
870
  raise MiyakoValueError, "This Yuki engine is same as self!" if yuki.eql?(self)
840
- @over_yuki = yuki
841
- @over_yuki.start_plot(base, plot, *params)
871
+ self.over_engine = yuki if yuki
872
+ @over_yuki.start_plot(base ? base : @over_yuki, plot, *params)
873
+ yuki.engine_stack.clear if yuki
842
874
  return self
843
875
  end
844
876
 
@@ -1260,6 +1292,7 @@ module Miyako
1260
1292
  pause_release = @release_checks.inject(false){|r, c| r |= c.call }
1261
1293
  post_process
1262
1294
  end
1295
+ @text_box.release
1263
1296
  @post_pause.each{|proc| proc.call}
1264
1297
  return self
1265
1298
  end
@@ -1312,7 +1345,7 @@ module Miyako
1312
1345
  pre_process
1313
1346
  @base.selecting_inner(self) if @base
1314
1347
  @select_ok = true if @ok_checks.inject(false){|r, c| r |= c.call }
1315
- @select_cancel = true if @cancel_checks.inject(false){|r, c| r |= c.call }
1348
+ @select_cancel = true if @cancel && @cancel_checks.inject(false){|r, c| r |= c.call }
1316
1349
  @select_amount = @key_amount_proc.call
1317
1350
  @mouse_amount = @mouse_amount_proc.call
1318
1351
  @selecting_procs.each{|sp|
@@ -0,0 +1,240 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ =begin
4
+ --
5
+ Miyako v2.1
6
+ Copyright (C) 2007-2009 Cyross Makoto
7
+
8
+ This library is free software; you can redistribute it and/or
9
+ modify it under the terms of the GNU Lesser General Public
10
+ License as published by the Free Software Foundation; either
11
+ version 2.1 of the License, or (at your option) any later version.
12
+
13
+ This library is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
+ Lesser General Public License for more details.
17
+
18
+ You should have received a copy of the GNU Lesser General Public
19
+ License along with this library; if not, write to the Free Software
20
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
+ ++
22
+ =end
23
+
24
+ module Miyako
25
+ #==シーン実行クラス
26
+ #用意したシーンインスタンスを実行
27
+ class SimpleStory
28
+
29
+ @@sub_scenes = [:sub_scene, :sub_routine]
30
+
31
+ def prev_label #:nodoc:
32
+ return @prev_label
33
+ end
34
+
35
+ def next_label #:nodoc:
36
+ return @next_label
37
+ end
38
+
39
+ def upper_label #:nodoc:
40
+ return @stack.empty? ? nil : @stack.last[0]
41
+ end
42
+
43
+ #===インスタンスの作成
44
+ #ストーリー情報の初期か
45
+ #返却値:: 生成したインスタンス
46
+ def initialize
47
+ @prev_label = nil
48
+ @next_label = nil
49
+
50
+ @stack = []
51
+ end
52
+
53
+ def initialize_copy(obj) #:nodoc:
54
+ @stack = @stack.dup
55
+ end
56
+
57
+ #===Storyの実行を始める
58
+ #"obj.run(MainScene)"と記述すると、SceneモジュールをmixinしたMainSceneクラスのインスタンスを作成し、評価を始める
59
+ #_n_:: 最初に実行するシーン名(クラス名を定数で)
60
+ def run(n)
61
+ return nil if n == nil
62
+ u = nil
63
+ on = nil
64
+ @stack = Array.new # reset
65
+ while n != nil
66
+ @prev_label = on
67
+ on = n
68
+
69
+ raise MiyakoValueError, "Illegal Script-label name! : #{n}" unless Scene.has_scene?(n.to_s)
70
+ raise MiyakoValueError, "This scene cannot use for Standard Scene! : #{n}" if n.scene_type != :scene
71
+ u = n.new(self) if u == nil
72
+ u.init_inner(@prev_label, self.upper_label)
73
+
74
+ n = u.execute
75
+ u.next = n
76
+ @next_label = n
77
+ if n.nil?
78
+ if @@sub_scenes.include?(u.class.scene_type) && @stack.empty? == false
79
+ n, u = @stack.pop
80
+ next
81
+ end
82
+ u.dispose
83
+ break
84
+ elsif @@sub_scenes.include?(n.scene_type)
85
+ @stack.push([on, u])
86
+ u = nil
87
+ else
88
+ u.dispose
89
+ u = nil
90
+ end
91
+ end
92
+ end
93
+
94
+ #===内部の情報を解放する
95
+ def dispose
96
+ @stack.each{|scene| scene.dispose }
97
+ end
98
+
99
+ #==シーンモジュール
100
+ #本モジュールをmixinすることにより、シーンを示すインスタンスを作成することができる
101
+ #mixinするときに気をつけなければいけないのは、本モジュールでは以下の
102
+ #モジュール変数を
103
+ #予約しているため、これらの変数の値を勝手に変えてはいけない
104
+ #・@@scenesモジュール変数(シーンクラス一覧が入っているハッシュ)
105
+ #・@@poolモジュール変数(シーン情報が入っているハッシュ)
106
+ #(互換性のために@nowを残しているが、now_sceneのみを使うときは値を上書きしてもかまわない))
107
+ #また、シーンには「シーン形式」がある。
108
+ #種類は、シーケンスな移動が出来る「通常シーン」、終了したときに移動元に戻る「サブシーン」、
109
+ #現在実行中のシーン上で並行に実行する「オーバーシーン」の3種類。
110
+ #デフォルトは「通常シーン」となっている。
111
+ #判別は、scene_typeクラスメソッドを呼び出すことで可能。デフォルトは、
112
+ #通常シーンを示すシンボル":scene"が返る。
113
+ #形式を変えるには、scene_typeクラスメソッドをオーバーライドし、返却値を変える。
114
+ #サブシーンの時はシンボル":sub_scene"を返すように実装する
115
+ #(注1)同じクラス名のシーンを繰り返し実行したいときは、いったん別のダミーシーンを
116
+ #介してから元のシーンへ移動する必要がある
117
+ #(注2)オーバーシーン内では、シーンの移動が出来ないが、入れ子形式で
118
+ #別のオーバーシーンを積み上げる形なら移動可能。
119
+ module Scene
120
+ @@scenes = {}
121
+ @@pool = {}
122
+
123
+ def self.included(c) #:nodoc:
124
+ unless c.singleton_methods.include?(:scene_type)
125
+ def c.scene_type
126
+ return :scene
127
+ end
128
+ end
129
+ @@scenes[c.to_s] = c
130
+ end
131
+
132
+ def self.scenes #:nodoc:
133
+ return @@scenes
134
+ end
135
+
136
+ def self.has_scene?(s) #:nodoc:
137
+ return @@scenes.has_key?(s)
138
+ end
139
+
140
+ def initialize(story, check_only=false) #:nodoc:
141
+ return if check_only
142
+ @@pool[self.object_id] = Miyako::Story::ScenePool.new(story, nil, nil, nil)
143
+ @now = self.now_scene
144
+ self.init
145
+ end
146
+
147
+ def init_inner(p, u) #:nodoc:
148
+ @@pool[self.object_id].prev = p
149
+ @@pool[self.object_id].upper = u
150
+ end
151
+
152
+ #===前回実行したシーンを返す
153
+ #前回実行しているシーンをクラス名で返す
154
+ #但し、最初のシーンの場合はnilを返す
155
+ #返却値:: 前回実行したシーン名(Classクラスインスタンス)
156
+ def story
157
+ return @@pool[self.object_id].story
158
+ end
159
+
160
+ #===サブルーチンの呼び元シーンを返す
161
+ #サブルーチンを呼び出したシーンをクラス名で返す
162
+ #サブルーチンではないときはnilを返す
163
+ #返却値:: 前回実行したシーン名(Classクラスインスタンス)
164
+ def upper_scene
165
+ return @@pool[self.object_id].upper
166
+ end
167
+
168
+ def next_scene #:nodoc:
169
+ return @@pool[self.object_id].next
170
+ end
171
+
172
+ #===前回実行したシーンを返す
173
+ #前回実行しているシーンをクラス名で返す
174
+ #但し、最初のシーンの場合はnilを返す
175
+ #返却値:: 前回実行したシーン名(Classクラスインスタンス)
176
+ def prev_scene
177
+ return @@pool[self.object_id].prev
178
+ end
179
+
180
+ #===現在実行中のシーンを返す
181
+ #現在実行しているシーンをクラス名で返す
182
+ #返却値:: 前回実行したシーン名(Classクラスインスタンス)
183
+ def now_scene
184
+ return self.class
185
+ end
186
+
187
+ #===シーン内で使用するオブジェクトの初期化テンプレートメソッド
188
+ #シーン内で使用するインスタンスを生成するときなどにこのメソッドを実装する
189
+ def init
190
+ end
191
+
192
+ #===シーンの情報を更新するテンプレートメソッド
193
+ #
194
+ #現在実行しているシーンを繰り返し実行する場合はインスタンス変数@nowを返すように実装する
195
+ #nilを返すとシーンの処理を終了する(元のStory#runメソッド呼び出しの次に処理が移る)
196
+ #但し、scene_typeメソッドの結果が:sub_routneのとき、移動元シーンに戻る
197
+ #返却値:: 移動先シーンクラス
198
+ def execute
199
+ return now_scene
200
+ end
201
+
202
+ #===シーンに使用したデータの解放を記述するテンプレートメソッド
203
+ #initメソッドと対になっているというイメージ
204
+ def dispose
205
+ end
206
+
207
+ def next=(label) #:nodoc:
208
+ @@pool[self.object_id].next = label
209
+ end
210
+
211
+ #===シーンの解説を返す(テンプレートメソッド)
212
+ #Sceneモジュールをmixinしたとき、解説文を返す実装をしておくと、
213
+ #Scene.#lisutupメソッドを呼び出したときに、noticeメソッドの結果を取得できる
214
+ #返却値:: シーンの解説(文字列)
215
+ def notice
216
+ return ""
217
+ end
218
+
219
+ #===登録しているシーン一覧をリストアップする
220
+ #リストの内容は、"シーンクラス名(文字列),シーンクラス(ポインタ),
221
+ #解説(noticeメソッドの内容)"という書式で取得できる
222
+ #返却値:: リストアップしたシーンの配列
223
+ def self.listup
224
+ list = Array.new
225
+ sns = @@scenes
226
+ sns.keys.sort.each{|k| list.push("#{k}, #{sns[k]}, \"#{sns[k].notice}\"\n") }
227
+ return list
228
+ end
229
+
230
+ #===Scene.#listupメソッドの内容をCSVファイルに保存する
231
+ #_csvname_:: 保存するCSVファイルパス
232
+ def self.listup2csv(csvfname)
233
+ csvfname += ".csv" if csvfname !~ /\.csv$/
234
+ list = self.listup
235
+ File.open(csvfname, "w"){|f| list.each{|l| f.print l } }
236
+ end
237
+
238
+ end
239
+ end
240
+ end
@@ -151,7 +151,7 @@ module Miyako
151
151
  @@scenes = {}
152
152
  @@pool = {}
153
153
 
154
- def Scene.included(c) #:nodoc:
154
+ def self.included(c) #:nodoc:
155
155
  unless c.singleton_methods.include?(:scene_type)
156
156
  def c.scene_type
157
157
  return :scene
@@ -160,11 +160,11 @@ module Miyako
160
160
  @@scenes[c.to_s] = c
161
161
  end
162
162
 
163
- def Scene.scenes #:nodoc:
163
+ def self.scenes #:nodoc:
164
164
  return @@scenes
165
165
  end
166
166
 
167
- def Scene.has_scene?(s) #:nodoc:
167
+ def self.has_scene?(s) #:nodoc:
168
168
  return @@scenes.has_key?(s)
169
169
  end
170
170
 
@@ -267,7 +267,7 @@ module Miyako
267
267
  #リストの内容は、"シーンクラス名(文字列),シーンクラス(ポインタ),
268
268
  #解説(noticeメソッドの内容)"という書式で取得できる
269
269
  #返却値:: リストアップしたシーンの配列
270
- def Scene.listup
270
+ def self.listup
271
271
  list = Array.new
272
272
  sns = @@scenes
273
273
  sns.keys.sort.each{|k| list.push("#{k}, #{sns[k]}, \"#{sns[k].notice}\"\n") }
@@ -276,7 +276,7 @@ module Miyako
276
276
 
277
277
  #===Scene.#listupメソッドの内容をCSVファイルに保存する
278
278
  #_csvname_:: 保存するCSVファイルパス
279
- def Scene.listup2csv(csvfname)
279
+ def self.listup2csv(csvfname)
280
280
  csvfname += ".csv" if csvfname !~ /\.csv$/
281
281
  list = self.listup
282
282
  File.open(csvfname, "w"){|f| list.each{|l| f.print l } }
@@ -146,6 +146,7 @@ module Miyako
146
146
  def initialize(*params, &proc)
147
147
  @yuki = { }
148
148
  @over_yuki = nil
149
+ @under_yuki = nil
149
150
  @over_exec = false
150
151
  @text_box = nil
151
152
  @command_box = nil
@@ -164,6 +165,7 @@ module Miyako
164
165
  @select_ok = false
165
166
  @select_cancel = false
166
167
  @select_amount = [0, 0]
168
+ @cencel = nil
167
169
  @mouse_amount = nil
168
170
 
169
171
  @mouse_enable = true
@@ -238,6 +240,19 @@ module Miyako
238
240
  @over_yuki
239
241
  end
240
242
 
243
+ def over_engine=(engine)
244
+ @over_yuki = engine
245
+ engine.under_engine = self
246
+ end
247
+
248
+ def under_engine
249
+ @under_yuki
250
+ end
251
+
252
+ def under_engine=(engine)
253
+ @under_yuki = engine
254
+ end
255
+
241
256
  #===マウスでの制御を可能にする
242
257
  #ゲームパッド・キーボードでのコマンド・ポーズ制御を行えるが、
243
258
  #それに加えて、マウスでもゲームパッド・キーボードでの制御が行える
@@ -283,6 +298,22 @@ module Miyako
283
298
  return self
284
299
  end
285
300
 
301
+ def render_all
302
+ self.bgs.render
303
+ self.visibles.render
304
+ self.textbox_all.render
305
+ self.commandbox_all.render unless self.box_shared?
306
+ self.pre_visibles.render
307
+ end
308
+
309
+ def render_to_all(dst)
310
+ self.bgs.render_to(dst)
311
+ self.visibles.render_to(dst)
312
+ self.textbox_all.render_to(dst)
313
+ self.commandbox_all.render_to(dst) unless self.box_shared?
314
+ self.pre_visibles.render_to(dst)
315
+ end
316
+
286
317
  #===Yuki#showで表示指定した画像のアニメーションを更新する
287
318
  #showメソッドで指定した画像のupdate_animationメソッドを呼び出す
288
319
  #返却値:: 描く画像のupdate_spriteメソッドを呼び出した結果を配列で返す
@@ -724,9 +755,9 @@ module Miyako
724
755
  #_plot_:: プロットインスタンス。すでにsetupなどで登録しているときはnilを渡す
725
756
  #_params_:: プロット実行開始時に、プロットに渡す引数
726
757
  #返却値:: 自分自身を返す
727
- def over_exec(yuki, plot, *params)
758
+ def over_exec(yuki = nil, plot = nil, *params)
728
759
  raise MiyakoValueError, "This Yuki engine is same as self!" if yuki.eql?(self)
729
- @over_yuki = yuki
760
+ self.over_engine = yuki if yuki
730
761
  @over_yuki.start_plot(plot, *params)
731
762
  return self
732
763
  end
@@ -848,7 +879,7 @@ module Miyako
848
879
  @pause_release = true
849
880
  elsif @selecting
850
881
  @select_ok = true if @ok_checks.inject(false){|r, c| r |= c.call }
851
- @select_cancel = true if @cancel_checks.inject(false){|r, c| r |= c.call }
882
+ @select_cancel = true if @cancel && @cancel_checks.inject(false){|r, c| r |= c.call }
852
883
  @select_amount = @key_amount_proc.call
853
884
  @mouse_amount = @mouse_amount_proc.call
854
885
  end
data/lib/Miyako/miyako.rb CHANGED
@@ -63,7 +63,7 @@ Thread.abort_on_exception = true
63
63
 
64
64
  #==Miyako基幹モジュール
65
65
  module Miyako
66
- VERSION = "2.1.4"
66
+ VERSION = "2.1.7"
67
67
 
68
68
  #===アプリケーション実行中に演奏する音楽のサンプリングレートを指定する
69
69
  #単位はHz(周波数)
@@ -155,6 +155,7 @@ require 'Miyako/API/map'
155
155
  require 'Miyako/API/fixedmap'
156
156
  require 'Miyako/API/map_event'
157
157
  require 'Miyako/API/story'
158
+ require 'Miyako/API/simple_story'
158
159
  require 'Miyako/API/diagram'
159
160
 
160
161
  module Miyako
data/miyako_drawing.c CHANGED
@@ -83,7 +83,6 @@ static void get_position(VALUE pos, Sint16 *x, Sint16 *y)
83
83
  }
84
84
 
85
85
  /*
86
- ポリゴン描画
87
86
  */
88
87
  static VALUE drawing_draw_polygon(int argc, VALUE *argv, VALUE self)
89
88
  {
@@ -101,7 +100,6 @@ static VALUE drawing_draw_polygon(int argc, VALUE *argv, VALUE self)
101
100
 
102
101
  rb_scan_args(argc, argv, "32", &vdst, &pairs, &mcolor, &fill, &aa);
103
102
 
104
- // bitmapメソッドを持っていれば、メソッドの値をvdstとする
105
103
  methods = rb_funcall(vdst, rb_intern("methods"), 0);
106
104
  if(rb_ary_includes(methods, rb_str_intern(rb_str_new2("to_unit"))) == Qfalse &&
107
105
  rb_ary_includes(methods, rb_str_intern(rb_str_new2("bitmap"))) == Qfalse
@@ -112,11 +110,10 @@ static VALUE drawing_draw_polygon(int argc, VALUE *argv, VALUE self)
112
110
  vdst = rb_funcall(vdst, rb_intern("bitmap"), 0);
113
111
 
114
112
  vertexes = RARRAY_LEN(pairs);
115
- // 頂点数チェック
113
+
116
114
  if(vertexes > 65536)
117
115
  rb_raise(eMiyakoError, "too many pairs. pairs is less than 65536.");
118
116
 
119
- // 範囲チェック
120
117
  for(i=0; i<vertexes; i++)
121
118
  {
122
119
  VALUE vertex = *(RARRAY_PTR(pairs)+i);
@@ -124,7 +121,7 @@ static VALUE drawing_draw_polygon(int argc, VALUE *argv, VALUE self)
124
121
  get_position(vertex, &x, &y);
125
122
  }
126
123
 
127
- dst = GetSurface(vdst)->surface;
124
+ dst = GetSurface(vdst)->surface;
128
125
 
129
126
  color = value_2_color(rb_funcall(cColor, rb_intern("to_rgb"), 1, mcolor), dst->format, &alpha);
130
127
 
@@ -177,7 +174,6 @@ static VALUE drawing_draw_polygon(int argc, VALUE *argv, VALUE self)
177
174
  }
178
175
 
179
176
  /*
180
- ポリゴン描画
181
177
  */
182
178
  static VALUE screen_clear(VALUE self)
183
179
  {
data/miyako_font.c CHANGED
@@ -271,10 +271,10 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
271
271
  }
272
272
  else
273
273
  {
274
- psrc = (Uint32 *)(ssrc->pixels);
275
-
276
274
  MiyakoSize size;
277
275
 
276
+ psrc = (Uint32 *)(ssrc->pixels);
277
+
278
278
  size.w = dst.rect.w - (src.x < 0 ? 0 : src.x);
279
279
  if(size.w <= 0)
280
280
  {
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-miyako
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.6
4
+ version: 2.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyross Makoto
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-01 00:00:00 +09:00
12
+ date: 2010-01-03 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -60,6 +60,7 @@ files:
60
60
  - ./lib/Miyako/API/sprite_animation.rb
61
61
  - ./lib/Miyako/API/sprite_list.rb
62
62
  - ./lib/Miyako/API/story.rb
63
+ - ./lib/Miyako/API/simple_story.rb
63
64
  - ./lib/Miyako/API/struct_point.rb
64
65
  - ./lib/Miyako/API/struct_size.rb
65
66
  - ./lib/Miyako/API/struct_rect.rb