smash_and_grab 0.0.5alpha → 0.0.6alpha

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 (67) hide show
  1. data/{CHANGELOG.txt → CHANGELOG.md} +0 -0
  2. data/Gemfile.lock +8 -4
  3. data/LICENSE.txt +20 -0
  4. data/README.md +30 -14
  5. data/Rakefile +2 -2
  6. data/config/lang/objects/entities/en.yml +134 -0
  7. data/config/lang/objects/static/en.yml +8 -0
  8. data/config/lang/objects/vehicles/en.yml +11 -0
  9. data/config/map/entities.yml +42 -38
  10. data/lib/smash_and_grab.rb +5 -0
  11. data/lib/smash_and_grab/abilities.rb +1 -1
  12. data/lib/smash_and_grab/abilities/ability.rb +45 -3
  13. data/lib/smash_and_grab/abilities/drop.rb +38 -0
  14. data/lib/smash_and_grab/abilities/melee.rb +4 -6
  15. data/lib/smash_and_grab/abilities/pick_up.rb +33 -0
  16. data/lib/smash_and_grab/abilities/ranged.rb +18 -12
  17. data/lib/smash_and_grab/abilities/sprint.rb +11 -7
  18. data/lib/smash_and_grab/chingu_ext/basic_game_object.rb +26 -0
  19. data/lib/smash_and_grab/game_window.rb +5 -1
  20. data/lib/smash_and_grab/gui/entity_panel.rb +26 -10
  21. data/lib/smash_and_grab/gui/entity_summary.rb +19 -11
  22. data/lib/smash_and_grab/gui/game_log.rb +6 -2
  23. data/lib/smash_and_grab/gui/info_panel.rb +7 -4
  24. data/lib/smash_and_grab/gui/object_panel.rb +6 -2
  25. data/lib/smash_and_grab/gui/scenario_panel.rb +4 -0
  26. data/lib/smash_and_grab/history/action_history.rb +1 -1
  27. data/lib/smash_and_grab/main.rb +7 -3
  28. data/lib/smash_and_grab/map/faction.rb +26 -8
  29. data/lib/smash_and_grab/map/map.rb +21 -12
  30. data/lib/smash_and_grab/map/tile.rb +29 -2
  31. data/lib/smash_and_grab/map/wall.rb +2 -2
  32. data/lib/smash_and_grab/mixins/has_contents.rb +38 -0
  33. data/lib/smash_and_grab/mixins/line_of_sight.rb +129 -0
  34. data/lib/smash_and_grab/mixins/pathfinding.rb +145 -0
  35. data/lib/smash_and_grab/mouse_selection.rb +107 -36
  36. data/lib/smash_and_grab/objects/entity.rb +311 -260
  37. data/lib/smash_and_grab/objects/floating_text.rb +0 -1
  38. data/lib/smash_and_grab/objects/static.rb +10 -3
  39. data/lib/smash_and_grab/objects/vehicle.rb +7 -2
  40. data/lib/smash_and_grab/objects/world_object.rb +10 -3
  41. data/lib/smash_and_grab/path.rb +38 -12
  42. data/lib/smash_and_grab/players/ai.rb +91 -0
  43. data/lib/smash_and_grab/players/human.rb +9 -0
  44. data/lib/smash_and_grab/players/player.rb +16 -65
  45. data/lib/smash_and_grab/players/remote.rb +9 -0
  46. data/lib/smash_and_grab/sprite_sheet.rb +9 -0
  47. data/lib/smash_and_grab/states/edit_level.rb +15 -4
  48. data/lib/smash_and_grab/states/main_menu.rb +16 -4
  49. data/lib/smash_and_grab/states/play_level.rb +88 -28
  50. data/lib/smash_and_grab/states/world.rb +17 -9
  51. data/lib/smash_and_grab/version.rb +1 -1
  52. data/lib/smash_and_grab/z_order.rb +6 -5
  53. data/media/images/path.png +0 -0
  54. data/media/images/tile_selection.png +0 -0
  55. data/media/images/tiles_selection.png +0 -0
  56. data/smash_and_grab.gemspec +2 -2
  57. data/tasks/create_portraits.rb +39 -0
  58. data/tasks/outline_images.rb +56 -0
  59. data/test/smash_and_grab/abilities/drop_test.rb +68 -0
  60. data/test/smash_and_grab/abilities/melee_test.rb +4 -4
  61. data/test/smash_and_grab/abilities/pick_up_test.rb +68 -0
  62. data/test/smash_and_grab/abilities/ranged_test.rb +105 -0
  63. data/test/smash_and_grab/abilities/sprint_test.rb +55 -25
  64. data/test/smash_and_grab/map/faction_test.rb +18 -16
  65. data/test/smash_and_grab/map/map_test.rb +9 -4
  66. metadata +51 -19
  67. data/lib/smash_and_grab/fidgit_ext/event.rb +0 -77
