ruby-miyako 2.1.8 → 2.1.9

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.8
5
- 【 作成日 】 2010/01/16
4
+ 【 バージョン 】 2.1.9
5
+ 【 作成日 】 2010/02/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.8公式リリース版です。
18
+ 本バージョンは、2.1.9公式リリース版です。
19
19
  本バージョンでは、ドキュメント・リファレンスは不十分ですが、「サイログ。」内や、サンプルプログラムの紹介等で随時ドキュメントを公開して行きます。
20
20
  (RDOC化を進めていますので、我こそはと思う方は是非・・・)
21
21
 
@@ -1615,5 +1615,43 @@ v2.1.8(2010.01.16)
1615
1615
  ・InitiativeScenarioEngine#gc_enable?
1616
1616
  <インスタンスメソッド廃止>
1617
1617
 
1618
+ v2.1.9(2010.03.07)
1619
+ <バグ修正>
1620
+ ・ScenarioEngine#canceled?が正しく動作しない(オブジェクトの参照間違い)バグを修正
1621
+ ・InitiativeScenarioEngine#canceled?が正しく動作しない(オブジェクトの参照間違い)バグを修正
1622
+ ・Audio::SE#startの記述ミスを修正
1623
+ <機能改善>
1624
+ ・シーン管理(Story,Scene)に、オブジェクトの引き継ぎ機能を追加
1625
+ ・シーン終了時、返却値に[次シーン名,オブジェクト]を渡すことで、次シーンでは、全シーンの状態などを受け取ることが可能になった
1626
+ ・Story#runメソッドの性能改善
1627
+ <仕様変更>
1628
+ ・Story::Scene#.initializeメソッドの引数インタフェースを変更(引き継ぎ変数の導入のため)
1629
+ ・SimpleStory::Scene#.initializeメソッドの引数インタフェースを変更(引き継ぎ変数の導入のため)
1630
+ <ファイル追加>
1631
+ <ファイル削除>
1632
+ <グローバル変数追加>
1633
+ <定数追加>
1634
+ <定数削除>
1635
+ <構造体追加>
1636
+ <クラス追加>
1637
+ <モジュール追加>
1638
+ <mixin>
1639
+ <クラス・モジュールメソッド追加>
1640
+ <クラス・モジュールメソッド廃止>
1641
+ <モジュール関数追加>
1642
+ ・Story#.hand_over
1643
+ ・Story#.hand_over=
1644
+ ・Story::Scene#.hand_over
1645
+ ・Story::Scene#.hand_over=
1646
+ ・Story::Scene#.clear_hand_over
1647
+ ・SimpleStory#.hand_over
1648
+ ・SimpleStory#.hand_over=
1649
+ ・SimpleStory::Scene#.hand_over
1650
+ ・SimpleStory::Scene#.hand_over=
1651
+ ・SimpleStory::Scene#.clear_hand_over
1652
+ <モジュール関数廃止>
1653
+ <インスタンスメソッド追加>
1654
+ <インスタンスメソッド廃止>
1655
+
1618
1656
  *******************************************************************************
1619
1657
  このReadMeファイルは「れ~どめ~えじた~」によって作成されました。
@@ -41,7 +41,7 @@ module Miyako
41
41
  def Audio.initialized?
42
42
  @@initialized
43
43
  end
44
-
44
+
45
45
  #===BGM・効果音の再生情報を更新する
46
46
  def Audio.update
47
47
  return if $not_use_audio
@@ -96,7 +96,7 @@ module Miyako
96
96
  def allow_loop_count_up? #:nodoc:
97
97
  @cnt_up_flag
98
98
  end
99
-
99
+
100
100
  #===インスタンスを生成する
101
101
  #_fname_:: 演奏するBGMファイル名。対応ファイルはwav,mp3,ogg,mid等。
102
102
  #_loops_:: 演奏の繰り返し回数を指定する。-1を渡すと無限に繰り返す。省略時は-1を渡す。
@@ -117,7 +117,7 @@ module Miyako
117
117
  def initialize_copy(obj)
118
118
  raise MiyakoCopyError.not_copy("BGM")
119
119
  end
120
-
120
+
121
121
  #===音の大きさを設定する
122
122
  #_v_:: 音の大きさ。0〜255までの整数。255で最大。
123
123
  #返却値:: 自分自身を返す
