cyross-ruby-miyako 2.0.5.1 → 2.1.0

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 (91) hide show
  1. data/README +1092 -929
  2. data/Rakefile +7 -7
  3. data/defines.h +144 -144
  4. data/extern.h +29 -29
  5. data/install_miyako.rb +87 -87
  6. data/lib/Miyako/API/audio.rb +572 -198
  7. data/lib/Miyako/API/basic_data.rb +825 -573
  8. data/lib/Miyako/API/bitmap.rb +534 -507
  9. data/lib/Miyako/API/choices.rb +481 -475
  10. data/lib/Miyako/API/collision.rb +486 -460
  11. data/lib/Miyako/API/diagram.rb +586 -561
  12. data/lib/Miyako/API/drawing.rb +151 -151
  13. data/lib/Miyako/API/exceptions.rb +105 -0
  14. data/lib/Miyako/API/fixedmap.rb +462 -428
  15. data/lib/Miyako/API/font.rb +430 -403
  16. data/lib/Miyako/API/input.rb +456 -447
  17. data/lib/Miyako/API/layout.rb +636 -433
  18. data/lib/Miyako/API/map.rb +583 -529
  19. data/lib/Miyako/API/map_event.rb +222 -198
  20. data/lib/Miyako/API/modules.rb +357 -109
  21. data/lib/Miyako/API/movie.rb +166 -154
  22. data/lib/Miyako/API/parts.rb +276 -189
  23. data/lib/Miyako/API/plane.rb +205 -166
  24. data/lib/Miyako/API/screen.rb +341 -325
  25. data/lib/Miyako/API/shape.rb +443 -443
  26. data/lib/Miyako/API/sprite.rb +771 -752
  27. data/lib/Miyako/API/sprite_animation.rb +490 -481
  28. data/lib/Miyako/API/sprite_list.rb +1135 -0
  29. data/lib/Miyako/API/spriteunit.rb +168 -147
  30. data/lib/Miyako/API/story.rb +350 -300
  31. data/lib/Miyako/API/textbox.rb +770 -725
  32. data/lib/Miyako/API/utility.rb +419 -388
  33. data/lib/Miyako/API/viewport.rb +189 -139
  34. data/lib/Miyako/API/yuki.rb +1226 -996
  35. data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
  36. data/lib/Miyako/EXT/raster_scroll.rb +138 -138
  37. data/lib/Miyako/EXT/slides.rb +157 -157
  38. data/lib/Miyako/miyako.rb +201 -171
  39. data/lib/Miyako/miyako_require_only.rb +35 -0
  40. data/miyako_basicdata.c +590 -590
  41. data/miyako_bitmap.c +1225 -1225
  42. data/miyako_collision.c +403 -403
  43. data/miyako_drawing.c +187 -187
  44. data/miyako_font.c +334 -334
  45. data/miyako_hsv.c +830 -830
  46. data/miyako_input_audio.c +254 -0
  47. data/miyako_layout.c +191 -191
  48. data/miyako_no_katana.c +1078 -1074
  49. data/miyako_sprite2.c +431 -0
  50. data/miyako_transform.c +438 -438
  51. data/miyako_utility.c +288 -288
  52. data/sample/Animation1/m1ku.rb +68 -68
  53. data/sample/Animation2/lex.rb +96 -96
  54. data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
  55. data/sample/Room3/blue.rb +297 -297
  56. data/sample/Room3/ending.rb +180 -180
  57. data/sample/Room3/green.rb +220 -220
  58. data/sample/Room3/main.rb +119 -119
  59. data/sample/Room3/main_component.rb +59 -59
  60. data/sample/Room3/red.rb +227 -227
  61. data/sample/Room3/room3.rb +25 -27
  62. data/sample/Room3/title.rb +184 -184
  63. data/sample/ball_action_sample.rb +204 -204
  64. data/sample/blit_rop.rb +70 -70
  65. data/sample/cairo_sample.rb +25 -25
  66. data/sample/circle_collision_test.rb +66 -66
  67. data/sample/collision_test.rb +33 -33
  68. data/sample/collision_test2.rb +108 -108
  69. data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
  70. data/sample/fixed_map_test/readme.txt +72 -72
  71. data/sample/map_test/chara.rb +58 -58
  72. data/sample/map_test/main_parts.rb +69 -69
  73. data/sample/map_test/main_scene.rb +153 -153
  74. data/sample/map_test/map_manager.rb +75 -75
  75. data/sample/map_test/map_test.rb +23 -23
  76. data/sample/map_test/oasis.rb +71 -71
  77. data/sample/map_test/readme.txt +89 -89
  78. data/sample/map_test/route.rb +157 -157
  79. data/sample/map_test/town.rb +74 -74
  80. data/sample/polygon_test.rb +35 -35
  81. data/sample/rasterscroll.rb +24 -24
  82. data/sample/takahashi.rb +42 -42
  83. data/sample/textbox_sample.rb +189 -189
  84. data/sample/transform.rb +54 -54
  85. data/sample/utility_test.rb +73 -73
  86. data/sample/utility_test2.rb +61 -61
  87. data/sample/utility_test3.rb +64 -64
  88. data/sample/utility_test4.rb +73 -73
  89. data/uninstall_miyako.rb +19 -19
  90. data/win/miyako_no_katana.so +0 -0
  91. metadata +7 -2
