cyross-ruby-miyako-mswin32 2.0.5

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.
Files changed (145) hide show
  1. data/README +929 -0
  2. data/img/cursor.png +0 -0
  3. data/img/cursors.png +0 -0
  4. data/img/dice.png +0 -0
  5. data/img/wait_cursor.png +0 -0
  6. data/img/win_base.png +0 -0
  7. data/img/window.png +0 -0
  8. data/install_miyako.rb +61 -0
  9. data/lib/Miyako/API/audio.rb +198 -0
  10. data/lib/Miyako/API/basic_data.rb +573 -0
  11. data/lib/Miyako/API/bitmap.rb +507 -0
  12. data/lib/Miyako/API/choices.rb +475 -0
  13. data/lib/Miyako/API/collision.rb +460 -0
  14. data/lib/Miyako/API/diagram.rb +561 -0
  15. data/lib/Miyako/API/drawing.rb +151 -0
  16. data/lib/Miyako/API/fixedmap.rb +428 -0
  17. data/lib/Miyako/API/font.rb +403 -0
  18. data/lib/Miyako/API/input.rb +447 -0
  19. data/lib/Miyako/API/layout.rb +433 -0
  20. data/lib/Miyako/API/map.rb +529 -0
  21. data/lib/Miyako/API/map_event.rb +198 -0
  22. data/lib/Miyako/API/modules.rb +109 -0
  23. data/lib/Miyako/API/movie.rb +154 -0
  24. data/lib/Miyako/API/parts.rb +189 -0
  25. data/lib/Miyako/API/plane.rb +166 -0
  26. data/lib/Miyako/API/screen.rb +325 -0
  27. data/lib/Miyako/API/shape.rb +443 -0
  28. data/lib/Miyako/API/sprite.rb +752 -0
  29. data/lib/Miyako/API/sprite_animation.rb +481 -0
  30. data/lib/Miyako/API/spriteunit.rb +147 -0
  31. data/lib/Miyako/API/story.rb +300 -0
  32. data/lib/Miyako/API/textbox.rb +725 -0
  33. data/lib/Miyako/API/utility.rb +388 -0
  34. data/lib/Miyako/API/viewport.rb +140 -0
  35. data/lib/Miyako/API/yuki.rb +996 -0
  36. data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
  37. data/lib/Miyako/EXT/raster_scroll.rb +138 -0
  38. data/lib/Miyako/EXT/slides.rb +157 -0
  39. data/lib/Miyako/miyako.rb +171 -0
  40. data/lib/Miyako/miyako_no_katana.so +0 -0
  41. data/logo/EGSR_logo.png +0 -0
  42. data/logo/EGSR_logo_bg.png +0 -0
  43. data/logo/EGSR_logo_fg.png +0 -0
  44. data/logo/EGSR_title_banner.png +0 -0
  45. data/logo/EGSR_title_logo.png +0 -0
  46. data/logo/miyako.png +0 -0
  47. data/logo/miyako_banner.png +0 -0
  48. data/logo/space.png +0 -0
  49. data/sample/Animation1/m1ku.rb +68 -0
  50. data/sample/Animation1/m1ku_arm_0.png +0 -0
  51. data/sample/Animation1/m1ku_arm_1.png +0 -0
  52. data/sample/Animation1/m1ku_arm_2.png +0 -0
  53. data/sample/Animation1/m1ku_arm_3.png +0 -0
  54. data/sample/Animation1/m1ku_back.jpg +0 -0
  55. data/sample/Animation1/m1ku_body.png +0 -0
  56. data/sample/Animation1/m1ku_eye_0.png +0 -0
  57. data/sample/Animation1/m1ku_eye_1.png +0 -0
  58. data/sample/Animation1/m1ku_eye_2.png +0 -0
  59. data/sample/Animation1/m1ku_eye_3.png +0 -0
  60. data/sample/Animation1/m1ku_hair_front.png +0 -0
  61. data/sample/Animation1/m1ku_hair_rear.png +0 -0
  62. data/sample/Animation1/readme.txt +72 -0
  63. data/sample/Animation2/lex.rb +96 -0
  64. data/sample/Animation2/lex_back.png +0 -0
  65. data/sample/Animation2/lex_body.png +0 -0
  66. data/sample/Animation2/lex_roadroller.png +0 -0
  67. data/sample/Animation2/lex_wheel_0.png +0 -0
  68. data/sample/Animation2/lex_wheel_1.png +0 -0
  69. data/sample/Animation2/lex_wheel_2.png +0 -0
  70. data/sample/Animation2/readme.txt +72 -0
  71. data/sample/Animation2/song_title.png +0 -0
  72. data/sample/Diagram_sample/back.png +0 -0
  73. data/sample/Diagram_sample/chr01.png +0 -0
  74. data/sample/Diagram_sample/chr02.png +0 -0
  75. data/sample/Diagram_sample/cursor.png +0 -0
  76. data/sample/Diagram_sample/diagram_sample_yuki2.rb +387 -0
  77. data/sample/Diagram_sample/readme.txt +90 -0
  78. data/sample/Diagram_sample/wait_cursor.png +0 -0
  79. data/sample/Room3/blue.rb +297 -0
  80. data/sample/Room3/ending.rb +180 -0
  81. data/sample/Room3/green.rb +220 -0
  82. data/sample/Room3/image/akamatsu.png +0 -0
  83. data/sample/Room3/image/aoyama.png +0 -0
  84. data/sample/Room3/image/congra.png +0 -0
  85. data/sample/Room3/image/congratulation.png +0 -0
  86. data/sample/Room3/image/congratulation_bg.png +0 -0
  87. data/sample/Room3/image/cursor.png +0 -0
  88. data/sample/Room3/image/midori.png +0 -0
  89. data/sample/Room3/image/mittsu_no_oheya.png +0 -0
  90. data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
  91. data/sample/Room3/image/room_blue.png +0 -0
  92. data/sample/Room3/image/room_green.png +0 -0
  93. data/sample/Room3/image/room_red.png +0 -0
  94. data/sample/Room3/image/start.png +0 -0
  95. data/sample/Room3/image/three_doors.png +0 -0
  96. data/sample/Room3/image/wait_cursor.png +0 -0
  97. data/sample/Room3/main.rb +120 -0
  98. data/sample/Room3/main_component.rb +59 -0
  99. data/sample/Room3/readme.txt +76 -0
  100. data/sample/Room3/red.rb +227 -0
  101. data/sample/Room3/room3.rb +27 -0
  102. data/sample/Room3/title.rb +184 -0
  103. data/sample/ball_action_sample.rb +204 -0
  104. data/sample/blit_rop.rb +70 -0
  105. data/sample/cairo_sample.rb +25 -0
  106. data/sample/circle_collision_test.rb +62 -0
  107. data/sample/collision_test.rb +33 -0
  108. data/sample/collision_test2.rb +104 -0
  109. data/sample/fixed_map_test/cursor.png +0 -0
  110. data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
  111. data/sample/fixed_map_test/map.csv +19 -0
  112. data/sample/fixed_map_test/map_01.png +0 -0
  113. data/sample/fixed_map_test/mapchip.csv +23 -0
  114. data/sample/fixed_map_test/monster.png +0 -0
  115. data/sample/fixed_map_test/readme.txt +72 -0
  116. data/sample/map_test/chara.rb +58 -0
  117. data/sample/map_test/chr1.png +0 -0
  118. data/sample/map_test/cursor.png +0 -0
  119. data/sample/map_test/main_parts.rb +69 -0
  120. data/sample/map_test/main_scene.rb +153 -0
  121. data/sample/map_test/map.png +0 -0
  122. data/sample/map_test/map2.png +0 -0
  123. data/sample/map_test/map_layer.csv +127 -0
  124. data/sample/map_test/map_manager.rb +75 -0
  125. data/sample/map_test/map_test.rb +23 -0
  126. data/sample/map_test/mapchip.csv +21 -0
  127. data/sample/map_test/oasis.rb +71 -0
  128. data/sample/map_test/readme.txt +89 -0
  129. data/sample/map_test/route.rb +157 -0
  130. data/sample/map_test/sea.png +0 -0
  131. data/sample/map_test/town.rb +74 -0
  132. data/sample/map_test/wait_cursor.png +0 -0
  133. data/sample/map_test/window.png +0 -0
  134. data/sample/polygon_test.rb +35 -0
  135. data/sample/rasterscroll.rb +25 -0
  136. data/sample/takahashi.rb +42 -0
  137. data/sample/text.png +0 -0
  138. data/sample/textbox_sample.rb +190 -0
  139. data/sample/transform.rb +54 -0
  140. data/sample/utility_test.rb +73 -0
  141. data/sample/utility_test2.rb +61 -0
  142. data/sample/utility_test3.rb +64 -0
  143. data/sample/utility_test4.rb +73 -0
  144. data/uninstall_miyako.rb +19 -0
  145. metadata +196 -0