@@ -129,7 +129,7 @@ module Miyako
129
129
  end
130
130
 
131
131
  alias_method(:setVolume, :set_volume)
132
-
132
+
133
133
  #===BGMを演奏する。ブロックが渡されている場合、ブロックの評価中のみ演奏する。
134
134
  #音の大きさ・繰り返し回数・演奏時間を指定可能
135
135
  #_vol_:: 音の大きさ(省略可能)。0〜255の整数を設定する。nilを渡したときは音の大きさを変更しない。
@@ -144,7 +144,7 @@ module Miyako
144
144
  end
145
145
  return self.play(vol, loops)
146
146
  end
147
-
147
+
148
148
  #===BGMを演奏する。ブロックが渡されている場合、ブロックの評価中のみ演奏する。
149
149
  #音の大きさ・繰り返し回数を指定可能
150
150
  #_vol_:: 音の大きさ(省略可能)。0〜255の整数を設定する。nilを渡したときは音の大きさを変更しない。
@@ -195,19 +195,19 @@ module Miyako
195
195
  end
196
196
 
197
197
  alias_method(:fadeIn, :fade_in)
198
-
198
+
199
199
  #===演奏中を示すフラグ
200
200
  #返却値:: 演奏中はtrue、停止(一時停止)中はfalseを返す
201
201
  def playing?
202
202
  return false if $not_use_audio
203
203
  return (SDL::Mixer.play_music? && self.in_the_loop?) || self.fade_out?
204
204
  end
205
-
205
+
206
206
  def playing_without_loop? #:nodoc:
207
207
  return false if $not_use_audio
208
208
  return SDL::Mixer.play_music?
209
209
  end
210
-
210
+
211
211
  #===演奏停止中を示すフラグ
212
212
  #返却値:: 演奏停止中はtrue、演奏中はfalseを返す
213
213
  def pausing?
@@ -223,7 +223,7 @@ module Miyako
223
223
  SDL::Mixer.pause_music if SDL::Mixer.play_music?
224
224
  return self
225
225
  end
226
-
226
+
227
227
  #==フェードイン中を示すフラグ
228
228
  #返却値:: フェードイン中はtrue、そのほかの時はfalseを返す
229
229
  def fade_in?
@@ -233,7 +233,7 @@ module Miyako
233
233
  # from SDL_Mixer.h
234
234
  return SDL::Mixer.fading_music == 2
235
235
  end
236
-
236
+
237
237
  #==フェードアウト中を示すフラグ
238
238
  #返却値:: フェードアウト中はtrue、そのほかの時はfalseを返す
239
239
  def fade_out?
@@ -276,7 +276,7 @@ module Miyako
276
276
  end
277
277
  return self
278
278
  end
279
-
279
+
280
280
  #===演奏情報を解放する
281
281
  #レシーバをdup/deep_dupなどのメソッドで複製したことがある場合、
282
282
  #内部データを共有しているため、呼び出すときには注意すること
@@ -285,7 +285,7 @@ module Miyako
285
285
  @bgm.destroy
286
286
  @bgm = nil
287
287
  end
288
-
288
+
289
289
  alias_method(:fadeOut, :fade_out)
290
290
  end
291
291
 
@@ -295,9 +295,9 @@ module Miyako
295
295
  @@playings = []
296
296
 
297
297
  SDL::Mixer.allocate_channels(@@channels)
298
-
298
+
299
299
  attr_accessor :priority
300
-
300
+
301
301
  #===効果音の再生情報を更新する
302
302
  def SE.update
303
303
  return if $not_use_audio
@@ -312,19 +312,19 @@ module Miyako
312
312
  end
313
313
  }
314
314
  end
315
-
315
+
316
316
  #===何かしらの効果音が再生中かどうかを確認する
317
317
  #返却値:: 何かしらの効果音が再生中ならtrue、それ以外はfalse
318
318
  def SE.playing_any?
319
319
  !@@playings.empty?
320
320
  end
321
-
321
+
322
322
  #===同時発音数を取得する
323
323
  #返却値:: 同時再生数
324
324
  def SE.channels
325
325
  @@channels
326
326
  end
327
-
327
+
328
328
  #===現在再生している効果音をすべて停止する
329
329
  #_msec_:: 停止する時間をミリ秒で指定(msecミリ秒後に停止)。nilを渡すとすぐに停止する。省略時はnilを渡す。