@@ -7,9 +7,10 @@ describe SmashAndGrab::Map do
7
7
  "class" => "entity",
8
8
  "type" => "professor_goggles",
9
9
  "id" => 0,
10
- "health" => 8,
10
+ "health" => 5,
11
+ "contents_id" => nil,
11
12
  "movement_points" => 7,
12
- "action_points" => 1,
13
+ "action_points" => 2,
13
14
  "facing" => "left",
14
15
  "tile" => [
15
16
  1,
@@ -62,7 +63,11 @@ describe SmashAndGrab::Map do
62
63
  }
63
64
  end
64
65
 
65
- subject { SmashAndGrab::Map.new map_data.symbolize }
66
+ helper :factions do
67
+ [SmashAndGrab::Factions::Faction.new] * 3
68
+ end
69
+
70
+ subject { SmashAndGrab::Map.new map_data.symbolize, factions, start: false }
66
71
 
67
72
  describe "#tile_at_grid" do
68
73
  should "find the correct tile" do
@@ -101,7 +106,7 @@ describe SmashAndGrab::Map do
101
106
  end
102
107
 
103
108
  describe "#save_data" do
104
- subject { SmashAndGrab::Map.new(map_data.symbolize).save_data }
109
+ subject { SmashAndGrab::Map.new(map_data.symbolize, factions, start: false).save_data }
105
110
 
106
111
  should "contain the same data as was loaded" do
107
112
  subject[:version].should.equal SmashAndGrab::VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smash_and_grab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5alpha
4
+ version: 0.0.6alpha
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-06 00:00:00.000000000 Z
12
+ date: 2012-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gosu
16
- requirement: &23823180 !ruby/object:Gem::Requirement
16
+ requirement: &30704208 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.7.41
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *23823180
24
+ version_requirements: *30704208
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: chingu
27
- requirement: &23821236 !ruby/object:Gem::Requirement
27
+ requirement: &30703932 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: 0.9rc7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *23821236
35
+ version_requirements: *30703932
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fidgit
38
- requirement: &23836032 !ruby/object:Gem::Requirement
38
+ requirement: &30703572 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.1.10
43
+ version: 0.2.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *23836032
46
+ version_requirements: *30703572
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: texplay
49
- requirement: &23834916 !ruby/object:Gem::Requirement
49
+ requirement: &30703236 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,21 @@ dependencies:
54
54
  version: '0.3'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *23834916
57
+ version_requirements: *30703236
58
+ - !ruby/object:Gem::Dependency
59
+ name: r18n-desktop
60
+ requirement: &30702960 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 0.4.14
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *30702960
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: releasy
60
- requirement: &23832384 !ruby/object:Gem::Requirement
71
+ requirement: &30702684 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: 0.2.2
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *23832384
79
+ version_requirements: *30702684
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rake
71
- requirement: &23830980 !ruby/object:Gem::Requirement
82
+ requirement: &30702408 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ~>
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: 0.9.2.2
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *23830980
90
+ version_requirements: *30702408
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: bacon-rr
82
- requirement: &23830260 !ruby/object:Gem::Requirement
93
+ requirement: &30702132 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ~>
@@ -87,7 +98,7 @@ dependencies:
87
98
  version: 0.1.0
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *23830260
101
+ version_requirements: *30702132
91
102
  description: ! 'Turn-based isometric heist game
92
103
 