@@ -0,0 +1,62 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension Cairo-Miyako interface
3
+ =begin
4
+ Miyako Extention Library v2.0
5
+ Copyright (C) 2007-2008 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
+ =end
21
+
22
+ begin
23
+ loaded = false
24
+ require 'cairo'
25
+ rescue LoadError
26
+ begin
27
+ require 'rubygems'
28
+ require 'cairo'
29
+ loaded = true
30
+ rescue LoadError
31
+ raise Miyako::MiyakoError, "Sorry, Cairo-Miyako Interface has rcairo." unless loaded
32
+ end
33
+ end
34
+
35
+ module Miyako
36
+ #==MiyakoのSpriteクラスのインスタンスとCairoのImageSurfaceクラスのインスタンスとの相互変換モジュール
37
+ #要rcairo1.8以降
38
+ module MiyakoCairo
39
+ #===SpriteインスタンスをCairoのImageSurfaceに変換
40
+ #変換したCairo::ImageSurfaceインスタンスは、32ビット(Cairo::Format::ARGB32)の画像を持つ
41
+ #_sprite_:: 変換元Spriteインスタンス
42
+ #返却値:: 変換したCairo::ImageSurfaceインスタンス
43
+ def MiyakoCairo.to_cairo_surface(sprite)
44
+ return Cairo::ImageSurface.new(sprite.bitmap.pixels, Cairo::Format::ARGB32, sprite.w, sprite.h, sprite.w * 4)
45
+ end
46
+
47
+ #===CairoのImageSurfaceをSpriteインスタンスに変換
48
+ #変換したSpriteインスタンスは、:acタイプ(但し元画像がCairo::Format::RGB24の時は:asタイプ)の画像を持つ
49
+ #_surface_:: 変換元Cairo::ImageSurfaceインスタンス
50
+ #返却値:: 変換したSpriteインスタンス
51
+ def MiyakoCairo.to_sprite(surface)
52
+ # エンディアン判別
53
+ if [1].pack("V*") == [1].pack("L*") # リトルエンディアン?
54
+ bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff0000, 0xff00, 0xff, 0xff000000)
55
+ else # ビッグエンディアン
56
+ bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff00, 0xff0000, 0xff000000, 0xff)
57
+ end
58
+ return Sprite.new(:bitmap => bitmap, :type => :as) if surface.format == Cairo::Format::RGB24
59
+ return Sprite.new(:bitmap => bitmap, :type => :ac)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,138 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension Raster Scroll
3
+ =begin
4
+ Miyako Extention Library v2.0
5
+ Copyright (C) 2007-2008 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
+ =end
21
+
22
+ module Miyako
23
+ #==ラスタスクロール実行クラス
24
+ #波の様に揺れる(疑似)ラスタスクロールを行うクラス
25
+ #波はサイン波で構成される
26
+ class RasterScroll
27
+ #===インスタンスを作成する
28
+ #ラスタスクロール対象のスプライトを登録する
29
+ #_sspr_:: ラスタスクロール対象スプライト
30
+ #返却値:: 作成したインスタンス
31
+ def initialize(sspr)
32
+ @src = sspr
33
+ @lines = 0
34
+ @h = @src.h
35
+ @size = 0
36
+ @sangle = 0
37
+ @dangle = 0
38
+ @fade_out = false
39
+ @fo_size = 0
40
+ @effecting = false
41
+ end
42
+
43
+ #===ラスタスクロールを開始する
44
+ #ラスタスクロール実行用に設定する引数は以下の通り
45
+ #:lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン)
46
+ #:size -> 最大振幅数(:size=>20を指定すると、最大20ピクセルの高さの波となる)。デフォルトは4(ピクセル)
47
+ #:start_angle -> 開始角度(一番上のラインでの振幅角度(ラジアンではなく角度なのに注意!))。デフォルトは0(度)
48
+ #:distance -> 角度の変化量(ラインごとの角度の変化量。:distance=>1のときは、1度ずつ変化させる)。デフォルトは1(度)
49
+ #:wait -> 変化させる間隔(WaitCounterクラスのインスタンス)。デフォルトは0.1秒間隔
50
+ #_params_:: ラスタスクロール情報引数
51
+ #返却値:: 自分自身を返す
52
+ def start(params)
53
+ @lines = params[:lines] || 1
54
+ @size = params[:size] || 4
55
+ @sangle = params[:start_angle] || 0
56
+ @dangle = params[:distance] || 1
57
+ @wait = params[:wait] || WaitCounter.new(0.1)
58
+ @h = @h / @lines
59
+ @fade_out = false
60
+ @fo_size = 0
61
+ @effecting = true
62
+ @wait.start
63
+ return self
64
+ end
65
+
66
+ #===ラスタスクロール処理を更新する
67
+ #返却値:: 自分自身を返す
68
+ def update
69
+ return self unless @effecting
70
+ if @wait.finish?
71
+ @sangle = (@sangle + @dangle) % 360
72
+ @wait.start
73
+ if @fade_out
74
+ return self unless @fo_wait.finish?
75
+ @size = @size - @fo_size
76
+ @fo_wait.start
77
+ if @size <= 0
78
+ @effecting = false
79
+ @fade_out = false
80
+ end
81
+ end
82
+ end
83
+ return self
84
+ end
85
+
86
+ #===ラスタスクロールの実行状態を問い合わせる
87
+ #返却値:: ラスタスクロール中の時はtrueを返す
88
+ def effecting?
89
+ return @effecting
90
+ end
91
+
92
+ #===ラスタスクロールの実行状態を問い合わせる
93
+ #返却値:: ラスタスクロール中の時はtrueを返す
94
+ def fade_out?
95
+ return @fade_out
96
+ end
97
+
98
+ #===ラスタスクロールを停止する
99
+ def stop
100
+ @wait.stop
101
+ @fo_size.stop if @fo_size
102
+ @effecting = false
103
+ @fade_out = false
104
+ end
105
+
106
+ #===ラスタスクロールを画面に描画する
107
+ def render
108
+ angle = @sangle
109
+ @h.times{|y|
110
+ rsx = @size * Math.sin(angle)
111
+ @src.render{|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
112
+ angle = angle + @dangle
113
+ }
114
+ end
115
+
116
+ #===ラスタスクロールを画像に描画する
117
+ #_dst_:: 描画先画像
118
+ def render_to(dst)
119
+ @angle = @sangle
120
+ @h.times{|y|
121
+ rsx = @size * Math.sin(@angle)
122
+ @src.render_to(dst){|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
123
+ @angle = @angle + @dangle
124
+ }
125
+ end
126
+
127
+ #===ラスタスクロールをフェードアウトさせる
128
+ #引数fwに与えられた間隔で振幅が減っていき(減る量は引数fsで与えられた値)、振幅がゼロになると終了する
129
+ #_fs_:: フェードアウトの変化量
130
+ #_fw_:: フェードアウトの変化を待つカウント(WaitCounterクラスインスタンス)
131
+ def fade_out(fs, fw)
132
+ @fo_size = fs
133
+ @fo_wait = fw
134
+ @fo_wait.start
135
+ @fade_out = true
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,157 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension
3
+ =begin
4
+ Miyako Extention Library v2.0
5
+ Copyright (C) 2007-2008 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
+ =end
21
+
22
+ module Miyako
23
+ #==スライドを構成するモジュール
24
+ #Mixinして使用する
25
+ #使用するには、initializeメソッドの定義内で、init_slideメソッドを呼び出す必要がある
26
+ #ただし、インスタンス変数として、@bodyを予約済み
27
+ module Slide
28
+ include Layout
29
+ extend Forwardable
30
+
31
+ @@templates = { }
32
+
33
+ #===スライドを作成する
34
+ #スライド本体は、Partsクラスのインスタンス
35
+ #_params_:: あとで書く
36
+ def Slide.create(params = {})
37
+ tmp = params.dup
38
+ tmp[:size] ||= Size.new(640, 480)
39
+ tmp[:type] ||= :ac
40
+ tmp[:color] ||= Color[:white]
41
+ return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
42
+ end
43
+
44
+ @@templates["320x240"] = {:size=>Size.new(320,240)}
45
+ @@templates["640x480"] = {}
46
+ @@templates["800x600"] = {:size=>Size.new(800,600)}
47
+ @@templates["white"] = {:color=>[255,255,255,255]}
48
+ @@templates["gray"] = {:color=>[128,128,128,255]}
49
+ @@templates["black"] = {:color=>[0,0,0,255]}
50
+ @@templates["half-white"] = {:color=>[255,255,255,128]}
51
+
52
+ #===スライドをテンプレート文字列から作成する
53
+ #スライドを所定の名称で生成する。利用できるのは以下の7種類
54
+ #"320x240" 大きさは320x240ピクセル、背景は白色
55
+ #"640x480" 大きさは640x480ピクセル、背景は白色(デフォルトのテンプレート)
56
+ #"800x600" 大きさは800x600ピクセル、背景は白色
57
+ #"white" "640x480"と同一
58
+ #"gray" 大きさは640x480ピクセル、背景は灰色([128,128,128,255])
59
+ #"black" 大きさは640x480ピクセル、背景は黒色([0,0,0,255])
60
+ #"half-white" 背景が半分透明な"white"([255,255,255,128])
61
+ #_sym_:: テンプレートに対応した文字列
62
+ #返却値:: 生成したスライド(Partsクラスインスタンス)
63
+ def Slide.[](sym = "640x480")
64
+ return Slide.create(@@templates[sym])
65
+ end
66
+
67
+ #===スライドのテンプレートを追加する
68
+ #指定できるテンプレートの内容は、Sprite.newメソッドの引数がそのまま使える(Hashクラスインスタンスとして渡す)
69
+ #また、追加として、:colorパラメータを使って塗りつぶす色を指定することが出来る。
70
+ #(例):color=>Color[:red]
71
+ #_sym_:: テンプレート名
72
+ #_params_:: 生成時のパラメータ
73
+ def Slide.[]=(sym, params)
74
+ @@templates[sym] = params
75
+ end
76
+
77
+ #===スライド情報を初期化する
78
+ #(例)init_slide(Slide.create(:size=>Size.new(320,240), :color=>[255,0,0]))
79
+ #(例)init_slide(Slide["640x480"]))
80
+ #_template_:: 元となるPartsクラスインスタンス(Slide.createメソッドで作成もしくはSlide.[]で取得できるテンプレートスライド)
81
+ def init_slide(template)
82
+ init_layout
83
+ @body = template
84
+ set_layout_size(*(@body.size))
85
+ @body.snap(self)
86
+ end
87
+
88
+ def piece
89
+ return self
90
+ end
91
+
92
+ private :piece
93
+
94
+ #===名前に対応したパーツを取得する
95
+ #_title_:: 取得したいパーツに対応したシンボル
96
+ #返却値:: シンボルに対応したパーツ
97
+ def [](title)
98
+ return @body[title]
99
+ end
100
+
101
+ #===パーツに名前を割り付けて設定する
102
+ #_title_:: 取得したいパーツに対応したシンボル
103
+ #_objs_:: (1)シンボルに対応させるパーツ(スライドにスナップする)
104
+ #(2)パーツと、スナップさせるパーツの名前(シンボル)
105
+ #返却値:: 自分自身を返す
106
+ def []=(title, objs)
107
+ @body[title] = objs
108
+ return self
109
+ end
110
+
111
+ #===スライドを画面に描画する
112
+ #単純にslide_renderメソッドを呼び出し、結果を返すだけのテンプレートメソッド
113
+ #このメソッドを記述し直すことにより、柔軟なrenderを行える
114
+ #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
115
+ #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
116
+ #返却値:: 自分自身を返す
117
+ def render(&block)
118
+ return slide_render(&block)
119
+ end
120
+
121
+ #===スライドを画像に描画する
122
+ #単純にslide_render_toメソッドを呼び出し、結果を返すだけのテンプレートメソッド
123
+ #このメソッドを記述し直すことにより、柔軟なrenderを行える
124
+ #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
125
+ #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
126
+ #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
127
+ #返却値:: 自分自身を返す
128
+ def render_to(dst, &block)
129
+ return slide_render_to(dst, &block)
130
+ end
131
+
132
+ #===スライドを画面に描画する
133
+ #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
134
+ #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
135
+ #返却値:: 自分自身を返す
136
+ def slide_render(&block)
137
+ @body.render(&block)
138
+ return self
139
+ end
140
+
141
+ #===スライドを画像に描画する
142
+ #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
143
+ #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
144
+ #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
145
+ #返却値:: 自分自身を返す
146
+ def slide_render_to(dst, &block)
147
+ @body.render(dst, &block)
148
+ return self
149
+ end
150
+
151
+ #===@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する
152
+ def dispose
153
+ end
154
+
155
+ def_delegators(:@body, :remove, :each, :start, :stop, :reset, :update, :update_animation)
156
+ end
157
+ end
@@ -0,0 +1,171 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ #=コンテンツ作成ライブラリMiyako2.0
4
+ #
5
+ #Authors:: サイロス誠
6
+ #Version:: 2.0.0
7
+ #Copyright:: 2007-2009 Cyross Makoto
8
+ #License:: LGPL2.1
9
+ #
10
+ =begin
11
+ Miyako v2.0
12
+ Copyright (C) 2007-2008 Cyross Makoto
13
+
14
+ This library is free software; you can redistribute it and/or
15
+ modify it under the terms of the GNU Lesser General Public
16
+ License as published by the Free Software Foundation; either
17
+ version 2.1 of the License, or (at your option) any later version.
18
+
19
+ This library is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ Lesser General Public License for more details.
23
+
24
+ You should have received a copy of the GNU Lesser General Public
25
+ License along with this library; if not, write to the Free Software
26
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
+ =end
28
+
29
+ if RUBY_VERSION < '1.9.1'
30
+ puts 'Sorry. Miyako needs Ruby 1.9.1 or above...'
31
+ exit
32
+ end
33
+
34
+ require 'sdl'
35
+
36
+ if SDL::VERSION < '2.0'
37
+ puts 'Sorry. Miyako needs Ruby/SDL 2.0.0 or above...'
38
+ exit
39
+ end
40
+
41
+ require 'forwardable'
42
+ require 'iconv' if RUBY_VERSION < '1.9.0'
43
+ require 'kconv'
44
+ require 'rbconfig'
45
+
46
+ #デバッグモードの設定。デバッグモードにするときはtrueを渡す。デフォルトはfalse
47
+ $miyako_debug_mode ||= false
48
+
49
+ #openGLを使う? openGLを使用するときはtrueを設定する。デフォルトはfalse
50
+ $miyako_use_opengl ||= false
51
+
52
+ #サウンド機能を使わないときは、miyako.rbをロードする前に
53
+ #$not_use_audio変数にtrueを割り当てる
54
+ $not_use_audio ||= false
55
+ if $not_use_audio
56
+ SDL.init(SDL::INIT_VIDEO | SDL::INIT_JOYSTICK)
57
+ else
58
+ SDL.init(SDL::INIT_VIDEO | SDL::INIT_AUDIO | SDL::INIT_JOYSTICK)
59
+ end
60
+
61
+ Thread.abort_on_exception = true
62
+
63
+ #==Miyako基幹モジュール
64
+ module Miyako
65
+
66
+ #===アプリケーション実行中に演奏する音楽のサンプリングレートを指定する
67
+ #単位はHz(周波数)
68
+ #規定値は44100
69
+ #音声ファイルを扱うときは、すべての音声ファイルを同じサンプリングレートに統一する必要がある
70
+ $sampling_seq ||= 44100
71
+
72
+ #サウンド機能を使うときのバッファサイズを設定する(バイト単位)
73
+ #デフォルトは4096バイト
74
+ $sound_buffer_size ||= 4096
75
+
76
+ SDL::TTF.init
77
+ SDL::Mixer.open($sampling_seq, SDL::Mixer::DEFAULT_FORMAT, 2, $sound_buffer_size) unless $not_use_audio
78
+
79
+ #===Miyakoのバージョン番号を出力する
80
+ #返却値:: バージョン番号を示す文字列
81
+ def Miyako::version
82
+ return "2.0.0"
83
+ end
84
+
85
+ #==Miyakoの例外クラス
86
+ class MiyakoError < Exception
87
+ end
88
+
89
+ osn = Config::CONFIG["target_os"].downcase
90
+ @@osName = "other"
91
+ case osn
92
+ when /mswin|mingw|cygwin|bccwin/
93
+ @@osName = "win"
94
+ when /linux/
95
+ @@osName = "linux"
96
+ when /darwin/
97
+ @@osName = "mac_osx"
98
+ end
99
+
100
+ #===実行しているOSの名前を取得する
101
+ #(Windows 9x/Me/Xp/Vista, Cygwin/MinGW) : "win"
102
+ #(Linux) : "linux"
103
+ #(Mac OS X) : "mac_osx"
104
+ #(other) : "other"
105
+ #返却値:: OS名
106
+ def Miyako::getOSName
107
+ return @@osName
108
+ end
109
+
110
+ #===ウィンドウのタイトルを設定する
111
+ #_title_:: 設定する文字列
112
+ def Miyako::setTitle(title)
113
+ str = title
114
+ case @@osName
115
+ when "win"
116
+ str = title.to_s().encode(Encoding::SJIS)
117
+ when "mac_osx"
118
+ str = title.to_s().encode(Encoding::UTF_8)
119
+ when "linux"
120
+ str = title.to_s().encode(Encoding::EUCJP)
121
+ end
122
+ SDL::WM.setCaption(str, "")
123
+ end
124
+ end
125
+
126
+ require 'Miyako/API/utility'
127
+ require 'Miyako/API/yuki'
128
+ require 'Miyako/API/basic_data'
129
+ require 'Miyako/API/modules'
130
+ require 'Miyako/API/font'
131
+ require 'Miyako/API/viewport'
132
+ require 'Miyako/API/layout'
133
+ require 'Miyako/API/bitmap'
134
+ require 'Miyako/API/drawing'
135
+ require 'Miyako/API/spriteunit'
136
+ require 'Miyako/API/sprite_animation'
137
+ require 'Miyako/API/sprite'
138
+ require 'Miyako/API/collision'
139
+ require 'Miyako/API/screen'
140
+ require 'Miyako/API/shape'
141
+ require 'Miyako/API/plane'
142
+ require 'Miyako/API/input'
143
+ require 'Miyako/API/audio'
144
+ require 'Miyako/API/movie'
145
+ require 'Miyako/API/parts'
146
+ require 'Miyako/API/choices'
147
+ require 'Miyako/API/textbox'
148
+ require 'Miyako/API/map'
149
+ require 'Miyako/API/fixedmap'
150
+ require 'Miyako/API/map_event'
151
+ require 'Miyako/API/story'
152
+ require 'Miyako/API/diagram'
153
+
154
+ module Miyako
155
+ #===Miyakoのメインループ
156
+ #ブロックを受け取り、そのブロックを評価する
157
+ #ブロック評価前に<i>Input::update</i>と<i>Screen::clear</i>、評価後に<i>Screen::render</i>を呼び出す
158
+ #
159
+ #ブロックを渡さないと例外が発生する
160
+ def Miyako.main_loop
161
+ raise MiyakoError, "Miyako.main_loop needs brock!" unless block_given?
162
+ loop do
163
+ Input::update
164
+ Screen::clear
165
+ yield
166
+ Screen::render
167
+ end
168
+ end
169
+ end
170
+
171
+ require 'Miyako/miyako_no_katana'