330
330
  def SE.stop(msec = nil)
@@ -334,7 +334,7 @@ module Miyako
334
334
  msec ? SDL::Mixer.expire(-1, msec) : SDL::Mixer.halt(-1)
335
335
  @@playings.clear
336
336
  end
337
-
337
+
338
338
  #===同時発音数を変更する
339
339
  #同時発音数に0以下を指定するとMiyakoValueErrorが発生する
340
340
  #現在同時に発音している音が新しいせっていによりあぶれる場合、あぶれた分を優先度の低い順に停止する
@@ -409,7 +409,7 @@ module Miyako
409
409
  def initialize_copy(obj)
410
410
  raise MiyakoCopyError.not_copy("SE")
411
411
  end
412
-
412
+
413
413
  #===効果音を鳴らす
414
414
  #音の大きさ・繰り返し回数・演奏時間を指定可能
415
415
  #_vol_:: 音の大きさ(省略可能)。0〜255の整数を設定する。nilを渡したときは音の大きさを変更しない。
@@ -421,7 +421,7 @@ module Miyako
421
421
  raise MiyakoValueError.over_range(vol, 0, 255) unless (0..255).cover?(vol)
422
422
  end
423
423
  if time
424
- raise MiyakoValueError.over_range(time, 1, nil) unless msec > 1
424
+ raise MiyakoValueError.over_range(time, 1, nil) unless time > 1
425
425
  end
426
426
  raise MiyakoValueError.over_range(loops, -1, nil) unless loops >= -1
427
427
  return self.play(vol, loops, time)
@@ -470,7 +470,7 @@ module Miyako
470
470
  return false if $not_use_audio
471
471
  return @channel != -1 ? (SDL::Mixer.play?(@channel) && self.in_the_loop?) || self.fade_out? : false
472
472
  end
473
-
473
+
474
474
  def playing_without_loop? #:nodoc:
475
475
  return false if $not_use_audio
476
476
  return @channel != -1 ? SDL::Mixer.play?(@channel) : false
@@ -552,7 +552,7 @@ module Miyako
552
552
  # return SDL::Mixer.fading(@channel) == SDL::Mixer::FADING_IN
553
553
  return SDL::Mixer.fading(@channel) == 2
554
554
  end
555
-
555
+
556
556
  #==フェードアウト中を示すフラグ
557
557
  #返却値:: フェードアウト中はtrue、そのほかの時はfalseを返す
558
558
  def fade_out?
@@ -574,7 +574,7 @@ module Miyako
574
574
  @wave.set_volume(v)
575
575
  return self
576
576
  end
577
-
577
+
578
578
  #===演奏情報を解放する
579
579
  #レシーバをdup/deep_dupなどのメソッドで複製したことがある場合、
580
580
  #内部データを共有しているため、呼び出すときには注意すること
@@ -582,7 +582,7 @@ module Miyako
582
582
  @wave.destroy
583
583
  @wave = nil
584
584
  end
585
-
585
+
586
586
  alias_method(:setVolume, :set_volume)
587
587
  end
588
588
  end
@@ -1053,7 +1053,7 @@ module Miyako
1053
1053
  #[[Yukiスクリプトとして利用可能]]
1054
1054
  #返却値:: キャンセルされたときはtrue、されていないときはfalseを返す
1055
1055
  def canceled?
1056
- return result == @cancel
1056
+ return @result == @cancel
1057
1057
  end
1058
1058
 
1059
1059
  #===ブロックを条件として設定する
@@ -1318,7 +1318,7 @@ module Miyako
1318
1318
  #_cancel_to_:: キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)
1319
1319
  #_chain_block_:: コマンドの表示方法。TextBox#create_choices_chainメソッド参照
1320
1320
  #返却値:: 自分自身を返す
1321
- def command(command_list, cancel_to = Canceled, &chain_block)
1321
+ def command(command_list, cancel_to = Miyako::InitiativeYuki::Canceled, &chain_block)
1322
1322
  raise MiyakoValueError, "Yuki Error! Commandbox is not selected!" unless @command_box
1323
1323
  @cancel = cancel_to
1324
1324
 
@@ -25,6 +25,7 @@ module Miyako
25
25
  #==シーン実行クラス
26
26
  #用意したシーンインスタンスを実行
27
27
  class SimpleStory
