ruby-miyako-mswin32 2.1.10 → 2.1.11

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.9
5
- 【 作成日 】 2010/02/01
4
+ 【 バージョン 】 2.1.11
5
+ 【 作成日 】 2010/05/01
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.9公式リリース版です。
18
+ 本バージョンは、2.1.11公式リリース版です。
19
19
  本バージョンでは、ドキュメント・リファレンスは不十分ですが、「サイログ。」内や、サンプルプログラムの紹介等で随時ドキュメントを公開して行きます。
20
20
  (RDOC化を進めていますので、我こそはと思う方は是非・・・)
21
21
 
@@ -91,24 +91,21 @@ PAD : BUFFALO BGC-FC802
91
91
  OS : Microsoft WindowsXp SP3
92
92
  Microsoft WindowsVista Ultimate(x64) SP1
93
93
  DEV : Notepad++ v5.3.1-6
94
- mswin32版Ruby 1.9.1-p129 + Ruby/SDL 2.1
94
+ mingw32版Ruby 1.9.2dev + Ruby/SDL 2.1.1
95
95
  MinGW+MSYS(miyako_no_katanaビルド)
96
- rcairo-1.8.0(miyako-cairo検証用)
97
96
 
98
97
  <サブ開発PC>
99
- Panasonic Let'sNOTE Light R3
100
- CPU : PentiumM 1.1GHz
101
- MEM : 784(256+512)MB
98
+ Panasonic Let'sNOTE Light S9
99
+ CPU : Core i5
100
+ MEM : 4GB(2GBx2)
102
101
  PAD : SANWA SUPPLY JY-P1W
103
- OS : Microsoft WindowsXp SP3
102
+ OS : Microsoft Windows7 x64
104
103
  DEV : Notepad++ v5.3.1-6
105
- mswin32版Ruby 1.9.1-p129 + Ruby/SDL 2.1
106
- MinGW+MSYS(miyako_no_katanaビルド)
104
+ mswin32版Ruby 1.9.2dev + Ruby/SDL 2.1.1
107
105
 
108
106
  【 動作確認環境 】
109
107
 
110
- 上記環境に追加して、VMWarePlayer上で動作している
111
- Ubuntu9.04(x86)+Ruby1.9.1+Ruby/SDL2.1.0で動作確認済み
108
+ 上記環境に追加して、Ubuntu9.04(x86)+Ruby1.9.1+Ruby/SDL2.1.1で動作確認済み
112
109
 
113
110
  【 動作環境 】
114
111
 
@@ -121,10 +118,9 @@ WindowsXp Home/Pro、WindowsVista、Linux、MacOSX等、Ruby/SDLが動作する
121
118
  ビデオメモリ :8MB(32bitカラー対応、64MB以上奨励)
122
119
  サウンドカード:必須(出来ればSoundBlaster Live!クラス)
123
120
 
124
- Ruby1.9.1以降
121
+ Ruby1.9.1以降(Ruby1.9.2対応)
125
122
  Ruby/SDL 2.1+対応SDLライブラリ群
126
123
  (SDL、SDL_ttf、SDL_image、SDL_Mixer、SGE、smpeg)
127
- rcairo 1.8.0以降(miyako-cairo使用時)
128
124
 
129
125
  【 ファイル構成 】
130
126
 
@@ -1620,7 +1616,6 @@ v2.1.9(2010.03.07)
1620
1616
  ・ScenarioEngine#canceled?が正しく動作しない(オブジェクトの参照間違い)バグを修正
1621
1617
  ・InitiativeScenarioEngine#canceled?が正しく動作しない(オブジェクトの参照間違い)バグを修正
1622
1618
  ・Audio::SE#startの記述ミスを修正
1623
- ・SpriteListクラスのオブジェクトからsnap等のレイアウト関係メソッドを呼び出すとプログラムが墜ちるバグを修正
1624
1619
  <機能改善>
1625
1620
  ・シーン管理(Story,Scene)に、オブジェクトの引き継ぎ機能を追加
1626
1621
  ・シーン終了時、返却値に[次シーン名,オブジェクト]を渡すことで、次シーンでは、全シーンの状態などを受け取ることが可能になった
@@ -1654,5 +1649,83 @@ v2.1.9(2010.03.07)
1654
1649
  <インスタンスメソッド追加>
