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.
- data/{CHANGELOG.txt → CHANGELOG.md} +0 -0
- data/Gemfile.lock +8 -4
- data/LICENSE.txt +20 -0
- data/README.md +30 -14
- data/Rakefile +2 -2
- data/config/lang/objects/entities/en.yml +134 -0
- data/config/lang/objects/static/en.yml +8 -0
- data/config/lang/objects/vehicles/en.yml +11 -0
- data/config/map/entities.yml +42 -38
- data/lib/smash_and_grab.rb +5 -0
- data/lib/smash_and_grab/abilities.rb +1 -1
- data/lib/smash_and_grab/abilities/ability.rb +45 -3
- data/lib/smash_and_grab/abilities/drop.rb +38 -0
- data/lib/smash_and_grab/abilities/melee.rb +4 -6
- data/lib/smash_and_grab/abilities/pick_up.rb +33 -0
- data/lib/smash_and_grab/abilities/ranged.rb +18 -12
- data/lib/smash_and_grab/abilities/sprint.rb +11 -7
- data/lib/smash_and_grab/chingu_ext/basic_game_object.rb +26 -0
- data/lib/smash_and_grab/game_window.rb +5 -1
- data/lib/smash_and_grab/gui/entity_panel.rb +26 -10
- data/lib/smash_and_grab/gui/entity_summary.rb +19 -11
- data/lib/smash_and_grab/gui/game_log.rb +6 -2
- data/lib/smash_and_grab/gui/info_panel.rb +7 -4
- data/lib/smash_and_grab/gui/object_panel.rb +6 -2
- data/lib/smash_and_grab/gui/scenario_panel.rb +4 -0
- data/lib/smash_and_grab/history/action_history.rb +1 -1
- data/lib/smash_and_grab/main.rb +7 -3
- data/lib/smash_and_grab/map/faction.rb +26 -8
- data/lib/smash_and_grab/map/map.rb +21 -12
- data/lib/smash_and_grab/map/tile.rb +29 -2
- data/lib/smash_and_grab/map/wall.rb +2 -2
- data/lib/smash_and_grab/mixins/has_contents.rb +38 -0
- data/lib/smash_and_grab/mixins/line_of_sight.rb +129 -0
- data/lib/smash_and_grab/mixins/pathfinding.rb +145 -0
- data/lib/smash_and_grab/mouse_selection.rb +107 -36
- data/lib/smash_and_grab/objects/entity.rb +311 -260
- data/lib/smash_and_grab/objects/floating_text.rb +0 -1
- data/lib/smash_and_grab/objects/static.rb +10 -3
- data/lib/smash_and_grab/objects/vehicle.rb +7 -2
- data/lib/smash_and_grab/objects/world_object.rb +10 -3
- data/lib/smash_and_grab/path.rb +38 -12
- data/lib/smash_and_grab/players/ai.rb +91 -0
- data/lib/smash_and_grab/players/human.rb +9 -0
- data/lib/smash_and_grab/players/player.rb +16 -65
- data/lib/smash_and_grab/players/remote.rb +9 -0
- data/lib/smash_and_grab/sprite_sheet.rb +9 -0
- data/lib/smash_and_grab/states/edit_level.rb +15 -4
- data/lib/smash_and_grab/states/main_menu.rb +16 -4
- data/lib/smash_and_grab/states/play_level.rb +88 -28
- data/lib/smash_and_grab/states/world.rb +17 -9
- data/lib/smash_and_grab/version.rb +1 -1
- data/lib/smash_and_grab/z_order.rb +6 -5
- data/media/images/path.png +0 -0
- data/media/images/tile_selection.png +0 -0
- data/media/images/tiles_selection.png +0 -0
- data/smash_and_grab.gemspec +2 -2
- data/tasks/create_portraits.rb +39 -0
- data/tasks/outline_images.rb +56 -0
- data/test/smash_and_grab/abilities/drop_test.rb +68 -0
- data/test/smash_and_grab/abilities/melee_test.rb +4 -4
- data/test/smash_and_grab/abilities/pick_up_test.rb +68 -0
- data/test/smash_and_grab/abilities/ranged_test.rb +105 -0
- data/test/smash_and_grab/abilities/sprint_test.rb +55 -25
- data/test/smash_and_grab/map/faction_test.rb +18 -16
- data/test/smash_and_grab/map/map_test.rb +9 -4
- metadata +51 -19
- 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" =>
|
10
|
+
"health" => 5,
|
11
|
+
"contents_id" => nil,
|
11
12
|
"movement_points" => 7,
|
12
|
-
"action_points" =>
|
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
|
-
|
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *30704208
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: chingu
|
27
|
-
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: *
|
35
|
+
version_requirements: *30703932
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fidgit
|
38
|
-
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
|
43
|
+
version: 0.2.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *30703572
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: texplay
|
49
|
-
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: *
|
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: &
|
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: *
|
79
|
+
version_requirements: *30702684
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rake
|
71
|
-
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: *
|
90
|
+
version_requirements: *30702408
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: bacon-rr
|
82
|
-
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: *
|
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.
|
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
|