28
+ attr_accessor :hand_over
28
29
 
29
30
  @@sub_scenes = [:sub_scene, :sub_routine]
30
31
 
@@ -48,6 +49,8 @@ module Miyako
48
49
  @next_label = nil
49
50
 
50
51
  @stack = []
52
+
53
+ @hand_over = nil
51
54
  end
52
55
 
53
56
  def initialize_copy(obj) #:nodoc:
@@ -62,16 +65,21 @@ module Miyako
62
65
  u = nil
63
66
  on = nil
64
67
  @stack = Array.new # reset
68
+ @hand_over = nil
65
69
  while n != nil
66
70
  @prev_label = on
67
71
  on = n
68
72
 
69
73
  raise MiyakoValueError, "Illegal Script-label name! : #{n}" unless Scene.has_scene?(n.to_s)
70
74
  raise MiyakoValueError, "This scene cannot use for Standard Scene! : #{n}" if n.scene_type != :scene
71
- u = n.new(self) if u == nil
75
+ u = n.new(self, @hand_over) if u == nil
76
+ @hand_over = nil
72
77
  u.init_inner(@prev_label, self.upper_label)
73
78
 
74
79
  n = u.execute
80
+ n, @hand_over = n if n and n.kind_of?(Array)
81
+ next if on.eql?(n)
82
+ u.clear_hand_over
75
83
  u.next = n
76
84
  @next_label = n
77
85
  if n.nil?
@@ -137,9 +145,9 @@ module Miyako
137
145
  return @@scenes.has_key?(s)
138
146
  end
139
147
 
140
- def initialize(story, check_only=false) #:nodoc:
148
+ def initialize(story, handover, check_only=false) #:nodoc:
141
149
  return if check_only
142
- @@pool[self.object_id] = Miyako::Story::ScenePool.new(story, nil, nil, nil)
150
+ @@pool[self.object_id] = Miyako::Story::ScenePool.new(story, nil, nil, nil, handover)
143
151
  @now = self.now_scene
144
152
  self.init
145
153
  end
@@ -154,7 +162,21 @@ module Miyako
154
162
  #但し、最初のシーンの場合はnilを返す
155
163
  #返却値:: 前回実行したシーン名(Classクラスインスタンス)
156
164
  def story
157
- return @@pool[self.object_id].story
165
+ @@pool[self.object_id].story
166
+ end
167
+
168
+ #===前シーンから引き継いだオブジェクトを参照する
169
+ def hand_over
170
+ return @@pool[self.object_id].hand_over
171
+ end
172
+
173
+ def hand_over=(obj)
174
+ @@pool[self.object_id].hand_over = obj
175
+ @@pool[self.object_id].story.hand_over = obj
176
+ end
177
+
178
+ def clear_hand_over
179
+ @@pool[self.object_id].hand_over = nil
158
180
  end
159
181
 
160
182
  #===サブルーチンの呼び元シーンを返す
@@ -25,6 +25,7 @@ module Miyako
25
25
  #==シーン実行クラス
26
26
  #用意したシーンインスタンスを実行
27
27
  class Story
28
+ attr_accessor :hand_over
28
29
 
29
30
  @@sub_scenes = [:sub_scene, :sub_routine]
30
31
 
@@ -53,6 +54,7 @@ module Miyako
53
54
  @scene_cache_list = Array.new
54
55
  @scene_cache_max = 20
55
56
 
57
+ @hand_over = nil
56
58
  end
57
59
 
58
60
  def initialize_copy(obj) #:nodoc:
@@ -82,6 +84,7 @@ module Miyako
82
84
  u = nil
83
85
  on = nil
84
86
  @stack = Array.new # reset
87
+ @hand_over = nil
85
88
  while n != nil
86
89
  @prev_label = on
87
90
  on = n
@@ -89,15 +92,19 @@ module Miyako
89
92
  raise MiyakoValueError, "Illegal Script-label name! : #{n}" unless Scene.has_scene?(n.to_s)
90
93
  raise MiyakoValueError, "This scene cannot use for Standard Scene! : #{n}" if n.scene_type != :scene
91
94
  u = get_scene(n, @stack.size) if u == nil
95
+ u.hand_over = @hand_over
96
+ @hand_over = nil
92
97
  u.init_inner(@prev_label, self.upper_label)
93
98
  u.setup
94
99
 
95
100
  Miyako.main_loop do