93
104
  '
@@ -98,14 +109,18 @@ executables:
98
109
  extensions: []
99
110
  extra_rdoc_files: []
100
111
  files:
101
- - CHANGELOG.txt
112
+ - CHANGELOG.md
102
113
  - Gemfile
103
114
  - Gemfile.lock
115
+ - LICENSE.txt
104
116
  - README.md
105
117
  - Rakefile
106
118
  - bin/smash_and_grab
107
119
  - bin/smash_and_grab.rbw
108
120
  - config/gui/schema.yml
121
+ - config/lang/objects/entities/en.yml
122
+ - config/lang/objects/static/en.yml
123
+ - config/lang/objects/vehicles/en.yml
109
124
  - config/levels/01_bank.sgl
110
125
  - config/map/entities.yml
111
126
  - config/map/objects.yml
@@ -116,14 +131,16 @@ files:
116
131
  - lib/smash_and_grab/abilities.rb
117
132
  - lib/smash_and_grab/abilities/ability.rb
118
133
  - lib/smash_and_grab/abilities/area.rb
134
+ - lib/smash_and_grab/abilities/drop.rb
119
135
  - lib/smash_and_grab/abilities/melee.rb
120
136
  - lib/smash_and_grab/abilities/move.rb
137
+ - lib/smash_and_grab/abilities/pick_up.rb
121
138
  - lib/smash_and_grab/abilities/ranged.rb
122
139
  - lib/smash_and_grab/abilities/sprint.rb
140
+ - lib/smash_and_grab/chingu_ext/basic_game_object.rb
123
141
  - lib/smash_and_grab/fidgit_ext/container.rb
124
142
  - lib/smash_and_grab/fidgit_ext/cursor.rb
125
143
  - lib/smash_and_grab/fidgit_ext/element.rb
126
- - lib/smash_and_grab/fidgit_ext/event.rb
127
144
  - lib/smash_and_grab/game_window.rb
128
145
  - lib/smash_and_grab/gosu_ext/font.rb
129
146
  - lib/smash_and_grab/gui/editor_selector.rb
@@ -149,6 +166,9 @@ files:
149
166
  - lib/smash_and_grab/map/map.rb
150
167
  - lib/smash_and_grab/map/tile.rb
151
168
  - lib/smash_and_grab/map/wall.rb
169
+ - lib/smash_and_grab/mixins/has_contents.rb
170
+ - lib/smash_and_grab/mixins/line_of_sight.rb
171
+ - lib/smash_and_grab/mixins/pathfinding.rb
152
172
  - lib/smash_and_grab/mouse_selection.rb
153
173
  - lib/smash_and_grab/objects/entity.rb
154
174
  - lib/smash_and_grab/objects/floating_text.rb
@@ -156,7 +176,10 @@ files:
156
176
  - lib/smash_and_grab/objects/vehicle.rb
157
177
  - lib/smash_and_grab/objects/world_object.rb
158
178
  - lib/smash_and_grab/path.rb
179
+ - lib/smash_and_grab/players/ai.rb
180
+ - lib/smash_and_grab/players/human.rb
159
181
  - lib/smash_and_grab/players/player.rb
182
+ - lib/smash_and_grab/players/remote.rb
160
183
  - lib/smash_and_grab/sprite_sheet.rb
161
184
  - lib/smash_and_grab/states/edit_level.rb
162
185
  - lib/smash_and_grab/states/main_menu.rb
@@ -182,12 +205,18 @@ files:
182
205
  - media/images/objects.png
183
206
  - media/images/path.png
184
207
  - media/images/tile_selection.png
208
+ - media/images/tiles_selection.png
185
209
  - media/images/vehicles.png
186
210
  - media/images/walls.png
187
211
  - smash_and_grab.gemspec
212
+ - tasks/create_portraits.rb
213
+ - tasks/outline_images.rb
214
+ - test/smash_and_grab/abilities/drop_test.rb
188
215
  - test/smash_and_grab/abilities/helpers/ability_helper.rb
189
216
  - test/smash_and_grab/abilities/melee_test.rb
190
217
  - test/smash_and_grab/abilities/move_test.rb