1655
1650
  <インスタンスメソッド廃止>
1656
1651
 
1652
+ v2.1.10(2010.04.20)
1653
+ <バグ修正>
1654
+ ・SpriteListクラスのオブジェクトからsnap等のレイアウト関係メソッドを呼び出すとプログラムが墜ちるバグを修正
1655
+ ・Input.updateメソッドの処理に、イベントを逆順に取得する問題があった箇所を修正
1656
+ <機能改善>
1657
+ <仕様変更>
1658
+ <ファイル追加>
1659
+ <ファイル削除>
1660
+ <グローバル変数追加>
1661
+ <定数追加>
1662
+ <定数削除>
1663
+ <構造体追加>
1664
+ <クラス追加>
1665
+ <モジュール追加>
1666
+ <mixin>
1667
+ <クラス・モジュールメソッド追加>
1668
+ <クラス・モジュールメソッド廃止>
1669
+ <モジュール関数追加>
1670
+ <モジュール関数廃止>
1671
+ <インスタンスメソッド追加>
1672
+ <インスタンスメソッド廃止>
1673
+ <ドキュメント>
1674
+ ・リファレンスマニュアルの項目追加
1675
+
1676
+ v2.1.11(2010.05.01)
1677
+ <バグ修正>
1678
+ ・エラーメッセージの修正(ScenarioEngine,InitiativeScenarioEngine)
1679
+ <機能改善>
1680
+ <仕様変更>
1681
+ ・ScenarioEngine/InitiativeScenarioEngine#commandメソッドの見直し
1682
+  ・インタフェース使用に変化なし
1683
+  ・配列の中身がChoicesクラスオブジェクト(の配列)のときにも対応した
1684
+ ・Choice構造体の:rightと:upの順番を入れ替え
1685
+ ・SpriteAnimation.newメソッドの:sprite引数に加えて、:sprites引数に置き換え可能とした
1686
+ ・SpriteAnimation#render,render_toの高速化を廃止
1687
+ ・SpriteAnimation#newに渡すスプライトの範囲を拡大(要素はSpriteBase・Layoutモジュールを取り込んだ物なら何でも良くなった)
1688
+ <ファイル追加>
1689
+ ・lib/EXT/drawer.rb
1690
+ ・sample/drawer_sample.rb
1691
+ <ファイル削除>
1692
+ <グローバル変数追加>
1693
+ <定数追加>
1694
+ <定数削除>
1695
+ <構造体追加>
1696
+ <クラス追加>
1697
+ Drawer
1698
+ <モジュール追加>
1699
+ <mixin>
1700
+ <クラス・モジュールメソッド追加>
1701
+ <クラス・モジュールメソッド廃止>
1702
+ <モジュール関数追加>
1703
+ ・SpriteBase#.ox=
1704
+ ・SpriteBase#.oy=
1705
+ ・SpriteBase#.ow=
1706
+ ・SpriteBase#.oh=
1707
+ ・SpriteArray#.render_xy
1708
+ ・SpriteArray#.render_xy_to
1709
+ <モジュール関数廃止>
1710
+ <インスタンスメソッド追加>
1711
+ ・ScenarioEngine::Command#to_choice
1712
+ ・ScenarioEngine::CommandEx#to_choice
1713
+ ・ScenarioEngine#start_all
1714
+ ・ScenarioEngine#stop_all
1715
+ ・ScenarioEngine#reset_all
1716
+ ・ScenarioEngine#animation_all
1717
+ ・InitiativeScenarioEngine::Command#to_choice
1718
+ ・InitiativeScenarioEngine::CommandEx#to_choice
1719
+ ・InitiativeScenarioEngine#start_all
1720
+ ・InitiativeScenarioEngine#stop_all
1721
+ ・InitiativeScenarioEngine#reset_all
1722
+ ・InitiativeScenarioEngine#animation_all
1723
+ ・Choice#arrow
1724
+ ・SpriteList#render_xy
1725
+ ・SpriteList#render_xy_to
1726
+ <インスタンスメソッド廃止>
1727
+ <ドキュメント>
1728
+ ・リファレンスマニュアルの項目追加
1729
+
1657
1730
  *******************************************************************************
1658
1731
  このReadMeファイルは「れ~どめ~えじた~」によって作成されました。
@@ -26,6 +26,8 @@ module Miyako
26
26
  include Animation