96
101
  bk_n = on
97
102
  n = u.update
103
+ n, @hand_over = n if n and n.kind_of?(Array)
98
104
  u.render
99
105
  break unless n && on.eql?(n)
100
106
  end
107
+ u.clear_hand_over
101
108
  u.next = n
102
109
  @next_label = n
103
110
  u.final
@@ -125,7 +132,7 @@ module Miyako
125
132
  end
126
133
 
127
134
  #==シーン情報格納のための構造体
128
- ScenePool = Struct.new(:story, :prev, :next, :upper)
135
+ ScenePool = Struct.new(:story, :prev, :next, :upper, :hand_over)
129
136
 
130
137
  #==シーンモジュール
131
138
  #本モジュールをmixinすることにより、シーンを示すインスタンスを作成することができる
@@ -168,9 +175,9 @@ module Miyako
168
175
  return @@scenes.has_key?(s)
169
176
  end
170
177
 
171
- def initialize(story, check_only=false) #:nodoc:
178
+ def initialize(story, handover=nil, check_only=false) #:nodoc:
172
179
  return if check_only
173
- @@pool[self.object_id] = ScenePool.new(story, nil, nil, nil)
180
+ @@pool[self.object_id] = ScenePool.new(story, nil, nil, nil, handover)
174
181
  @now = self.now_scene
175
182
  self.init
176
183
  end
@@ -188,6 +195,20 @@ module Miyako
188
195
  return @@pool[self.object_id].story
189
196
  end
190
197
 
198
+ #===前シーンから引き継いだオブジェクトを参照する
199
+ def hand_over
200
+ return @@pool[self.object_id].hand_over
201
+ end
202
+
203
+ def hand_over=(obj)
204
+ @@pool[self.object_id].hand_over = obj
205
+ @@pool[self.object_id].story.hand_over = obj
206
+ end
207
+
208
+ def clear_hand_over
209
+ @@pool[self.object_id].hand_over = nil
210
+ end
211
+
191
212
  #===サブルーチンの呼び元シーンを返す
192
213
  #サブルーチンを呼び出したシーンをクラス名で返す
193
214
  #サブルーチンではないときはnilを返す
@@ -1054,7 +1054,7 @@ module Miyako
1054
1054
  #[[Yukiスクリプトとして利用可能]]
1055
1055
  #返却値:: キャンセルされたときはtrue、されていないときはfalseを返す
1056
1056
  def canceled?
1057
- return result == @cancel
1057
+ return @result == @cancel
1058
1058
  end
1059
1059
 
1060
1060
  #===ブロックを条件として設定する
@@ -1341,7 +1341,7 @@ module Miyako
1341
1341
  #_cancel_to_:: キャンセルボタンを押したときの結果。デフォルトはnil(キャンセル無効)
1342
1342
  #_chain_block_:: コマンドの表示方法。TextBox#create_choices_chainメソッド参照
1343
1343
  #返却値:: 自分自身を返す
1344
- def command(command_list, cancel_to = Canceled, &chain_block)
1344
+ def command(command_list, cancel_to = Miyako::Yuki::Canceled, &chain_block)
1345
1345
  raise MiyakoValueError, "Yuki Error! Commandbox is not selected!" unless @command_box
1346
1346
  @cancel = cancel_to
1347
1347
 
data/lib/Miyako/miyako.rb CHANGED
@@ -3,8 +3,8 @@
3
3
  #=コンテンツ作成ライブラリMiyako2.1
4
4
  #
5
5
  #Authors:: サイロス誠
6
- #Version:: 2.1.3
7
- #Copyright:: 2007-2009 Cyross Makoto
6
+ #Version:: 2.1.9
7
+ #Copyright:: 2007-2010 Cyross Makoto
8
8
  #License:: LGPL2.1
9
9
  #
10
10
  =begin
@@ -63,7 +63,7 @@ Thread.abort_on_exception = true
63
63
 
64
64
  #==Miyako基幹モジュール
65
65
  module Miyako
66
- VERSION = "2.1.7"
66
+ VERSION = "2.1.9"
67
67
 
68
68
  #===アプリケーション実行中に演奏する音楽のサンプリングレートを指定する
69
69
  #単位はHz(周波数)
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.8
4
+ version: 2.1.9
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-16 00:00:00 +09:00
12
+ date: 2010-03-07 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15