ruby_armor 0.0.3alpha → 0.0.4alpha

Sign up to get free protection for your applications and to get access to all the features.
data/bin/ruby_armor CHANGED
@@ -1,3 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "ruby_armor"
3
+ # For running from the gem, so path will already be set.
4
+
5
+ require "ruby_armor"
6
+
7
+ RubyArmor::Window.new.show unless defined? Ocra
@@ -0,0 +1,5 @@
1
+ ---
2
+
3
+ :description: This is the config file for RubyArmor and does not affect the game in any way if using RubyWarrior natively.
4
+ :turn_delay: 0.5 # seconds
5
+ :warrior_class: :valkyrie # :valkyrie, :mercenary, :monk, :burglar
@@ -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
- @game.profiles.each do |profile|
17
- title = "#{profile.warrior_name.ljust(20)} #{profile.tower.name.rjust(12)}:#{profile.level_number} #{profile.score.to_s.rjust(5)}"
18
- tip = "Play as #{profile.warrior_name} - #{profile.tower.name} - level #{profile.level_number} - score #{profile.score}"
19
- # Can be disabled because of a bug in RubyWarrior paths.
20
- button title, button_options.merge(tip: tip, enabled: File.directory?(profile.tower_path)) do
21
- play profile
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
- horizontal align: :center, padding: 0 do
28
- @new_name = text_area width: 300, max_height: 60, font_height: 24 do |_, text|
29
- duplicate = @game.profiles.any? {|p| p.warrior_name.downcase == text.downcase }
30
- @new_profile_button.enabled = !(text.empty? or duplicate)
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
- @new_profile_button = button "New", button_options.merge(width: 90, tip: "Create a new profile") do
34
- play new_profile(@new_name.text)
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
- new_name = File.basename File.expand_path("~")
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 play(profile)
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
- new_profile
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
- @sprites = SpriteSheet.new "characters.png", SPRITE_WIDTH, SPRITE_HEIGHT, 4
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 = { :width => 70, :justify => :center, shortcut: :auto, border_thickness: 0, }
54
- @start_button = button "Start", button_options do
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, tip: "Turn duration (ms)" do |_, value|
75
- @turn_duration = value * 0.001
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
- @turn_duration_slider.value = 500
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']}" : "ENV['EDITOR'] not set"
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
- converted_line_endings = false
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
- unless @code_display.stripped_text.strip == player_code.strip
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
- if !converted_line_endings and Gem.win_platform? and
170
- (File.open(player_file, "rb", &:read).strip == player_code.strip)
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
- converted_line_endings = true # Either will have or don't need to.
209
+ friendly_line_endings = true # Either will have or don't need to.
176
210
 
177
- @code_display.text = player_code
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
- @_level = profile.current_level
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 + @turn_duration
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(/\|(.*)\|/i) {|c|
244
- c.gsub(@enemy_pattern, '<c=ff0000>\1</c>')
245
- .gsub(@friend_pattern, '<c=00dd00>\1</c>')
246
- .gsub(@warrior_pattern, '<c=aaaaff>\1</c>')
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,}| \| )/, '<c=777777>\1</c>') # Walls.
285
+ .gsub(/(\-{3,})/, '<c=777777>\1</c>') # Walls.
250
286
  end
251
287
 
252
288
  def profile; @game.profile; end
253
- def level; @_level; end
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 + @turn_duration
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
- exception.message =~ /:(\d+):/
301
- exception_line = $1.to_i - 1
302
- code_lines = @code_display.text.split "\n"
303
- code_lines[exception_line] = "<c=ff0000>#{code_lines[exception_line]}</c>"
304
- @code_display.text = code_lines.join "\n"
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
- @sprites[0, 0]
397
+ @warrior_sprites[FACINGS[unit.position.direction], WARRIORS[@config.warrior_class]]
358
398
  when RubyWarrior::Units::Wizard
359
- @sprites[0, 1]
399
+ @mob_sprites[0, 1]
360
400
  when RubyWarrior::Units::ThickSludge
361
- @sprites[2, 1]
401
+ @mob_sprites[2, 1]
362
402
  when RubyWarrior::Units::Sludge
363
- @sprites[1, 1]
403
+ @mob_sprites[1, 1]
364
404
  when RubyWarrior::Units::Archer
365
- @sprites[3, 1]
405
+ @mob_sprites[3, 1]
366
406
  when RubyWarrior::Units::Captive
367
- @sprites[0, 2]
407
+ @mob_sprites[0, 2]
368
408
  when RubyWarrior::Units::Golem
369
- @sprites[1, 2]
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
- @sprites[2, 2].draw unit.position.x * SPRITE_WIDTH, unit.position.y * SPRITE_HEIGHT, unit.position.y
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
@@ -1,3 +1,3 @@
1
1
  module RubyArmor
2
- VERSION = "0.0.3alpha"
2
+ VERSION = "0.0.4alpha"
3
3
  end
@@ -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.3alpha
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-25 00:00:00.000000000 Z
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: &28574112 !ruby/object:Gem::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: *28574112
24
+ version_requirements: *25413276
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: gosu
27
- requirement: &28573560 !ruby/object:Gem::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: *28573560
35
+ version_requirements: *25412196
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: chingu
38
- requirement: &28573128 !ruby/object:Gem::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: *28573128
46
+ version_requirements: *25411440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fidgit
49
- requirement: &28572804 !ruby/object:Gem::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.1
54
+ version: 0.2.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *28572804
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/characters.png
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: 39949075
114
+ hash: -574849791
100
115
  required_rubygems_version: !ruby/object:Gem::Requirement
101
116
  none: false
102
117
  requirements:
Binary file