27
27
  include Layout
28
28
 
29
+ DIRECTION_LIST = [:up, :down, :left, :right, :base]
30
+
29
31
  attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
30
32
 
31
33
  def initialize(*params)
@@ -120,6 +122,18 @@ module Miyako
120
122
  min_y, max_y = yy.minmax
121
123
  return Rect.new(min_x, min_y, max_x-min_x, max_y-min_y)
122
124
  end
125
+
126
+ #===方向と移動先とを関連づける
127
+ # _hash_:: (方向)=>(移動先)の関係を持つハッシュ
128
+ # ハッシュキーは、:up,:down,:left,:right,:baseの5つ
129
+ #返却値:: 生成された矩形(Rect構造体のインスタンス)
130
+ def arrow(hash)
131
+ hash.each{|key, value|
132
+ raise MiakoValueError, "illegal hash key!" unless DIRECTION_LIST.include?(key)
133
+ self[key] = value
134
+ }
135
+ return self
136
+ end
123
137
  end
124
138
 
125
139
  #==選択肢構造体
@@ -136,10 +150,10 @@ module Miyako
136
150
  #_selected_:: 選択肢が選択されているときはtrue、選択されていないときはfalse
137
151
  #_result_:: 選択した結果を示すインスタンス
138
152
  #_left_:: 左方向を選択したときに参照するChoice構造体のインスタンス
139
- #_right_:: 右方向を選択したときに参照するChoice構造体のインスタンス
140
153
  #_up_:: 上方向を選択したときに参照するChoice構造体のインスタンス
154
+ #_right_:: 右方向を選択したときに参照するChoice構造体のインスタンス
141
155
  #_down_:: 下方向を選択したときに参照するChoice構造体のインスタンス
142
- #_base_:: 構造体が要素となっている配列
156
+ #_base_:: 構造体が要素となっているChoices
143
157
  #_attribute_:: 属性を示すハッシュ
144
158
  #_end_select_proc_:: この選択肢を選択したときに優先的に処理するブロック。
145
159
  #ブロックは1つの引数を取る(コマンド選択テキストボックス))。
@@ -147,7 +161,7 @@ module Miyako
147
161
  #_name_:: 選択肢の名前。名前を明示的に指定しないときは、オブジェクトIDを文字列化したものが入る
148
162
  Choice = ChoiceStruct.new(:body, :body_selected, :body_disable,
149
163
  :condition, :enable, :selected, :result,
150
- :left, :right, :up, :down,
164
+ :left, :up, :right, :down,
151
165
  :base, :attribute, :end_select_proc, :name)
152
166
 
153
167
  #==選択肢を管理するクラス
@@ -71,6 +71,8 @@ module Miyako
71
71
  include SpriteBase
72
72
  include Animation
73
73
 
74
+ ALL_TRUE = lambda{ true }
75
+
74
76
  #==キャンセルを示す構造体
75
77
  #コマンド選択がキャンセルされたときに生成される構造体
76
78
  Canceled = Struct.new(:dummy)
@@ -84,6 +86,43 @@ module Miyako
84
86
  #_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
85
87
  Command = Struct.new(:body, :body_selected, :body_disable, :enable, :condition, :result)
86
88
 
89
+ class Command
90
+ # Command構造体をChoice構造体に変換する
91
+ def to_choice(font=Font.sans_serif, size=16, color=Color[:white])
92
+ org_font_color = font.color
93
+ org_font_size = font.size
94
+
95
+ font.color = color
96
+ tmp = self[:body]
97
+ body = tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)
98
+
99
+ font.color = Color[:red]
100
+ tmp = self[:body_selected]
101
+ body_selected = tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
102
+
103
+ font.color = Color[:dark_gray]
104
+ tmp = self[:body_disable]
105
+ body_disable= tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
106
+
107
+ cond = self[:condition] || ALL_TRUE
108
+
109
+ choice = Choice.new(body, body_selected, body_disable,
110
+ cond, self[:enable], false, self[:result],
111
+ nil, nil, nil, nil,
112
+ nil, {}, lambda{}, nil)
113
+ choice.left = choice
114
+ choice.right = choice
115
+ choice.up = choice
116
+ choice.down = choice
117
+ choice.name = choice.__id__.to_s
118
+
119
+ font.color = org_font_color
120
+ font.size = org_font_size
121
+
122
+ choice
123
+ end
124
+ end
125
+
87
126
  #==コマンド構造体