@@ -1,140 +1,140 @@
1
- #encoding: UTF-8
2
- # FixedMap Sample
3
- # 2009.4.12 Cyross Makoto
4
-
5
- require 'Miyako/miyako'
6
-
7
- include Miyako
8
-
9
- Screen::fps_view = true
10
-
11
- # Monster Class
12
- class Monster
13
- extend Forwardable
14
-
15
- def initialize(map, name, size, wait, pattern, x, y)
16
- @spr = Sprite.new({:filename => name, :type => :color_key})
17
- @spr.ow = size
18
- @spr.oh = size
19
- @coll = Collision.new(Rect.new(0, 0, @spr.ow, @spr.oh))
20
- @cpos = Point.new(x, y)
21
- ap = { }
22
- ap[:sprite] = @spr
23
- ap[:wait] = wait
24
- ap[:pattern_list] = pattern
25
- @anim = SpriteAnimation.new(ap)
26
- @anim.snap(map)
27
- @anim.left.top.move(x, y)
28
- end
29
-
30
- def start
31
- @anim.start
32
- end
33
-
34
- def update(map, events, param)
35
- @anim.update_animation
36
- end
37
-
38
- def render
39
- @anim.render
40
- end
41
-
42
- def finish
43
- end
44
-
45
- def dispose
46
- @anim.dispose
47
- @spr.dispose
48
- end
49
-
50
- def_delegators(:@anim, :start, :stop)
51
- end
52
-
53
- class Slime < Monster
54
- def initialize(map, x, y)
55
- super(map, "monster.png", 32, 0.5, [0, 1, 2, 3, 2, 1], x, y)
56
- @interval = 2
57
- @interval_x = 0
58
- @interval_y = 0
59
- @cnt = 0
60
- @wait0 = WaitCounter.new(0.1)
61
- @wait = WaitCounter.new(0.4)
62
- @types = 5
63
- # 方向による移動量リスト
64
- @ary = [[ 0, @spr.oh, 0, @interval, @spr.oh],
65
- [ @spr.ow, 0, @interval, 0, @spr.ow],
66
- [-@spr.ow, 0, -@interval, 0, @spr.ow],
67
- [ 0,-@spr.oh, 0,-@interval, @spr.oh]]
68
- end
69
-
70
- def update(map, events, param)
71
- super
72
- return if @wait.waiting? || @wait0.waiting?
73
- if @cnt > 0
74
- @anim.move(@interval_x, @interval_y)
75
- @cpos.move(@interval_x, @interval_y)
76
- @cnt -= @interval
77
- @wait0.start
78
- return
79
- end
80
- val = rand(@types)
81
- if val == 0
82
- @interval_x = 0
83
- @interval_y = 0
84
- @wait.start
85
- else
86
- data = @ary[val-1]
87
- # スライムが当たっているマップ位置リストを取得
88
- colls = Utility.product_position(
89
- @cpos.dup.move(data[0], data[1]), @coll.rect, map.mapchips[0].chip_size.to_a
90
- )
91
- # 障害物に当たってない?
92
- if colls.inject(true){|r, pos| r &= map[0].can_access?(0, :in, @cpos, data[0], data[1]) }
93
- @interval_x, @interval_y = data[2..3]
94
- @cnt = data[4]
95
- end
96
- end
97
- end
98
- end
99
-
100
- class SlimeEvent
101
- include MapEvent
102
-
103
- def init(map, x, y)
104
- @slime = Slime.new(map, x, y)
105
- end
106
-
107
- def update(map, events, param)
108
- @slime.update(map, events, param)
109
- end
110
-
111
- def final
112
- @slime.finish
113
- end
114
-
115
- def dispose
116
- @slime.dispose
117
- end
118
-
119
- def render
120
- @slime.render
121
- end
122
- end
123
-
124
- em = MapEventManager.new
125
- em.add(1, SlimeEvent)
126
-
127
- # main
128
- mp = MapChipFactory.load("./mapchip.csv")
129
- @fmap = FixedMap.new(mp, "./map.csv", em)
130
-
131
- Miyako.main_loop do
132
- break if Input.quit_or_escape?
133
- dx, dy = Input.trigger_amount.map{|v| v * 4 }
134
- dx = 0 unless Utility.in_bounds?([@fmap.rect.x,@fmap.rect.x+@fmap.rect.w-1], [0,Screen.w-1], dx)
135
- dy = 0 unless Utility.in_bounds?([@fmap.rect.y,@fmap.rect.y+@fmap.rect.h-1], [0,Screen.h-1], dy)
136
- @fmap.move(dx, dy)
137
- @fmap.events.each{|ee| ee.each{|e| e.update(@fmap, @fmap.events, nil)}}
138
- @fmap.render_to(Screen)
139
- @fmap.events.each{|ee| ee.each{|e| e.render}}
140
- end
1
+ #encoding: UTF-8
2
+ # FixedMap Sample
3
+ # 2009.4.12 Cyross Makoto
4
+
5
+ require 'Miyako/miyako'
6
+
7
+ include Miyako
8
+
9
+ Screen::fps_view = true
10
+
11
+ # Monster Class
12
+ class Monster
13
+ extend Forwardable
14
+
15
+ def initialize(map, name, size, wait, pattern, x, y)
16
+ @spr = Sprite.new({:filename => name, :type => :color_key})
17
+ @spr.ow = size
18
+ @spr.oh = size
19
+ @coll = Collision.new(Rect.new(0, 0, @spr.ow, @spr.oh))
20
+ @cpos = Point.new(x, y)
21
+ ap = { }
22
+ ap[:sprite] = @spr
23
+ ap[:wait] = wait
24
+ ap[:pattern_list] = pattern
25
+ @anim = SpriteAnimation.new(ap)
26
+ @anim.snap(map)
27
+ @anim.left!.top!.move!(x, y)
28
+ end
29
+
30
+ def start
31
+ @anim.start
32
+ end
33
+
34
+ def update(map, events, param)
35
+ @anim.update_animation
36
+ end
37
+
38
+ def render
39
+ @anim.render
40
+ end
41
+
42
+ def finish
43
+ end
44
+
45
+ def dispose
46
+ @anim.dispose
47
+ @spr.dispose
48
+ end
49
+
50
+ def_delegators(:@anim, :start, :stop)
51
+ end
52
+
53
+ class Slime < Monster
54
+ def initialize(map, x, y)
55
+ super(map, "monster.png", 32, 0.5, [0, 1, 2, 3, 2, 1], x, y)
56
+ @interval = 2
57
+ @interval_x = 0
58
+ @interval_y = 0
59
+ @cnt = 0
60
+ @wait0 = WaitCounter.new(0.1)
61
+ @wait = WaitCounter.new(0.4)
62
+ @types = 5
63
+ # 方向による移動量リスト
64
+ @ary = [[ 0, @spr.oh, 0, @interval, @spr.oh],
65
+ [ @spr.ow, 0, @interval, 0, @spr.ow],
66
+ [-@spr.ow, 0, -@interval, 0, @spr.ow],
67
+ [ 0,-@spr.oh, 0,-@interval, @spr.oh]]
68
+ end
69
+
70
+ def update(map, events, param)
71
+ super
72
+ return if @wait.waiting? || @wait0.waiting?
73
+ if @cnt > 0
74
+ @anim.move!(@interval_x, @interval_y)
75
+ @cpos.move!(@interval_x, @interval_y)
76
+ @cnt -= @interval
77
+ @wait0.start
78
+ return
79
+ end
80
+ val = rand(@types)
81
+ if val == 0
82
+ @interval_x = 0
83
+ @interval_y = 0
84
+ @wait.start
85
+ else
86
+ data = @ary[val-1]
87
+ # スライムが当たっているマップ位置リストを取得
88
+ colls = Utility.product_position(
89
+ @cpos.dup.move!(data[0], data[1]), @coll.rect, map.mapchips[0].chip_size.to_a
90
+ )
91
+ # 障害物に当たってない?
92
+ if colls.inject(true){|r, pos| r &= map[0].can_access?(0, :in, @cpos, data[0], data[1]) }
93
+ @interval_x, @interval_y = data[2..3]
94
+ @cnt = data[4]
95
+ end
96
+ end
97
+ end
98
+ end
99
+
100
+ class SlimeEvent
101
+ include MapEvent
102
+
103
+ def init(map, x, y)
104
+ @slime = Slime.new(map, x, y)
105
+ end
106
+
107
+ def update(map, events, param)
108
+ @slime.update(map, events, param)
109
+ end
110
+
111
+ def final
112
+ @slime.finish
113
+ end
114
+
115
+ def dispose
116
+ @slime.dispose
117
+ end
118
+
119
+ def render
120
+ @slime.render
121
+ end
122
+ end
123
+
124
+ em = MapEventManager.new
125
+ em.add(1, SlimeEvent)
126
+
127
+ # main
128
+ mp = MapChipFactory.load("./mapchip.csv")
129
+ @fmap = FixedMap.new(mp, "./map.csv", em)
130
+
131
+ Miyako.main_loop do
132
+ break if Input.quit_or_escape?
133
+ dx, dy = Input.trigger_amount.map{|v| v * 4 }
134
+ dx = 0 unless Utility.in_bounds?([@fmap.rect.x,@fmap.rect.x+@fmap.rect.w-1], [0,Screen.w-1], dx)
135
+ dy = 0 unless Utility.in_bounds?([@fmap.rect.y,@fmap.rect.y+@fmap.rect.h-1], [0,Screen.h-1], dy)
136
+ @fmap.move!(dx, dy)
137
+ @fmap.events.each{|ee| ee.each{|e| e.update(@fmap, @fmap.events, nil)}}
138
+ @fmap.render_to(Screen)
139
+ @fmap.events.each{|ee| ee.each{|e| e.render}}
140
+ end
@@ -1,72 +1,72 @@
1
- *******************************************************************************
2
- 【 作者名 】 サイロス誠
3
- 【 ソフト名 】 Miyako v2.0サンプル(固定マップ)
4
- 【 バージョン 】 2.0
5
- 【 作成日 】 2009/04/12
6
- 【 種別 】 フリーウェア
7
- 【 開発言語 】 Ruby 1.8.9-p0
8
- 【 ランタイム 】 Miyako v2.0
9
- 【 対応機種 】 Windows 2000/XP/Vista、Linux
10
- 【 再配布 】 修正BSDライセンスによる
11
- 【 転載 】 修正BSDライセンスによる
12
- 【ホームページ】 http://www.twin.ne.jp/~cyross/Miyako/
13
- 【 連絡先 】 cyross@po.twin.ne.jp
14
- *******************************************************************************
15
-
16
- ・概要
17
-
18
-  このプログラムは、Miyako v2.0以降に対応する、Miyakoサンプルプログラムです。
19
-  スクロールしないマップ上で、スライムがうねくねしながら動き回っています。
20
-
21
- ・Miyakoについて
22
-
23
-  Miyakoに関しては、以下のURLを参考にしてください。
24
- http://www.twin.ne.jp/~cyross/Miyako/
25
-
26
-  Miyako(Ruby、Ruby/SDL含む)のインストールに関しましては、
27
- 上記URLを辿って得られるアーカイブされたMiyakoライブラリを
28
- 展開すると、readme.txtが得られますので、そちらをご参照下さい。
29
-
30
-  本サンプルでは、MiyakoがWindows上で動作することを前提にしています。
31
- (インストールしたRuby実行環境がActiveRubyであることも前提に
32
-  しています)
33
-
34
- ・起動方法
35
-
36
-  エクスプローラーを開き、本サンプルのフォルダ内で、「m1ku.rb」を
37
- ダブルクリックします。
38
-  もしくは、コマンドライン上で動かす場合は、本サンプルのディレクトリに
39
- 移動して、以下のコマンドを入力します。
40
-
41
-  ruby fixed_map_sample.rb
42
-
43
- ・免責事項
44
-
45
-  本サンプルは無保証です。もし本サンプルを使用することによる不具合・トラブル
46
- が起こったとしても、いかなるトラブルに対する責任を負わないことをご了承下さい。
47
-
48
-  本サンプルは、修正BSDライセンスに基づいた転載・再配布を許可します。
49
-
50
- ・BSDライセンス文
51
-
52
- Copyright (c) 2009, Cyross Makoto
53
-
54
- All rights reserved.
55
-
56
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
57
-
58
- ・Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
59
- ・Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
60
- ・Neither the name of the Cyross Makoto nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
61
-
62
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
63
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
64
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
65
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
66
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
67
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
68
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
69
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
70
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
71
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
72
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1
+ *******************************************************************************
2
+ 【 作者名 】 サイロス誠
3
+ 【 ソフト名 】 Miyako v2.0サンプル(固定マップ)
4
+ 【 バージョン 】 2.0
5
+ 【 作成日 】 2009/04/12
6
+ 【 種別 】 フリーウェア
7
+ 【 開発言語 】 Ruby 1.8.9-p0
8
+ 【 ランタイム 】 Miyako v2.0
9
+ 【 対応機種 】 Windows 2000/XP/Vista、Linux
10
+ 【 再配布 】 修正BSDライセンスによる
11
+ 【 転載 】 修正BSDライセンスによる
12
+ 【ホームページ】 http://www.twin.ne.jp/~cyross/Miyako/
13
+ 【 連絡先 】 cyross@po.twin.ne.jp
14
+ *******************************************************************************
15
+
16
+ ・概要
17
+
18
+  このプログラムは、Miyako v2.0以降に対応する、Miyakoサンプルプログラムです。
19
+  スクロールしないマップ上で、スライムがうねくねしながら動き回っています。
20
+
21
+ ・Miyakoについて
22
+
23
+  Miyakoに関しては、以下のURLを参考にしてください。
24
+ http://www.twin.ne.jp/~cyross/Miyako/
25
+
26
+  Miyako(Ruby、Ruby/SDL含む)のインストールに関しましては、
27
+ 上記URLを辿って得られるアーカイブされたMiyakoライブラリを
28
+ 展開すると、readme.txtが得られますので、そちらをご参照下さい。
29
+
30
+  本サンプルでは、MiyakoがWindows上で動作することを前提にしています。
31
+ (インストールしたRuby実行環境がActiveRubyであることも前提に
32
+  しています)
33
+
34
+ ・起動方法
35
+
36
+  エクスプローラーを開き、本サンプルのフォルダ内で、「m1ku.rb」を
37
+ ダブルクリックします。
38
+  もしくは、コマンドライン上で動かす場合は、本サンプルのディレクトリに
39
+ 移動して、以下のコマンドを入力します。
40
+
41
+  ruby fixed_map_sample.rb
42
+
43
+ ・免責事項
44
+
45
+  本サンプルは無保証です。もし本サンプルを使用することによる不具合・トラブル
46
+ が起こったとしても、いかなるトラブルに対する責任を負わないことをご了承下さい。
47
+
48
+  本サンプルは、修正BSDライセンスに基づいた転載・再配布を許可します。
49
+
50
+ ・BSDライセンス文
51
+
52
+ Copyright (c) 2009, Cyross Makoto
53
+
54
+ All rights reserved.
55
+
56
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
57
+
58
+ ・Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
59
+ ・Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
60
+ ・Neither the name of the Cyross Makoto nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
61
+
62
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
63
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
64
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
65
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
66
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
67
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
68
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
69
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
70
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
71
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
72
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,58 +1,58 @@
1
- # -*- encoding: utf-8 -*-
2
- #キャラクタ管理クラス
3
- class PChara # Player Character
4
- extend Forwardable
5
- attr_accessor :dir
6
- attr_reader :collision, :position
7
- @@dir2dir = {[0,1]=>0,[-1,0]=>1,[1,0]=>2,[0,-1]=>3}
8
- @@dir2dir.default = -1
9
-
10
- def initialize(fname, pw = 0.2)
11
- # キャラクタスプライトを作成
12
- @spr = Sprite.new({:filename => fname, :type => :color_key})
13
- @spr.ow = 32
14
- @spr.oh = 32
15
- param = Hash.new
16
- param[:sprite] = @spr
17
- param[:wait] = pw
18
- # コリジョン設定
19
- @collision = Collision.new(@spr.rect)
20
- # キャラクタ位置設定
21
- @position = Point.new(0, 0)
22
- # キャラパターンを表示
23
- @anim = SpriteAnimation.new(param)
24
- @anim.centering
25
- @dir = :down
26
- end
27
-
28
- # マップの表示座標と実座標とのマージンを設定
29
- def margin
30
- return Size.new(-@spr.x, -@spr.y)
31
- end
32
-
33
- def turn(d)
34
- @anim.character = @@dir2dir[d]
35
- end
36
-
37
- def start
38
- @anim.start
39
- end
40
-
41
- def stop
42
- @anim.stop
43
- end
44
-
45
- def update
46
- @anim.update_animation
47
- end
48
-
49
- def render
50
- @anim.render
51
- end
52
-
53
- def size
54
- return Size.new(@spr.ow, @spr.oh)
55
- end
56
-
57
- def_delegators(:@spr, :dispose, :rect, :ow, :oh, :x, :y)
58
- end
1
+ # -*- encoding: utf-8 -*-
2
+ #キャラクタ管理クラス
3
+ class PChara # Player Character
4
+ extend Forwardable
5
+ attr_accessor :dir
6
+ attr_reader :collision, :position
7
+ @@dir2dir = {[0,1]=>0,[-1,0]=>1,[1,0]=>2,[0,-1]=>3}
8
+ @@dir2dir.default = -1
9
+
10
+ def initialize(fname, pw = 0.2)
11
+ # キャラクタスプライトを作成
12
+ @spr = Sprite.new({:filename => fname, :type => :color_key})
13
+ @spr.ow = 32
14
+ @spr.oh = 32
15
+ param = Hash.new
16
+ param[:sprite] = @spr
17
+ param[:wait] = pw
18
+ # コリジョン設定
19
+ @collision = Collision.new(@spr.rect)
20
+ # キャラクタ位置設定
21
+ @position = Point.new(0, 0)
22
+ # キャラパターンを表示
23
+ @anim = SpriteAnimation.new(param)
24
+ @anim.centering!
25
+ @dir = :down
26
+ end
27
+
28
+ # マップの表示座標と実座標とのマージンを設定
29
+ def margin
30
+ return Size.new(-@spr.x, -@spr.y)
31
+ end
32
+
33
+ def turn(d)
34
+ @anim.character = @@dir2dir[d]
35
+ end
36
+
37
+ def start
38
+ @anim.start
39
+ end
40
+
41
+ def stop
42
+ @anim.stop
43
+ end
44
+
45
+ def update
46
+ @anim.update_animation
47
+ end
48
+
49
+ def render
50
+ @anim.render
51
+ end
52
+
53
+ def size
54
+ return Size.new(@spr.ow, @spr.oh)
55
+ end
56
+
57
+ def_delegators(:@spr, :dispose, :rect, :ow, :oh, :x, :y)
58
+ end