ruby_armor 0.0.3alpha → 0.0.4alpha
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/bin/ruby_armor +5 -1
- data/config/default_config.yml +5 -0
- data/lib/ruby_armor/base_user_data.rb +38 -0
- data/lib/ruby_armor/states/choose_profile.rb +51 -18
- data/lib/ruby_armor/states/play.rb +84 -44
- data/lib/ruby_armor/version.rb +1 -1
- data/lib/ruby_armor/warrior_config.rb +24 -0
- data/lib/ruby_armor.rb +1 -2
- data/media/images/mobs.png +0 -0
- data/media/images/warriors.png +0 -0
- metadata +28 -13
- data/media/images/characters.png +0 -0
data/bin/ruby_armor
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module RubyArmor
|
2
|
+
class BaseUserData
|
3
|
+
#include Log
|
4
|
+
|
5
|
+
def initialize(user_file, default_file)
|
6
|
+
@user_file = user_file
|
7
|
+
|
8
|
+
@data = if File.exists?(@user_file)
|
9
|
+
begin
|
10
|
+
YAML.load_file @user_file
|
11
|
+
rescue Psych::SyntaxError #log.warn { "Failed to load #{@user_file}; cleared settings" }
|
12
|
+
|
13
|
+
{}
|
14
|
+
end
|
15
|
+
else
|
16
|
+
{}
|
17
|
+
end
|
18
|
+
|
19
|
+
@data = YAML.load_file(default_file).deep_merge @data
|
20
|
+
|
21
|
+
#log.info { "Read and merged user data:\n#{@data}" }
|
22
|
+
|
23
|
+
save
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def data; @data; end
|
28
|
+
|
29
|
+
protected
|
30
|
+
def save
|
31
|
+
FileUtils.mkdir_p File.dirname(@user_file)
|
32
|
+
|
33
|
+
File.open(@user_file, "w") {|f| YAML.dump(@data, f) }
|
34
|
+
|
35
|
+
#log.info { "Saved #{File.basename(@user_file)}" }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,11 +1,15 @@
|
|
1
1
|
module RubyArmor
|
2
2
|
class ChooseProfile < Fidgit::GuiState
|
3
|
+
DEFAULT_WARRIOR_CLASS = :valkyrie
|
4
|
+
|
3
5
|
def setup
|
4
6
|
super
|
5
7
|
|
6
8
|
# Create the game.
|
7
9
|
@game = RubyWarrior::Game.new
|
8
10
|
|
11
|
+
warrior_sprites = SpriteSheet.new "warriors.png", Play::SPRITE_WIDTH, Play::SPRITE_HEIGHT, 4
|
12
|
+
|
9
13
|
vertical align_h: :center, spacing: 50 do
|
10
14
|
label "RubyArmor", align: :center, font_height: 120, padding_top: 50
|
11
15
|
|
@@ -13,44 +17,73 @@ module RubyArmor
|
|
13
17
|
|
14
18
|
# Use existing profile.
|
15
19
|
vertical padding: 0, align_h: :center do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
scroll_window height: 200, width: 460 do
|
21
|
+
@game.profiles.each do |profile|
|
22
|
+
config = WarriorConfig.new profile
|
23
|
+
|
24
|
+
title = "#{profile.warrior_name.ljust(20)} #{profile.tower.name.rjust(12)}:#{profile.level_number} #{profile.score.to_s.rjust(5)}"
|
25
|
+
tip = "Play as #{profile.warrior_name} the #{config.warrior_class.capitalize} - #{profile.tower.name} - level #{profile.level_number} - score #{profile.score}"
|
26
|
+
|
27
|
+
# Can be disabled because of a bug in RubyWarrior paths.
|
28
|
+
button title, button_options.merge(tip: tip, enabled: File.directory?(profile.tower_path),
|
29
|
+
icon: warrior_sprites[0, Play::WARRIORS[config.warrior_class]], icon_options: { factor: 2 }) do
|
30
|
+
play profile, config
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
25
35
|
|
26
36
|
# Option to create a new profile.
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
37
|
+
vertical padding: 0, align: :center do
|
38
|
+
horizontal align: :center, padding: 0 do
|
39
|
+
@new_name = text_area width: 300, height: 35, font_height: 24 do |_, text|
|
40
|
+
duplicate = @game.profiles.any? {|p| p.warrior_name.downcase == text.downcase }
|
41
|
+
@new_profile_button.enabled = !(text.empty? or duplicate)
|
42
|
+
end
|
43
|
+
|
44
|
+
@new_profile_button = button "New", button_options.merge(width: 90, tip: "Create a new profile") do
|
45
|
+
play *new_profile(@new_name.text)
|
46
|
+
end
|
47
|
+
|
48
|
+
new_name = File.basename File.expand_path("~")
|
49
|
+
new_name = "Player" if new_name.empty?
|
50
|
+
@new_name.text = new_name
|
31
51
|
end
|
32
52
|
|
33
|
-
|
34
|
-
|
53
|
+
# Choose class; just cosmetic.
|
54
|
+
@warrior_class = group align_h: :center do
|
55
|
+
horizontal padding: 0, align_h: :center do
|
56
|
+
Play::WARRIORS.each do |warrior, row|
|
57
|
+
radio_button "", warrior, tip: "Play as a #{warrior.capitalize} (The difference between classes is purely cosmetic!)",
|
58
|
+
:icon => warrior_sprites[0, row], :icon_options => { :factor => 4 }
|
59
|
+
end
|
60
|
+
end
|
35
61
|
end
|
36
62
|
|
37
|
-
|
38
|
-
new_name = "Player" if new_name.empty?
|
39
|
-
@new_name.text = new_name
|
63
|
+
@warrior_class.value = DEFAULT_WARRIOR_CLASS
|
40
64
|
end
|
41
65
|
end
|
42
66
|
end
|
43
67
|
|
44
|
-
def
|
68
|
+
def finalize
|
69
|
+
super
|
70
|
+
container.clear
|
71
|
+
end
|
72
|
+
|
73
|
+
def play(profile, config)
|
45
74
|
@game.instance_variable_set :@profile, profile
|
46
|
-
push_game_state Play.new(@game)
|
75
|
+
push_game_state Play.new(@game, config)
|
47
76
|
end
|
48
77
|
|
49
78
|
def new_profile(name)
|
50
79
|
new_profile = RubyWarrior::Profile.new
|
51
80
|
new_profile.tower_path = @game.towers[0].path
|
52
81
|
new_profile.warrior_name = name
|
53
|
-
|
82
|
+
|
83
|
+
config = WarriorConfig.new new_profile
|
84
|
+
config.warrior_class = @warrior_class.value
|
85
|
+
|
86
|
+
[new_profile, config]
|
54
87
|
end
|
55
88
|
end
|
56
89
|
end
|
@@ -7,6 +7,22 @@ module RubyArmor
|
|
7
7
|
SPRITE_OFFSET_X, SPRITE_OFFSET_Y = 64, 64
|
8
8
|
SPRITE_SCALE = 5
|
9
9
|
|
10
|
+
# Sprites to show based on player facing.
|
11
|
+
FACINGS = {
|
12
|
+
:east => 0,
|
13
|
+
:south => 1,
|
14
|
+
:west => 2,
|
15
|
+
:north => 3,
|
16
|
+
}
|
17
|
+
|
18
|
+
# Rows in the warriors.png to use for each warrior type.
|
19
|
+
WARRIORS = {
|
20
|
+
:valkyrie => 0,
|
21
|
+
:mercenary => 1,
|
22
|
+
:monk => 2,
|
23
|
+
:burglar => 3,
|
24
|
+
}
|
25
|
+
|
10
26
|
ENEMY_TYPES = [
|
11
27
|
RubyWarrior::Units::Wizard,
|
12
28
|
RubyWarrior::Units::ThickSludge,
|
@@ -23,8 +39,8 @@ module RubyArmor
|
|
23
39
|
|
24
40
|
trait :timer
|
25
41
|
|
26
|
-
def initialize(game)
|
27
|
-
@game = game
|
42
|
+
def initialize(game, config)
|
43
|
+
@game, @config = game, config
|
28
44
|
super()
|
29
45
|
end
|
30
46
|
|
@@ -34,9 +50,12 @@ module RubyArmor
|
|
34
50
|
RubyWarrior::UI.proxy = self
|
35
51
|
|
36
52
|
@tiles = SpriteSheet.new "tiles.png", TILE_WIDTH, TILE_HEIGHT, 8
|
37
|
-
@
|
53
|
+
@warrior_sprites = SpriteSheet.new "warriors.png", SPRITE_WIDTH, SPRITE_HEIGHT, 4
|
54
|
+
@mob_sprites = SpriteSheet.new "mobs.png", SPRITE_WIDTH, SPRITE_HEIGHT, 4
|
38
55
|
@max_turns = 100 # Just to recognise a stalemate ;)
|
39
56
|
|
57
|
+
on_input(:escape) { pop_game_state }
|
58
|
+
|
40
59
|
vertical spacing: 0, padding: 10 do
|
41
60
|
horizontal padding: 0, height: $window.height * 0.5, width: 780 do
|
42
61
|
# Space for the game graphics.
|
@@ -44,26 +63,32 @@ module RubyArmor
|
|
44
63
|
|
45
64
|
vertical padding: 0, height: $window.height * 0.5, width: 100 do
|
46
65
|
# Labels at top-right.
|
47
|
-
@tower_label = label ""
|
48
|
-
@level_label = label "Level:"
|
49
|
-
@turn_label = label "Turn:"
|
50
|
-
@health_label = label "Health:"
|
66
|
+
@tower_label = label "", tip: "Each tower has a different difficulty level"
|
67
|
+
@level_label = label "Level:", tip: "Each tower contains 9 levels"
|
68
|
+
@turn_label = label "Turn:", tip: "Current turn; starvation at #{@max_turns} to avoid endless games"
|
69
|
+
@health_label = label "Health:", tip: "The warrior's remaining health; death occurs at 0"
|
51
70
|
|
52
71
|
# Buttons underneath them.
|
53
|
-
button_options = {
|
54
|
-
|
72
|
+
button_options = {
|
73
|
+
:width => 70,
|
74
|
+
:justify => :center,
|
75
|
+
shortcut: :auto,
|
76
|
+
shortcut_color: Color.rgb(150, 255, 0),
|
77
|
+
border_thickness: 0,
|
78
|
+
}
|
79
|
+
@start_button = button "Start", button_options.merge(tip: "Start running player.rb in this level") do
|
55
80
|
start_level
|
56
81
|
end
|
57
82
|
|
58
|
-
@reset_button = button "Reset", button_options do
|
83
|
+
@reset_button = button "Reset", button_options.merge(tip: "Restart the level") do
|
59
84
|
prepare_level
|
60
85
|
end
|
61
86
|
|
62
|
-
@hint_button = button "Hint", button_options do
|
87
|
+
@hint_button = button "Hint", button_options.merge(tip: "Get hint on how best to approach the level") do
|
63
88
|
message replace_syntax(level.tip)
|
64
89
|
end
|
65
90
|
|
66
|
-
@continue_button = button "Continue", button_options do
|
91
|
+
@continue_button = button "Continue", button_options.merge(tip: "Climb up the stairs to the next level") do
|
67
92
|
@game.prepare_next_level
|
68
93
|
prepare_level
|
69
94
|
end
|
@@ -71,11 +96,13 @@ module RubyArmor
|
|
71
96
|
# Choose turn-duration with a slider.
|
72
97
|
horizontal padding: 0, spacing: 0 do
|
73
98
|
@turn_duration_label = label "", font_height: 12
|
74
|
-
@turn_duration_slider = slider width: 55, range: 0..1000,
|
75
|
-
|
99
|
+
@turn_duration_slider = slider width: 55, range: 0..1000,
|
100
|
+
tip: "Turn duration (ms)" do |_, value|
|
101
|
+
@config.turn_delay = value * 0.001
|
76
102
|
@turn_duration_label.text = "%4dms" % value.to_s
|
77
103
|
end
|
78
|
-
|
104
|
+
|
105
|
+
@turn_duration_slider.value = (@config.turn_delay * 1000).round
|
79
106
|
end
|
80
107
|
end
|
81
108
|
end
|
@@ -94,7 +121,7 @@ module RubyArmor
|
|
94
121
|
# Default editor for Windows.
|
95
122
|
ENV['EDITOR'] = "notepad" if Gem.win_platform? and ENV['EDITOR'].nil?
|
96
123
|
|
97
|
-
tip = ENV['EDITOR'] ? "Edit file in #{ ENV['EDITOR']
|
124
|
+
tip = ENV['EDITOR'] ? "Edit file in #{ENV['EDITOR']} (set ENV['EDITOR'] to use a different editor)" : "ENV['EDITOR'] not set"
|
98
125
|
button "edit", tip: tip, enabled: ENV['EDITOR'], font_height: 12, border_thickness: 0 do
|
99
126
|
command = %<"#{ENV['EDITOR']}" "#{File.join(level.player_path, @tabs_group.value)}">
|
100
127
|
$stdout.puts "SYSTEM: #{command}"
|
@@ -159,22 +186,30 @@ module RubyArmor
|
|
159
186
|
|
160
187
|
# Continually poll the player code file to see when it is edited.
|
161
188
|
stop_timer :refresh_code
|
162
|
-
|
189
|
+
friendly_line_endings = false
|
163
190
|
every(100, :name => :refresh_code) do
|
164
191
|
begin
|
165
192
|
player_file = File.join level.player_path, "player.rb"
|
166
193
|
player_code = File.read player_file
|
167
|
-
|
194
|
+
stripped_code = player_code.strip
|
195
|
+
@loaded_code ||= ""
|
196
|
+
unless @loaded_code == stripped_code
|
197
|
+
$stdout.puts "Detected change in player.rb"
|
198
|
+
|
168
199
|
# Rewrite file as Windows text file if it is the default (a unix file).
|
169
|
-
|
170
|
-
|
200
|
+
# If the file loaded in binary == the code loaded as text, then the file
|
201
|
+
# must have Unix endings (\n => same as a text file in memory) rather than
|
202
|
+
# Windows endings (\r\n => different than text file in memory).
|
203
|
+
if !friendly_line_endings and Gem.win_platform? and
|
204
|
+
(File.open(player_file, "rb", &:read).strip == stripped_code)
|
171
205
|
|
172
206
|
File.open(player_file, "w") {|f| f.puts player_code }
|
173
207
|
$stdout.puts "Converted to Windows line endings: #{player_file}"
|
174
208
|
end
|
175
|
-
|
209
|
+
friendly_line_endings = true # Either will have or don't need to.
|
176
210
|
|
177
|
-
@code_display.text =
|
211
|
+
@code_display.text = stripped_code
|
212
|
+
@loaded_code = stripped_code
|
178
213
|
prepare_level
|
179
214
|
end
|
180
215
|
rescue Errno::ENOENT
|
@@ -182,7 +217,7 @@ module RubyArmor
|
|
182
217
|
end
|
183
218
|
end
|
184
219
|
|
185
|
-
@
|
220
|
+
@level = profile.current_level # Need to store this because it gets forgotten by the profile/game :(
|
186
221
|
@turn = 0
|
187
222
|
@playing = false
|
188
223
|
level.load_level
|
@@ -217,7 +252,7 @@ module RubyArmor
|
|
217
252
|
@reset_button.enabled = true
|
218
253
|
@start_button.enabled = false
|
219
254
|
@playing = true
|
220
|
-
@take_next_turn_at = Time.now + @
|
255
|
+
@take_next_turn_at = Time.now + @config.turn_delay
|
221
256
|
refresh_labels
|
222
257
|
end
|
223
258
|
|
@@ -240,17 +275,18 @@ module RubyArmor
|
|
240
275
|
@warrior_pattern ||= /([@G])/ # Player and golem
|
241
276
|
|
242
277
|
# Used in log.
|
243
|
-
string.gsub(
|
244
|
-
|
245
|
-
.gsub
|
246
|
-
.gsub
|
278
|
+
string.gsub(/\|.*\|/i) {|c|
|
279
|
+
c = c.gsub @enemy_pattern, '<c=ff0000>\1</c>'
|
280
|
+
c.gsub! @friend_pattern, '<c=00dd00>\1</c>'
|
281
|
+
c.gsub! @warrior_pattern, '<c=aaaaff>\1</c>'
|
282
|
+
c.gsub '|', '<c=777777>|</c>'
|
247
283
|
}
|
248
284
|
.gsub(/^(#{profile.warrior_name}.*)/, '<c=aaaaff>\1</c>') # Player doing stuff.
|
249
|
-
.gsub(/(\-{3,}
|
285
|
+
.gsub(/(\-{3,})/, '<c=777777>\1</c>') # Walls.
|
250
286
|
end
|
251
287
|
|
252
288
|
def profile; @game.profile; end
|
253
|
-
def level; @
|
289
|
+
def level; @level; end
|
254
290
|
def floor; level.floor; end
|
255
291
|
|
256
292
|
def play_turn
|
@@ -268,7 +304,7 @@ module RubyArmor
|
|
268
304
|
@turn += 1
|
269
305
|
level.time_bonus -= 1 if level.time_bonus > 0
|
270
306
|
|
271
|
-
@take_next_turn_at = Time.now + @
|
307
|
+
@take_next_turn_at = Time.now + @config.turn_delay
|
272
308
|
|
273
309
|
refresh_labels
|
274
310
|
|
@@ -297,11 +333,15 @@ module RubyArmor
|
|
297
333
|
self.puts
|
298
334
|
self.puts exception.backtrace.join("\n")
|
299
335
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
code_lines
|
304
|
-
|
336
|
+
# TODO: Make this work without it raising exceptions in Fidgit :(
|
337
|
+
#exception.message =~ /:(\d+):/
|
338
|
+
#exception_line = $1.to_i - 1
|
339
|
+
#code_lines = @code_display.text.split "\n"
|
340
|
+
#code_lines[exception_line] = "<c=ff0000>{code_lines[exception_line]}</c>"
|
341
|
+
#@code_display.text = code_lines.join "\n"
|
342
|
+
|
343
|
+
@start_button.enabled = false
|
344
|
+
|
305
345
|
@exception = exception
|
306
346
|
end
|
307
347
|
|
@@ -354,19 +394,19 @@ module RubyArmor
|
|
354
394
|
floor.units.each do |unit|
|
355
395
|
sprite = case unit
|
356
396
|
when RubyWarrior::Units::Warrior
|
357
|
-
@
|
397
|
+
@warrior_sprites[FACINGS[unit.position.direction], WARRIORS[@config.warrior_class]]
|
358
398
|
when RubyWarrior::Units::Wizard
|
359
|
-
@
|
399
|
+
@mob_sprites[0, 1]
|
360
400
|
when RubyWarrior::Units::ThickSludge
|
361
|
-
@
|
401
|
+
@mob_sprites[2, 1]
|
362
402
|
when RubyWarrior::Units::Sludge
|
363
|
-
@
|
403
|
+
@mob_sprites[1, 1]
|
364
404
|
when RubyWarrior::Units::Archer
|
365
|
-
@
|
405
|
+
@mob_sprites[3, 1]
|
366
406
|
when RubyWarrior::Units::Captive
|
367
|
-
@
|
407
|
+
@mob_sprites[0, 2]
|
368
408
|
when RubyWarrior::Units::Golem
|
369
|
-
@
|
409
|
+
@mob_sprites[1, 2]
|
370
410
|
else
|
371
411
|
raise "unknown unit: #{unit.class}"
|
372
412
|
end
|
@@ -374,7 +414,7 @@ module RubyArmor
|
|
374
414
|
sprite.draw unit.position.x * SPRITE_WIDTH, unit.position.y * SPRITE_HEIGHT, unit.position.y
|
375
415
|
|
376
416
|
if unit.bound?
|
377
|
-
@
|
417
|
+
@mob_sprites[2, 2].draw unit.position.x * SPRITE_WIDTH, unit.position.y * SPRITE_HEIGHT, unit.position.y
|
378
418
|
end
|
379
419
|
end
|
380
420
|
end
|
data/lib/ruby_armor/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative "base_user_data"
|
2
|
+
|
3
|
+
module RubyArmor
|
4
|
+
class WarriorConfig < BaseUserData
|
5
|
+
DEFAULT_CONFIG = File.expand_path "../../../config/default_config.yml", __FILE__
|
6
|
+
CONFIG_FILE = "ruby_armour.yml"
|
7
|
+
|
8
|
+
def initialize(profile)
|
9
|
+
super File.join(profile.player_path, CONFIG_FILE), DEFAULT_CONFIG
|
10
|
+
end
|
11
|
+
|
12
|
+
def turn_delay; data[:turn_delay]; end
|
13
|
+
def turn_delay=(delay)
|
14
|
+
data[:turn_delay] = delay
|
15
|
+
save
|
16
|
+
end
|
17
|
+
|
18
|
+
def warrior_class; data[:warrior_class]; end
|
19
|
+
def warrior_class=(warrior_class)
|
20
|
+
data[:warrior_class] = warrior_class
|
21
|
+
save
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/ruby_armor.rb
CHANGED
@@ -21,6 +21,7 @@ require "ruby_armor/sprite_sheet"
|
|
21
21
|
require "ruby_armor/states/choose_profile"
|
22
22
|
require "ruby_armor/states/play"
|
23
23
|
require "ruby_armor/window"
|
24
|
+
require "ruby_armor/warrior_config"
|
24
25
|
|
25
26
|
ROOT_PATH = File.expand_path('../../', __FILE__)
|
26
27
|
|
@@ -33,5 +34,3 @@ Font.autoload_dirs.unshift File.join(media_dir, 'fonts')
|
|
33
34
|
|
34
35
|
Fidgit::Element.schema.merge_schema! YAML.load(File.read(File.expand_path('config/gui/schema.yml', ROOT_PATH)))
|
35
36
|
|
36
|
-
RubyArmor::Window.new.show
|
37
|
-
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_armor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4alpha
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubywarrior
|
16
|
-
requirement: &
|
16
|
+
requirement: &25413276 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.1.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *25413276
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: gosu
|
27
|
-
requirement: &
|
27
|
+
requirement: &25412196 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.7.41
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *25412196
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: chingu
|
38
|
-
requirement: &
|
38
|
+
requirement: &25411440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,18 +43,29 @@ dependencies:
|
|
43
43
|
version: 0.9rc7
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *25411440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: fidgit
|
49
|
-
requirement: &
|
49
|
+
requirement: &25409844 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.2.
|
54
|
+
version: 0.2.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *25409844
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: releasy
|
60
|
+
requirement: &25406592 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.2.2
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *25406592
|
58
69
|
description:
|
59
70
|
email:
|
60
71
|
- bil.bagpuss@gmail.com
|
@@ -63,7 +74,9 @@ executables:
|
|
63
74
|
extensions: []
|
64
75
|
extra_rdoc_files: []
|
65
76
|
files:
|
77
|
+
- config/default_config.yml
|
66
78
|
- config/gui/schema.yml
|
79
|
+
- lib/ruby_armor/base_user_data.rb
|
67
80
|
- lib/ruby_armor/floating_text.rb
|
68
81
|
- lib/ruby_armor/ruby_warrior_ext/abilities/rest.rb
|
69
82
|
- lib/ruby_armor/ruby_warrior_ext/position.rb
|
@@ -73,12 +86,14 @@ files:
|
|
73
86
|
- lib/ruby_armor/states/choose_profile.rb
|
74
87
|
- lib/ruby_armor/states/play.rb
|
75
88
|
- lib/ruby_armor/version.rb
|
89
|
+
- lib/ruby_armor/warrior_config.rb
|
76
90
|
- lib/ruby_armor/window.rb
|
77
91
|
- lib/ruby_armor.rb
|
78
92
|
- media/fonts/Licence.txt
|
79
93
|
- media/fonts/ProggyCleanSZ.ttf
|
80
|
-
- media/images/
|
94
|
+
- media/images/mobs.png
|
81
95
|
- media/images/tiles.png
|
96
|
+
- media/images/warriors.png
|
82
97
|
- README.md
|
83
98
|
- bin/ruby_armor
|
84
99
|
homepage: http://spooner.github.com/libraries/ruby_armor/
|
@@ -96,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
111
|
version: '0'
|
97
112
|
segments:
|
98
113
|
- 0
|
99
|
-
hash:
|
114
|
+
hash: -574849791
|
100
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
116
|
none: false
|
102
117
|
requirements:
|
data/media/images/characters.png
DELETED
Binary file
|