88
127
  #_body_:: コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)
89
128
  #_body_selected_:: 選択時コマンドの名称(移動する、調べるなど、アイコンなどの画像も可)(省略時は、bodyと同一)
@@ -95,6 +134,43 @@ module Miyako
95
134
  #_enabe_:: コマンド選択の時はtrue、選択不可の時はfalseを設定
96
135
  CommandEX = Struct.new(:body, :body_selected, :condition, :body_disable, :enable, :result, :end_select_proc)
97
136
 
137
+ class CommandEx
138
+ # Command構造体をChoice構造体に変換する
139
+ def to_choice(font=Font.sans_serif, size=16, color=Color[:white])
140
+ org_font_color = font.color
141
+ org_font_size = font.size
142
+
143
+ font.color = color
144
+ tmp = self[:body]
145
+ body = tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)
146
+
147
+ font.color = Color[:red]
148
+ tmp = self[:body_selected]
149
+ body_selected = tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
150
+
151
+ font.color = Color[:dark_gray]
152
+ tmp = self[:body_disable]
153
+ body_disable= tmp ? (tmp.method(:to_sprite).arity == 0 ? tmp.to_sprite : tmp.to_sprite(font)) : body
154
+
155
+ cond = self[:condition] || ALL_TRUE
156
+
157
+ choice = Choice.new(body, body_selected, body_disable,
158
+ cond, self[:enable], false, self[:result],
159
+ nil, nil, nil, nil,
160
+ nil, {}, self[:end_select_proc], nil)
161
+ choice.left = choice
162
+ choice.right = choice
163
+ choice.up = choice
164
+ choice.down = choice
165
+ choice.name = choice.__id__.to_s
166
+
167
+ font.color = org_font_color
168
+ font.size = org_font_size
169
+
170
+ choice
171
+ end
172
+ end
173
+
98
174
  attr_reader :visibles, :pre_visibles, :bgs, :base
99
175
  attr_reader :valign
100
176
  #release_checks:: ポーズ解除を問い合わせるブロックの配列。
@@ -224,7 +300,7 @@ module Miyako
224
300
 
225
301
  @engine_stack = []
226
302
 
227
- raise MiyakoProcError, "Aagument count is not same block parameter count!" if proc && proc.arity.abs != params.length
303
+ raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
228
304
  instance_exec(*params, &proc) if block_given?
229
305
  end
230
306
 
@@ -274,6 +350,38 @@ module Miyako
274
350
  self.pre_visibles.render
275
351
  end
276
352
 
353
+ def start_all
354
+ self.bgs.start
355
+ self.visibles.start
356
+ self.textbox_all.start
357
+ self.commandbox_all.start unless self.box_shared?
358
+ self.pre_visibles.start
359
+ end
360
+
361
+ def stop_all
362
+ self.bgs.stop
363
+ self.visibles.stop
364
+ self.textbox_all.stop
365
+ self.commandbox_all.stop unless self.box_shared?
366
+ self.pre_visibles.stop
367
+ end
368
+
369
+ def reset_all
370
+ self.bgs.reset
371
+ self.visibles.reset
372
+ self.textbox_all.reset
373
+ self.commandbox_all.reset unless self.box_shared?
374
+ self.pre_visibles.reset
375
+ end
376
+
377
+ def animation_all
378
+ self.bgs.update_animation
379
+ self.visibles.update_animation
380
+ self.textbox_all.update_animation
381
+ self.commandbox_all.update_animation unless self.box_shared?
382
+ self.pre_visibles.update_animation
383
+ end
384
+
277
385
  #===Yuki#showで表示指定した画像を描画する
278
386
  #描画順は、showメソッドで指定した順に描画される(先に指定した画像は後ろに表示される)
279
387
  #なお、visibleの値がfalseの時は描画されない。
@@ -798,7 +906,7 @@ module Miyako
798
906
  @now_page = nil
799
907
  @first_page = nil
800
908
 
801
- raise MiyakoProcError, "Aagument count is not same block parameter count!" if proc && proc.arity.abs != params.length
909
+ raise MiyakoProcError, "Argument count is not same block parameter count!" if proc && proc.arity.abs != params.length
802
910
  instance_exec(*params, &proc) if proc
