rdgc-dm 0.2.0 → 0.2.1
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.
- data/VERSION +1 -1
- data/lib/rdgc/map/area.rb +2 -0
- data/lib/rdgc/map/blind_area.rb +28 -6
- data/lib/rdgc/map/block.rb +7 -0
- data/lib/rdgc/map/board.rb +6 -0
- data/lib/rdgc/map/direction.rb +1 -1
- data/lib/rdgc/map/road.rb +1 -0
- data/lib/rdgc/map/room.rb +1 -0
- data/lib/rdgc/util/config.rb +23 -46
- data/lib/rdgc/util/random_util.rb +9 -3
- data/rdgc-dm.gemspec +4 -4
- data/spec/rdgc/map/08_blind_area_spec.rb +50 -45
- data/spec/rdgc/util/01_config_spec.rb +2 -9
- metadata +9 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/lib/rdgc/map/area.rb
CHANGED
data/lib/rdgc/map/blind_area.rb
CHANGED
@@ -11,6 +11,7 @@ module RDGC
|
|
11
11
|
def set_blind(level)
|
12
12
|
return unless [:none, :open, :blind, :dark].include?(level)
|
13
13
|
@blind_level = level
|
14
|
+
self
|
14
15
|
end
|
15
16
|
|
16
17
|
def blind_level_none?
|
@@ -51,6 +52,7 @@ module RDGC
|
|
51
52
|
@blind_mode = mode
|
52
53
|
@blind_mode ||= BLIND_MODE_NORMAL
|
53
54
|
init_blind
|
55
|
+
self
|
54
56
|
end
|
55
57
|
|
56
58
|
def blind_mode
|
@@ -76,10 +78,12 @@ module RDGC
|
|
76
78
|
blind_data[x][y] = target
|
77
79
|
end
|
78
80
|
end
|
81
|
+
|
82
|
+
self
|
79
83
|
end
|
80
84
|
|
81
85
|
def visible?(x, y)
|
82
|
-
return false
|
86
|
+
return false unless has_xy?(x, y)
|
83
87
|
return true unless blind_mode?
|
84
88
|
v = blind_data[x][y]
|
85
89
|
return false unless v
|
@@ -91,7 +95,7 @@ module RDGC
|
|
91
95
|
end
|
92
96
|
|
93
97
|
def dark?(x, y)
|
94
|
-
return false
|
98
|
+
return false unless has_xy?(x, y)
|
95
99
|
blind_data[x][y] == :dark ? true : false
|
96
100
|
end
|
97
101
|
|
@@ -112,11 +116,8 @@ module RDGC
|
|
112
116
|
blind_data[x][y] = :none
|
113
117
|
end
|
114
118
|
end
|
115
|
-
end
|
116
119
|
|
117
|
-
|
118
|
-
@blind_data ||= Hash.new{|hash, key| hash[key] = {}}
|
119
|
-
@blind_data
|
120
|
+
self
|
120
121
|
end
|
121
122
|
|
122
123
|
def init_blind
|
@@ -128,12 +129,16 @@ module RDGC
|
|
128
129
|
when BLIND_MODE_NORMAL
|
129
130
|
init_blind_normal
|
130
131
|
end
|
132
|
+
|
133
|
+
self
|
131
134
|
end
|
132
135
|
|
133
136
|
def init_blind_all(level)
|
134
137
|
areas.each do |r|
|
135
138
|
r.set_blind(level)
|
136
139
|
end
|
140
|
+
|
141
|
+
self
|
137
142
|
end
|
138
143
|
|
139
144
|
def init_blind_normal
|
@@ -144,10 +149,27 @@ module RDGC
|
|
144
149
|
roads.each do |r|
|
145
150
|
r.set_blind(:blind)
|
146
151
|
end
|
152
|
+
|
153
|
+
self
|
154
|
+
end
|
155
|
+
|
156
|
+
def blind_state(x, y)
|
157
|
+
return unless has_xy?(x, y)
|
158
|
+
blind_data[x][y]
|
159
|
+
end
|
160
|
+
|
161
|
+
def set_blind_state(x, y, state)
|
162
|
+
return unless has_xy?(x, y)
|
163
|
+
blind_data[x][y] = state
|
147
164
|
end
|
148
165
|
|
149
166
|
private
|
150
167
|
|
168
|
+
def blind_data
|
169
|
+
@blind_data ||= Hash.new{|hash, key| hash[key] = {}}
|
170
|
+
@blind_data
|
171
|
+
end
|
172
|
+
|
151
173
|
def fill_dark_before_cancel
|
152
174
|
areas.select{|r| r.blind_level_dark?}.each do |r|
|
153
175
|
r.each do |x, y|
|
data/lib/rdgc/map/block.rb
CHANGED
@@ -14,6 +14,8 @@ module RDGC
|
|
14
14
|
|
15
15
|
fill_room
|
16
16
|
fill_roads
|
17
|
+
|
18
|
+
self
|
17
19
|
end
|
18
20
|
|
19
21
|
def fill_room
|
@@ -21,6 +23,8 @@ module RDGC
|
|
21
23
|
room.each_tile do |x, y, t|
|
22
24
|
set_tile(x, y, t)
|
23
25
|
end
|
26
|
+
|
27
|
+
self
|
24
28
|
end
|
25
29
|
|
26
30
|
def fill_roads
|
@@ -30,6 +34,8 @@ module RDGC
|
|
30
34
|
set_tile(x, y, t)
|
31
35
|
end
|
32
36
|
end
|
37
|
+
|
38
|
+
self
|
33
39
|
end
|
34
40
|
|
35
41
|
def room
|
@@ -101,6 +107,7 @@ module RDGC
|
|
101
107
|
remove_room
|
102
108
|
remove_roads
|
103
109
|
remove_cross_point
|
110
|
+
self
|
104
111
|
end
|
105
112
|
|
106
113
|
def empty?
|
data/lib/rdgc/map/board.rb
CHANGED
@@ -19,6 +19,8 @@ module RDGC
|
|
19
19
|
|
20
20
|
set_coordinates
|
21
21
|
fill
|
22
|
+
|
23
|
+
self
|
22
24
|
end
|
23
25
|
|
24
26
|
def set_coordinates
|
@@ -27,6 +29,8 @@ module RDGC
|
|
27
29
|
self.bottom = blocks.map(&:bottom).max
|
28
30
|
self.left = blocks.map(&:left).min
|
29
31
|
self.right = blocks.map(&:right).max
|
32
|
+
|
33
|
+
self
|
30
34
|
end
|
31
35
|
|
32
36
|
def fill
|
@@ -44,6 +48,8 @@ module RDGC
|
|
44
48
|
set_tile(x, y, t)
|
45
49
|
end
|
46
50
|
end
|
51
|
+
|
52
|
+
self
|
47
53
|
end
|
48
54
|
|
49
55
|
def blocks
|
data/lib/rdgc/map/direction.rb
CHANGED
data/lib/rdgc/map/road.rb
CHANGED
data/lib/rdgc/map/room.rb
CHANGED
data/lib/rdgc/util/config.rb
CHANGED
@@ -4,68 +4,45 @@ module RDGC
|
|
4
4
|
class Config
|
5
5
|
|
6
6
|
DEFAULT_CONFIG = {
|
7
|
-
:min_room_size => 4
|
8
|
-
:act_max_count => 200
|
7
|
+
:min_room_size => 4
|
9
8
|
}
|
10
9
|
|
11
|
-
|
12
|
-
@config_hash = DEFAULT_CONFIG
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.set(hash)
|
16
|
-
return if seted?
|
10
|
+
class << self
|
17
11
|
|
18
|
-
|
19
|
-
|
20
|
-
default = @config_hash
|
21
|
-
end
|
12
|
+
def set(hash)
|
13
|
+
return if seted?
|
22
14
|
|
23
|
-
|
24
|
-
|
25
|
-
self.class.class_eval do
|
15
|
+
hash = DEFAULT_CONFIG.merge(hash)
|
26
16
|
@config_hash = hash
|
27
17
|
@seted = true
|
28
|
-
end
|
29
18
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
def self.min_room_size
|
34
|
-
self.get(:min_room_size)
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.min_block_size
|
38
|
-
# デフォルトのblock最小値 = 最小部屋サイズ+上下空き2+接線通路分1
|
39
|
-
self.min_room_size + 3
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.act_max_count
|
43
|
-
self.get(:act_max_count)
|
44
|
-
end
|
19
|
+
true
|
20
|
+
end
|
45
21
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
ret = @seted
|
22
|
+
def get(key)
|
23
|
+
@config_hash ||= DEFAULT_CONFIG
|
24
|
+
@config_hash[key]
|
50
25
|
end
|
51
|
-
ret
|
52
|
-
end
|
53
26
|
|
54
|
-
|
55
|
-
|
56
|
-
self.class.class_eval do
|
57
|
-
val = @config_hash[key]
|
27
|
+
def seted?
|
28
|
+
@seted ? true : false
|
58
29
|
end
|
59
|
-
val
|
60
|
-
end
|
61
30
|
|
62
|
-
|
63
|
-
self.class.class_eval do
|
31
|
+
def reset!
|
64
32
|
@config_hash = DEFAULT_CONFIG
|
65
33
|
@seted = false
|
34
|
+
true
|
35
|
+
end
|
36
|
+
|
37
|
+
def min_room_size
|
38
|
+
get(:min_room_size)
|
39
|
+
end
|
40
|
+
|
41
|
+
def min_block_size
|
42
|
+
# デフォルトのblock最小値 = 最小部屋サイズ+上下空き2+接線通路分1
|
43
|
+
min_room_size + 3
|
66
44
|
end
|
67
45
|
|
68
|
-
true
|
69
46
|
end
|
70
47
|
|
71
48
|
end
|
@@ -3,6 +3,8 @@ module RDGC
|
|
3
3
|
module Util
|
4
4
|
module RandomUtil
|
5
5
|
|
6
|
+
module_function
|
7
|
+
|
6
8
|
def bool_rand
|
7
9
|
case rand(2)
|
8
10
|
when 1
|
@@ -49,8 +51,6 @@ module RDGC
|
|
49
51
|
ret
|
50
52
|
end
|
51
53
|
|
52
|
-
module_function :bool_rand, :range_rand, :select_rand, :dice
|
53
|
-
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
@@ -101,4 +101,10 @@ class Array
|
|
101
101
|
ret
|
102
102
|
end
|
103
103
|
|
104
|
-
|
104
|
+
if RUBY_VERSION >= '1.9.1'
|
105
|
+
def choice
|
106
|
+
self.sample
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
data/rdgc-dm.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rdgc-dm}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["parrot_studio"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-22}
|
13
13
|
s.description = %q{ This gem is part of RDGC - Ruby(Random) Dungeon Game Core.
|
14
14
|
RDGC is core of random dungeon game (like rogue), make dungeon, manage monsters etc.
|
15
15
|
}
|
@@ -63,7 +63,7 @@ Gem::Specification.new do |s|
|
|
63
63
|
s.rdoc_options = ["--charset=UTF-8"]
|
64
64
|
s.require_paths = ["lib"]
|
65
65
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
66
|
-
s.rubygems_version = %q{1.3.
|
66
|
+
s.rubygems_version = %q{1.3.7}
|
67
67
|
s.summary = %q{Random Dungeon Maker from RDGC}
|
68
68
|
s.test_files = [
|
69
69
|
"spec/spec_helper.rb",
|
@@ -87,7 +87,7 @@ Gem::Specification.new do |s|
|
|
87
87
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
88
88
|
s.specification_version = 3
|
89
89
|
|
90
|
-
if Gem::Version.new(Gem::
|
90
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
91
91
|
else
|
92
92
|
end
|
93
93
|
else
|
@@ -175,13 +175,18 @@ describe "blind mode" do
|
|
175
175
|
@road2.blind_level_blind?.should be_true
|
176
176
|
end
|
177
177
|
|
178
|
+
it "#blind_state/#set_blind_state will get/set blind_state" do
|
179
|
+
@board.set_blind_state(10, 9, :blind)
|
180
|
+
@board.blind_state(10, 9).should == :blind
|
181
|
+
end
|
182
|
+
|
178
183
|
it "#fill_blind will fill blind_data as each area's blind_level" do
|
179
184
|
@board.set_blind_mode
|
180
185
|
@board.fill_blind
|
181
186
|
|
182
187
|
@board.areas.each do |r|
|
183
188
|
r.each do |x, y|
|
184
|
-
@board.
|
189
|
+
@board.blind_state(x, y).should == :blind
|
185
190
|
end
|
186
191
|
end
|
187
192
|
|
@@ -190,7 +195,7 @@ describe "blind mode" do
|
|
190
195
|
|
191
196
|
@board.areas.each do |r|
|
192
197
|
r.each do |x, y|
|
193
|
-
@board.
|
198
|
+
@board.blind_state(x, y).should == :none
|
194
199
|
end
|
195
200
|
end
|
196
201
|
end
|
@@ -204,7 +209,7 @@ describe "blind mode" do
|
|
204
209
|
@room.each.all?{|x, y| @board.dark?(x, y)}.should be_true
|
205
210
|
|
206
211
|
tx, ty = @room.random_point
|
207
|
-
@board.
|
212
|
+
@board.set_blind_state(tx, ty, :none)
|
208
213
|
@board.dark?(tx, ty).should be_false
|
209
214
|
end
|
210
215
|
|
@@ -216,7 +221,7 @@ describe "blind mode" do
|
|
216
221
|
|
217
222
|
5.times do
|
218
223
|
tx, ty = @room.random_point
|
219
|
-
@board.
|
224
|
+
@board.set_blind_state(tx, ty, :none)
|
220
225
|
end
|
221
226
|
@room.each.all?{|x, y| @board.dark?(x, y)}.should be_false
|
222
227
|
|
@@ -231,33 +236,33 @@ describe "blind mode" do
|
|
231
236
|
@board.fill_blind
|
232
237
|
|
233
238
|
@board.open_blind(10, 4, 0)
|
234
|
-
@board.
|
235
|
-
@board.
|
236
|
-
@board.
|
239
|
+
@board.blind_state(10, 4).should == :none
|
240
|
+
@board.blind_state(10, 3).should == :blind
|
241
|
+
@board.blind_state(10, 5).should == :blind
|
237
242
|
|
238
243
|
@board.open_blind(10, 4, 1)
|
239
|
-
@board.
|
240
|
-
@board.
|
241
|
-
@board.
|
242
|
-
@board.
|
243
|
-
@board.
|
244
|
+
@board.blind_state(10, 4).should == :none
|
245
|
+
@board.blind_state(10, 3).should == :none
|
246
|
+
@board.blind_state(10, 5).should == :none
|
247
|
+
@board.blind_state(10, 2).should == :blind
|
248
|
+
@board.blind_state(10, 6).should == :blind
|
244
249
|
|
245
250
|
@board.open_blind(10, 4, 2)
|
246
|
-
@board.
|
247
|
-
@board.
|
248
|
-
@board.
|
249
|
-
@board.
|
250
|
-
|
251
|
-
@board.
|
252
|
-
@board.
|
253
|
-
@board.
|
254
|
-
@board.
|
255
|
-
|
256
|
-
@board.
|
257
|
-
@board.
|
258
|
-
@board.
|
259
|
-
@board.
|
260
|
-
@board.
|
251
|
+
@board.blind_state(10, 4).should == :none
|
252
|
+
@board.blind_state(10, 3).should == :none
|
253
|
+
@board.blind_state(10, 2).should == :none
|
254
|
+
@board.blind_state(10, 1).should == :blind
|
255
|
+
|
256
|
+
@board.blind_state(10, 5).should == :none
|
257
|
+
@board.blind_state(9, 5).should == :none
|
258
|
+
@board.blind_state(10, 6).should == :none
|
259
|
+
@board.blind_state(11, 5).should == :none
|
260
|
+
|
261
|
+
@board.blind_state(8, 5).should == :blind
|
262
|
+
@board.blind_state(12, 5).should == :blind
|
263
|
+
@board.blind_state(9, 6).should == :blind
|
264
|
+
@board.blind_state(11, 6).should == :blind
|
265
|
+
@board.blind_state(10, 7).should == :blind
|
261
266
|
end
|
262
267
|
|
263
268
|
it "#open_blind will clear blind all of area for :open" do
|
@@ -265,13 +270,13 @@ describe "blind mode" do
|
|
265
270
|
@board.fill_blind
|
266
271
|
|
267
272
|
@board.open_blind(10, 4, 1)
|
268
|
-
@board.
|
269
|
-
@board.
|
270
|
-
@board.
|
271
|
-
@board.
|
273
|
+
@board.blind_state(10, 4).should == :none
|
274
|
+
@board.blind_state(10, 3).should == :none
|
275
|
+
@board.blind_state(10, 5).should == :none
|
276
|
+
@board.blind_state(10, 2).should == :blind
|
272
277
|
|
273
278
|
@room.each do |x, y|
|
274
|
-
@board.
|
279
|
+
@board.blind_state(x, y).should == :none
|
275
280
|
end
|
276
281
|
end
|
277
282
|
|
@@ -283,25 +288,25 @@ describe "blind mode" do
|
|
283
288
|
# 1歩目
|
284
289
|
@board.open_blind(10, 5, 1)
|
285
290
|
|
286
|
-
@board.
|
291
|
+
@board.blind_state(10, 4).should == :none
|
287
292
|
|
288
|
-
@board.
|
289
|
-
@board.
|
290
|
-
@board.
|
291
|
-
@board.
|
293
|
+
@board.blind_state(10, 5).should == :none
|
294
|
+
@board.blind_state(9, 5).should == :none
|
295
|
+
@board.blind_state(11, 5).should == :none
|
296
|
+
@board.blind_state(10, 6).should == :none
|
292
297
|
|
293
298
|
# 2歩目
|
294
299
|
@board.open_blind(10, 6, 1)
|
295
|
-
@board.
|
300
|
+
@board.blind_state(10, 4).should == :none
|
296
301
|
|
297
|
-
@board.
|
298
|
-
@board.
|
299
|
-
@board.
|
300
|
-
@board.
|
301
|
-
@board.
|
302
|
+
@board.blind_state(10, 6).should == :none
|
303
|
+
@board.blind_state(9, 6).should == :none
|
304
|
+
@board.blind_state(11, 6).should == :none
|
305
|
+
@board.blind_state(10, 5).should == :none
|
306
|
+
@board.blind_state(10, 7).should == :none
|
302
307
|
|
303
|
-
@board.
|
304
|
-
@board.
|
308
|
+
@board.blind_state(9, 5).should == :dark
|
309
|
+
@board.blind_state(11, 5).should == :dark
|
305
310
|
end
|
306
311
|
|
307
312
|
it "#visible?/#invisible?" do
|
@@ -8,35 +8,28 @@ describe RDGC::Util::Config do
|
|
8
8
|
it "default value" do
|
9
9
|
Util::Config.min_room_size.should == 4
|
10
10
|
Util::Config.min_block_size.should == 7
|
11
|
-
Util::Config.act_max_count.should == 200
|
12
11
|
end
|
13
12
|
|
14
13
|
it "value change only once, and #reset! will force change default value" do
|
15
14
|
val1 = {
|
16
|
-
:min_room_size => 5
|
17
|
-
:act_max_count => 100
|
15
|
+
:min_room_size => 5
|
18
16
|
}
|
19
17
|
|
20
18
|
Util::Config.set(val1).should be_true
|
21
19
|
Util::Config.min_room_size.should == 5
|
22
|
-
Util::Config.act_max_count.should == 100
|
23
20
|
|
24
21
|
val2 = {
|
25
|
-
:min_room_size => 10
|
26
|
-
:act_max_count => 80
|
22
|
+
:min_room_size => 10
|
27
23
|
}
|
28
24
|
|
29
25
|
Util::Config.set(val2).should be_false
|
30
26
|
Util::Config.min_room_size.should == 5
|
31
|
-
Util::Config.act_max_count.should == 100
|
32
27
|
|
33
28
|
Util::Config.reset!.should be_true
|
34
29
|
Util::Config.min_room_size.should == 4
|
35
|
-
Util::Config.act_max_count.should == 200
|
36
30
|
|
37
31
|
Util::Config.set(val2).should be_true
|
38
32
|
Util::Config.min_room_size.should == 10
|
39
|
-
Util::Config.act_max_count.should == 80
|
40
33
|
|
41
34
|
Util::Config.reset!.should be_true
|
42
35
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdgc-dm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- parrot_studio
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-09-22 00:00:00 +09:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
@@ -77,25 +78,29 @@ rdoc_options:
|
|
77
78
|
require_paths:
|
78
79
|
- lib
|
79
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
80
82
|
requirements:
|
81
83
|
- - ">="
|
82
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 57
|
83
86
|
segments:
|
84
87
|
- 1
|
85
88
|
- 8
|
86
89
|
- 7
|
87
90
|
version: 1.8.7
|
88
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
89
93
|
requirements:
|
90
94
|
- - ">="
|
91
95
|
- !ruby/object:Gem::Version
|
96
|
+
hash: 3
|
92
97
|
segments:
|
93
98
|
- 0
|
94
99
|
version: "0"
|
95
100
|
requirements: []
|
96
101
|
|
97
102
|
rubyforge_project:
|
98
|
-
rubygems_version: 1.3.
|
103
|
+
rubygems_version: 1.3.7
|
99
104
|
signing_key:
|
100
105
|
specification_version: 3
|
101
106
|
summary: Random Dungeon Maker from RDGC
|