218
+ - test/smash_and_grab/abilities/pick_up_test.rb
219
+ - test/smash_and_grab/abilities/ranged_test.rb
191
220
  - test/smash_and_grab/abilities/sprint_test.rb
192
221
  - test/smash_and_grab/map/faction_test.rb
193
222
  - test/smash_and_grab/map/map_test.rb
@@ -221,8 +250,11 @@ signing_key:
221
250
  specification_version: 3
222
251
  summary: Turn-based isometric heist game
223
252
  test_files:
253
+ - test/smash_and_grab/abilities/drop_test.rb
224
254
  - test/smash_and_grab/abilities/melee_test.rb
225
255
  - test/smash_and_grab/abilities/move_test.rb
256
+ - test/smash_and_grab/abilities/pick_up_test.rb
257
+ - test/smash_and_grab/abilities/ranged_test.rb
226
258
  - test/smash_and_grab/abilities/sprint_test.rb
227
259
  - test/smash_and_grab/map/faction_test.rb
228
260
  - test/smash_and_grab/map/map_test.rb
@@ -1,77 +0,0 @@
1
- module Fidgit
2
- module Event
3
- # Returned by {#subscribe} and can be used to {#unsubscribe}
4
- class Subscription
5
- attr_reader :publisher, :event, :handler
6
-
7
- def initialize(publisher, event, handler)
8
- @publisher, @event, @handler = publisher, event, handler
9
- end
10
-
11
- def unsubscribe
12
- @publisher.unsubscribe self
13
- end
14
- end
15
-
16
- class << self
17
- def new_event_handlers
18
- # Don't use Set, since it is not guaranteed to be ordered.
19
- Hash.new {|h, k| h[k] = [] }
20
- end
21
- end
22
-
23
- # @return [Subscription] Definition of this the handler created by this subscription, to be used with {#unsubscribe}
24
- def subscribe(event, method = nil, &block)
25
- raise ArgumentError, "Expected method or block for event handler" unless !block.nil? ^ !method.nil?
26
- raise ArgumentError, "#{self.class} does not handle #{event.inspect}" unless events.include? event
27
-
28
- @_event_handlers ||= Event.new_event_handlers
29
- handler = method || block
30
- @_event_handlers[event] << handler
31
-
32
- Subscription.new self, event, handler
33
- end
34
-
35
- # @overload unsubscribe(subscription)
36
- # Unsubscribe from a #{Subscription}, as returned from {#subscribe}
37
- # @param subscription [Subscription]
38
- # @return [Boolean] true if the handler was able to be deleted.
39
- #
40
- # @overload unsubscribe(handler)
41
- # Unsubscribe from first event this handler has been used to subscribe to..
42
- # @param handler [Block, Method] Event handler used.
43
- # @return [Boolean] true if the handler was able to be deleted.
44
- #
45
- # @overload unsubscribe(event, handler)
46
- # Unsubscribe from specific handler on particular event.
47
- # @param event [Symbol] Name of event originally subscribed to.
48
- # @param handler [Block, Method] Event handler used.
49
- # @return [Boolean] true if the handler was able to be deleted.
50
- #
51
- def unsubscribe(*args)
52
- @_event_handlers ||= Event.new_event_handlers
53
-
54
- case args.size
55
- when 1
56
- case args.first
57
- when Subscription
58
- # Delete specific event handler.
59
- subscription = args.first
60
- raise ArgumentError, "Incorrect publisher for #{Subscription}: #{subscription.publisher}" unless subscription.publisher == self
61
- unsubscribe subscription.event, subscription.handler
62
- when Block, Method
63
- # Delete first events that use the handler.
64
- handler = args.first
65
- !!@_event_handlers.find {|_, handlers| handlers.delete handler }
66
- else
67
- raise TypeError, "handler must be a #{Subscription}, Block or Method: #{args.first}"
68
- end
69
- when 2
70
- event, handler = args
71
- !!@_event_handlers[event].delete(handler)
72
- else
73
- raise ArgumentError, "Requires 1..2 arguments, but received #{args.size} arguments"
74
- end
75
- end
76
- end
77
- end