803
911
 
804
912
  return self
@@ -829,9 +937,9 @@ module Miyako
829
937
  #返却値:: 自分自身を返す
830
938
  def start_plot(base, plot_proc = nil, *params, &plot_block)
831
939
  raise MiyakoValueError, "Yuki Error! Textbox is not selected!" unless @text_box
832
- raise MiyakoProcError, "Aagument count is not same block parameter count!" if plot_proc && plot_proc.arity.abs != params.length
833
- raise MiyakoProcError, "Aagument count is not same block parameter count!" if plot_block && plot_block.arity.abs != params.length
834
- raise MiyakoProcError, "Aagument count is not same block parameter count!" if @exec_plot && @exec_plot.arity.abs != params.length
940
+ raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_proc && plot_proc.arity.abs != params.length
941
+ raise MiyakoProcError, "Argument count is not same block parameter count!" if plot_block && plot_block.arity.abs != params.length
942
+ raise MiyakoProcError, "Argument count is not same block parameter count!" if @exec_plot && @exec_plot.arity.abs != params.length
835
943
  @base = base
836
944
  plot_facade(plot_proc, *params, &plot_block)
837
945
  return self
@@ -1314,7 +1422,7 @@ module Miyako
1314
1422
  #引数無しのブロックを渡せば、コマンド選択開始前に、決定判別・キャンセル判別に必要な前処理を施すことが出来る
1315
1423
  #選択中、update_innerメソッドを呼び出し、続けて、処理をYuki#startもしくはYuki#update呼び出し直後に戻す
1316
1424
  #Yuki#updateが呼び出されても選択中の場合は、再び上記の処理を繰り返す
1317
- #_command_list_:: 表示するコマンド群。各要素はCommand構造体の配列
1425
+ #_command_list_:: 表示するコマンド群。各要素はCommand構造体/CommandEx構造体/Choicesクラスオブジェクトの配列
1318
1426
  #_cancel_to_:: キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)
1319
1427
  #_chain_block_:: コマンドの表示方法。TextBox#create_choices_chainメソッド参照
1320
1428
  #返却値:: 自分自身を返す
@@ -1322,22 +1430,29 @@ module Miyako
1322
1430
  raise MiyakoValueError, "Yuki Error! Commandbox is not selected!" unless @command_box
1323
1431
  @cancel = cancel_to
1324
1432
 
1325
- choices = []
1326
- command_list.each{|cm|
1327
- if (cm[:condition] == nil || cm[:condition].call)
1328
- cm_array = [cm[:body], cm[:body_selected], cm[:body_disable], cm[:enable], cm[:result]]
1329
- methods = cm.methods
1330
- cm_array << (methods.include?(:end_select_proc) ? cm[:end_select_proc] : nil)
1331
- choices.push(cm_array)
1332
- end
1333
- }
1334
- return self if choices.length == 0
1433
+ if command_list.kind_of?(Choices)
1434
+ @pre_command.each{|proc| proc.call}
1435
+ @pre_cancel.each{|proc| proc.call}
1436
+ @command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
1437
+ @command_box.command(command_list)
1438
+ else
1439
+ choices = []
1440
+ command_list.each{|cm|
1441
+ if (cm[:condition] == nil || cm[:condition].call)
1442
+ cm_array = [cm[:body], cm[:body_selected], cm[:body_disable], cm[:enable], cm[:result]]
1443
+ methods = cm.methods
1444
+ cm_array << (methods.include?(:end_select_proc) ? cm[:end_select_proc] : nil)
1445
+ choices.push(cm_array)
1446
+ end
1447
+ }
1448
+ return self if choices.length == 0
1449
+
1450
+ @pre_command.each{|proc| proc.call}
1451
+ @pre_cancel.each{|proc| proc.call}
1452
+ @command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
1453
+ @command_box.command(@command_box.create_choices_chain(choices, &chain_block))
1454
+ end
1335
1455
 
1336
- @pre_command.each{|proc| proc.call}
1337
- @pre_cancel.each{|proc| proc.call}
1338
- yield if block_given?
1339
- @command_box_all.show if @command_box_all.object_id != @text_box_all.object_id
1340
- @command_box.command(@command_box.create_choices_chain(choices, &chain_block))
1341
1456
  @result = nil
1342
1457
  selecting = true
1343
1458
  reset_selecting