cyross-ruby-miyako-mswin32 2.0.5.1.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 (76) hide show
  1. data/README +1089 -929
  2. data/install_miyako.rb +87 -61
  3. data/lib/Miyako/API/audio.rb +572 -198
  4. data/lib/Miyako/API/basic_data.rb +825 -573
  5. data/lib/Miyako/API/bitmap.rb +534 -507
  6. data/lib/Miyako/API/choices.rb +481 -475
  7. data/lib/Miyako/API/collision.rb +486 -460
  8. data/lib/Miyako/API/diagram.rb +586 -561
  9. data/lib/Miyako/API/drawing.rb +151 -151
  10. data/lib/Miyako/API/exceptions.rb +105 -0
  11. data/lib/Miyako/API/fixedmap.rb +462 -428
  12. data/lib/Miyako/API/font.rb +430 -403
  13. data/lib/Miyako/API/input.rb +456 -447
  14. data/lib/Miyako/API/layout.rb +636 -433
  15. data/lib/Miyako/API/map.rb +583 -529
  16. data/lib/Miyako/API/map_event.rb +222 -198
  17. data/lib/Miyako/API/modules.rb +305 -109
  18. data/lib/Miyako/API/movie.rb +166 -154
  19. data/lib/Miyako/API/parts.rb +276 -189
  20. data/lib/Miyako/API/plane.rb +205 -166
  21. data/lib/Miyako/API/screen.rb +341 -325
  22. data/lib/Miyako/API/shape.rb +443 -443
  23. data/lib/Miyako/API/sprite.rb +771 -752
  24. data/lib/Miyako/API/sprite_animation.rb +490 -481
  25. data/lib/Miyako/API/sprite_list.rb +884 -0
  26. data/lib/Miyako/API/spriteunit.rb +168 -147
  27. data/lib/Miyako/API/story.rb +350 -300
  28. data/lib/Miyako/API/textbox.rb +770 -725
  29. data/lib/Miyako/API/utility.rb +419 -388
  30. data/lib/Miyako/API/viewport.rb +189 -139
  31. data/lib/Miyako/API/yuki.rb +1226 -996
  32. data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
  33. data/lib/Miyako/EXT/raster_scroll.rb +138 -138
  34. data/lib/Miyako/EXT/slides.rb +157 -157
  35. data/lib/Miyako/miyako.rb +201 -171
  36. data/lib/Miyako/miyako_no_katana.so +0 -0
  37. data/lib/Miyako/miyako_require_only.rb +35 -0
  38. data/sample/Animation1/m1ku.rb +68 -68
  39. data/sample/Animation2/lex.rb +96 -96
  40. data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
  41. data/sample/Room3/blue.rb +297 -297
  42. data/sample/Room3/ending.rb +180 -180
  43. data/sample/Room3/green.rb +220 -220
  44. data/sample/Room3/main.rb +119 -119
  45. data/sample/Room3/main_component.rb +59 -59
  46. data/sample/Room3/red.rb +227 -227
  47. data/sample/Room3/room3.rb +25 -27
  48. data/sample/Room3/title.rb +184 -184
  49. data/sample/ball_action_sample.rb +205 -204
  50. data/sample/blit_rop.rb +70 -70
  51. data/sample/cairo_sample.rb +25 -25
  52. data/sample/circle_collision_test.rb +66 -62
  53. data/sample/collision_test.rb +33 -33
  54. data/sample/collision_test2.rb +108 -104
  55. data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
  56. data/sample/fixed_map_test/readme.txt +72 -72
  57. data/sample/map_test/chara.rb +58 -58
  58. data/sample/map_test/main_parts.rb +69 -69
  59. data/sample/map_test/main_scene.rb +153 -153
  60. data/sample/map_test/map_manager.rb +75 -75
  61. data/sample/map_test/map_test.rb +23 -23
  62. data/sample/map_test/oasis.rb +71 -71
  63. data/sample/map_test/readme.txt +89 -89
  64. data/sample/map_test/route.rb +157 -157
  65. data/sample/map_test/town.rb +74 -74
  66. data/sample/polygon_test.rb +35 -35
  67. data/sample/rasterscroll.rb +24 -24
  68. data/sample/takahashi.rb +42 -42
  69. data/sample/textbox_sample.rb +189 -189
  70. data/sample/transform.rb +54 -54
  71. data/sample/utility_test.rb +73 -73
  72. data/sample/utility_test2.rb +61 -61
  73. data/sample/utility_test3.rb +64 -64
  74. data/sample/utility_test4.rb +73 -73
  75. data/uninstall_miyako.rb +19 -19
  76. metadata +5 -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