smash_and_grab 0.0.5alpha → 0.0.6alpha

Sign up to get free protection for your applications and to get access to all the features.
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