pirate_game 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +8 -0
- data/.gemtest +0 -0
- data/History.rdoc +5 -0
- data/Manifest.txt +37 -0
- data/README.md +88 -0
- data/Rakefile +24 -0
- data/bin/game_master +6 -0
- data/bin/pirate_game +5 -0
- data/config.json +4 -0
- data/imgs/jolly_roger.jpg +0 -0
- data/imgs/jolly_roger_sm.png +0 -0
- data/imgs/pirate_ship.png +0 -0
- data/imgs/pirate_ship_sm.png +0 -0
- data/lib/pirate_game.rb +21 -0
- data/lib/pirate_game/animation.rb +35 -0
- data/lib/pirate_game/background.rb +95 -0
- data/lib/pirate_game/boot.rb +68 -0
- data/lib/pirate_game/bridge.rb +21 -0
- data/lib/pirate_game/bridge_button.rb +38 -0
- data/lib/pirate_game/client.rb +163 -0
- data/lib/pirate_game/client_app.rb +342 -0
- data/lib/pirate_game/game_master.rb +208 -0
- data/lib/pirate_game/image.rb +23 -0
- data/lib/pirate_game/log_book.rb +39 -0
- data/lib/pirate_game/master_app.rb +103 -0
- data/lib/pirate_game/protocol.rb +10 -0
- data/lib/pirate_game/shoes4_patch.rb +30 -0
- data/lib/pirate_game/stage.rb +96 -0
- data/lib/pirate_game/timeout_renewer.rb +30 -0
- data/lib/pirate_game/wave.rb +46 -0
- data/lib/pirate_game/waving_item.rb +17 -0
- data/state_diagram.graffle +2689 -0
- data/test/test_pirate_game_bridge.rb +14 -0
- data/test/test_pirate_game_client.rb +148 -0
- data/test/test_pirate_game_game_master.rb +107 -0
- data/test/test_pirate_game_log_book.rb +34 -0
- data/test/test_pirate_game_stage.rb +116 -0
- data/test/test_pirate_game_timeout_renewer.rb +15 -0
- metadata +204 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameBridge < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@bridge = PirateGame::Bridge.new(%w[Foo Bar], %w[Foo Bar Baz Buz])
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_initialize
|
11
|
+
assert_equal 2, @bridge.items.length
|
12
|
+
assert_equal 4, @bridge.stage_items.length
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameClient < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@ts = Rinda::TupleSpace.new
|
8
|
+
|
9
|
+
@client = PirateGame::Client.new(name: 'foo')
|
10
|
+
|
11
|
+
@client.instance_variable_set :@mothership, @ts
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_initialize
|
15
|
+
assert_empty @client.log_book
|
16
|
+
assert_nil @client.bridge
|
17
|
+
assert_equal :select_game, @client.state
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_set_state
|
21
|
+
@client.set_state :pub
|
22
|
+
|
23
|
+
assert_equal :pub, @client.state
|
24
|
+
|
25
|
+
assert_raises RuntimeError do
|
26
|
+
@client.set_state :foobar
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_equal :pub, @client.state
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_action_time_left
|
33
|
+
assert_equal 0, @client.action_time_left
|
34
|
+
|
35
|
+
@client.issue_command 'Test'
|
36
|
+
|
37
|
+
assert_in_epsilon 8, @client.action_time_left, 0.1
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_clicked
|
41
|
+
make_services
|
42
|
+
|
43
|
+
@client.clicked 'Test'
|
44
|
+
|
45
|
+
tuple = @ts.read [:button, nil, nil, nil]
|
46
|
+
|
47
|
+
assert_equal :button, tuple.shift
|
48
|
+
assert_equal 'Test', tuple.shift
|
49
|
+
assert_includes (Time.now.to_i - 1..Time.now.to_i), tuple.shift
|
50
|
+
assert_equal DRb.uri, tuple.shift
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_issue_command
|
54
|
+
@client.issue_command 'Test'
|
55
|
+
|
56
|
+
assert @client.waiting?
|
57
|
+
assert_match /Test/, @client.current_action
|
58
|
+
|
59
|
+
@client.clicked 'Test'
|
60
|
+
|
61
|
+
Thread.pass while @client.command_start
|
62
|
+
|
63
|
+
refute @client.waiting?
|
64
|
+
assert_nil @client.current_action
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_start_stage
|
68
|
+
assert_nil @client.bridge
|
69
|
+
|
70
|
+
@client.start_stage(%w[foo bar], %w[foo bar baz buz])
|
71
|
+
|
72
|
+
assert @client.bridge
|
73
|
+
|
74
|
+
assert_includes @client.bridge.items, 'foo'
|
75
|
+
assert_includes @client.bridge.items, 'bar'
|
76
|
+
assert_equal 4, @client.bridge.stage_items.length
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_renewer
|
80
|
+
renewer = @client.renewer
|
81
|
+
|
82
|
+
assert_equal 8, renewer.renew
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_return_to_pub
|
86
|
+
@client.start_stage(%w[foo bar], %w[foo bar baz buz])
|
87
|
+
|
88
|
+
assert @client.bridge
|
89
|
+
|
90
|
+
@client.return_to_pub
|
91
|
+
|
92
|
+
assert_nil @client.bridge
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_teammates
|
96
|
+
make_services
|
97
|
+
|
98
|
+
assert_includes @client.teammates, 'Davy'
|
99
|
+
assert_includes @client.teammates, 'Eric'
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_broadcast
|
103
|
+
make_services
|
104
|
+
|
105
|
+
@client.broadcast 'Hello'
|
106
|
+
|
107
|
+
refute_empty @client.log_book
|
108
|
+
|
109
|
+
assert_equal 2, @client.log_book.length
|
110
|
+
assert_includes @client.log_book.collect{|msg, name| msg}, 'Hello'
|
111
|
+
assert_includes @client.log_book.collect{|msg, name| name}, @client.name
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_wait_for_action
|
115
|
+
@client.clicked 'Test'
|
116
|
+
|
117
|
+
@client.wait_for_action 'Test'
|
118
|
+
|
119
|
+
action = @ts.read [:action, nil, nil, nil]
|
120
|
+
|
121
|
+
action.shift
|
122
|
+
|
123
|
+
assert_equal 'Test', action.shift
|
124
|
+
assert_kind_of Time, action.shift
|
125
|
+
assert_equal DRb.uri, action.shift
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_wait_for_action_expired
|
129
|
+
@client.completion_time = 0
|
130
|
+
@client.wait_for_action 'Test'
|
131
|
+
|
132
|
+
assert true, 'did not hang up'
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_waiting_eh
|
136
|
+
refute @client.waiting?
|
137
|
+
|
138
|
+
@client.issue_command 'Test'
|
139
|
+
|
140
|
+
assert @client.waiting?
|
141
|
+
end
|
142
|
+
|
143
|
+
def make_services
|
144
|
+
def @client.registered_services
|
145
|
+
[['Davy', DRb.uri], ['Eric', DRb.uri]]
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameGameMaster < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@client = PirateGame::Client.new name: 'user'
|
8
|
+
|
9
|
+
@game_master = PirateGame::GameMaster.new(name: 'Foo')
|
10
|
+
|
11
|
+
DRb.stop_service if DRb.primary_server
|
12
|
+
DRb.start_service nil, @client
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_initialize
|
16
|
+
assert_nil @game_master.stage
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_increment_stage
|
20
|
+
assert_nil @game_master.stage
|
21
|
+
assert_empty @game_master.stage_ary
|
22
|
+
|
23
|
+
@game_master.increment_stage
|
24
|
+
|
25
|
+
refute_nil @game_master.stage
|
26
|
+
assert_equal 1, @game_master.stage.level
|
27
|
+
assert_equal 1, @game_master.stage_ary.length
|
28
|
+
|
29
|
+
@game_master.increment_stage
|
30
|
+
|
31
|
+
refute_nil @game_master.stage
|
32
|
+
assert_equal 2, @game_master.stage.level
|
33
|
+
assert_equal 2, @game_master.stage_ary.length
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_startable_eh
|
37
|
+
|
38
|
+
# should not be startable when no players exist
|
39
|
+
assert_equal 0, @game_master.num_players
|
40
|
+
refute @game_master.startable?
|
41
|
+
refute @game_master.start
|
42
|
+
assert_nil @game_master.stage
|
43
|
+
|
44
|
+
# should be startable after making services
|
45
|
+
make_services
|
46
|
+
|
47
|
+
assert @game_master.startable?
|
48
|
+
assert @game_master.start
|
49
|
+
|
50
|
+
# should not be startable when stage is failed
|
51
|
+
@game_master.stage.begin_time = Time.at 0
|
52
|
+
|
53
|
+
assert @game_master.stage.failure?
|
54
|
+
refute @game_master.startable?
|
55
|
+
refute @game_master.start
|
56
|
+
|
57
|
+
# should be startable when stage is success
|
58
|
+
10.times do
|
59
|
+
@game_master.stage.complete 'test', 'test'
|
60
|
+
end
|
61
|
+
|
62
|
+
assert @game_master.stage.success?
|
63
|
+
assert @game_master.startable?
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_start
|
67
|
+
make_services
|
68
|
+
assert @game_master.start
|
69
|
+
|
70
|
+
assert @game_master.stage
|
71
|
+
assert_equal 1, @game_master.stage.level
|
72
|
+
assert_equal 1, @game_master.stage_ary.length
|
73
|
+
|
74
|
+
10.times do
|
75
|
+
@game_master.stage.complete 'test', 'test'
|
76
|
+
end
|
77
|
+
@game_master.stage.begin_time = Time.at 0
|
78
|
+
|
79
|
+
assert @game_master.start
|
80
|
+
assert_equal 2, @game_master.stage.level
|
81
|
+
assert_equal 2, @game_master.stage_ary.length
|
82
|
+
|
83
|
+
assert_equal [1,2], @game_master.stage_ary.collect{|s| s.level}
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_update
|
87
|
+
assert_equal 0, @game_master.num_players
|
88
|
+
assert_empty @game_master.player_names
|
89
|
+
|
90
|
+
make_services
|
91
|
+
|
92
|
+
assert_equal 0, @game_master.num_players
|
93
|
+
assert_empty @game_master.player_names
|
94
|
+
|
95
|
+
assert @game_master.update
|
96
|
+
|
97
|
+
assert_equal 2, @game_master.num_players
|
98
|
+
assert_equal %w[Davy Eric], @game_master.player_names.sort
|
99
|
+
end
|
100
|
+
|
101
|
+
def make_services
|
102
|
+
def @game_master.read_registered_services
|
103
|
+
[['Davy', DRb.uri], ['Eric', DRb.uri]]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameLogBook < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@log_book = PirateGame::LogBook.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_initialize
|
11
|
+
assert_empty @log_book
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_add
|
15
|
+
@log_book.add 'Day One', 'Davy'
|
16
|
+
|
17
|
+
assert_equal 1, @log_book.length
|
18
|
+
assert_equal ['Day One', 'Davy'], @log_book.first
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_maintain_size
|
22
|
+
10.times do |i|
|
23
|
+
@log_book.add "Day #{i+1}", 'Davy'
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_equal 10, @log_book.length
|
27
|
+
|
28
|
+
@log_book.add "Another Day", 'Eric'
|
29
|
+
|
30
|
+
assert_equal 10, @log_book.length
|
31
|
+
assert_equal ['Day 2', 'Davy'], @log_book.first
|
32
|
+
assert @log_book.detect{|msg,auth| auth == 'Eric'}
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameStage < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@stage = PirateGame::Stage.new 1, 3
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_increment
|
11
|
+
@inc = @stage.increment
|
12
|
+
|
13
|
+
assert_equal 2, @inc.level
|
14
|
+
assert_equal @stage.players, @inc.players
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_time_left
|
18
|
+
assert_operator 30, :>=, @stage.time_left
|
19
|
+
assert_operator 28, :<, @stage.time_left
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_status_in_progress
|
23
|
+
assert_equal 'In Progress', @stage.status
|
24
|
+
assert @stage.in_progress?
|
25
|
+
refute @stage.failure?
|
26
|
+
refute @stage.success?
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_status_success
|
30
|
+
10.times { @stage.complete 'foo', 'bar' }
|
31
|
+
|
32
|
+
complete_stage
|
33
|
+
|
34
|
+
assert_equal 'Success', @stage.status
|
35
|
+
assert @stage.success?
|
36
|
+
refute @stage.in_progress?
|
37
|
+
refute @stage.failure?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_status_failed
|
41
|
+
complete_stage
|
42
|
+
|
43
|
+
assert_equal 'Failure', @stage.status
|
44
|
+
assert @stage.failure?
|
45
|
+
refute @stage.success?
|
46
|
+
refute @stage.in_progress?
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_generate_all_items
|
50
|
+
assert_equal 18, @stage.all_items.uniq.length
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_bridge_for_player
|
54
|
+
bridge = @stage.bridge_for_player
|
55
|
+
|
56
|
+
assert_equal 6, bridge.length
|
57
|
+
|
58
|
+
@stage.bridge_for_player
|
59
|
+
@stage.bridge_for_player
|
60
|
+
|
61
|
+
assert_nil @stage.bridge_for_player
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_actions_completed
|
65
|
+
assert_equal 0, @stage.actions_completed
|
66
|
+
|
67
|
+
@stage.complete 'Foo', 'from bob'
|
68
|
+
|
69
|
+
assert_equal 1, @stage.actions_completed
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_required_actions
|
73
|
+
assert_equal 10, @stage.required_actions
|
74
|
+
|
75
|
+
@stage = PirateGame::Stage.new(5, 4)
|
76
|
+
|
77
|
+
assert_equal 29, @stage.required_actions
|
78
|
+
|
79
|
+
@stage = PirateGame::Stage.new(10, 2)
|
80
|
+
|
81
|
+
assert_equal 25, @stage.required_actions
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_stage_passed_eh
|
85
|
+
refute @stage.passed?
|
86
|
+
|
87
|
+
9.times do
|
88
|
+
@stage.complete 'foo', 'bar'
|
89
|
+
end
|
90
|
+
|
91
|
+
refute @stage.passed?
|
92
|
+
|
93
|
+
@stage.complete 'for', 'the win'
|
94
|
+
|
95
|
+
assert @stage.passed?
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_rundown
|
99
|
+
10.times { @stage.complete 'foo', 'bar' }
|
100
|
+
|
101
|
+
assert_nil @stage.rundown
|
102
|
+
|
103
|
+
complete_stage
|
104
|
+
|
105
|
+
rundown = {:stage => 1, :total_actions => 10, :player_breakdown => {'bar' => 10}}
|
106
|
+
|
107
|
+
assert_equal rundown, @stage.rundown
|
108
|
+
end
|
109
|
+
|
110
|
+
def complete_stage
|
111
|
+
def @stage.begin_time
|
112
|
+
Time.now - 360
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pirate_game'
|
3
|
+
|
4
|
+
class TestPirateGameTimeoutRenewer < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_renew
|
7
|
+
r = PirateGame::TimeoutRenewer.new 5
|
8
|
+
|
9
|
+
assert_equal 5, r.renew
|
10
|
+
|
11
|
+
assert_equal true, r.renew
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pirate_game
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Davy Stevenson
|
9
|
+
- Eric Hodel
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-11-09 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: json
|
17
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.8.0
|
22
|
+
none: false
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.8.0
|
28
|
+
none: false
|
29
|
+
prerelease: false
|
30
|
+
type: :runtime
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: pirate_command
|
33
|
+
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.0'
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.2
|
41
|
+
none: false
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.0'
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.0.2
|
50
|
+
none: false
|
51
|
+
prerelease: false
|
52
|
+
type: :runtime
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: shuttlecraft
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.0'
|
60
|
+
none: false
|
61
|
+
requirement: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0.0'
|
66
|
+
none: false
|
67
|
+
prerelease: false
|
68
|
+
type: :runtime
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.7'
|
76
|
+
none: false
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ~>
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '4.7'
|
82
|
+
none: false
|
83
|
+
prerelease: false
|
84
|
+
type: :development
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rdoc
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '4.0'
|
92
|
+
none: false
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ~>
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '4.0'
|
98
|
+
none: false
|
99
|
+
prerelease: false
|
100
|
+
type: :development
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: hoe
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ~>
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '3.7'
|
108
|
+
none: false
|
109
|
+
requirement: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ~>
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '3.7'
|
114
|
+
none: false
|
115
|
+
prerelease: false
|
116
|
+
type: :development
|
117
|
+
description: |-
|
118
|
+
You insouciant scalawags will share the experience of a lifetime as you play a game built atop DRb and Shoes based generally upon the phenomenon known as Spaceteam! Except with Pirates!!
|
119
|
+
|
120
|
+
Team up with your fellow pirates to plunder the high seas! Yarrrr….☠
|
121
|
+
email:
|
122
|
+
- davy.stevenson@gmail.com
|
123
|
+
- drbrain@segment7.net
|
124
|
+
executables:
|
125
|
+
- game_master
|
126
|
+
- pirate_game
|
127
|
+
extensions: []
|
128
|
+
extra_rdoc_files:
|
129
|
+
- History.rdoc
|
130
|
+
- Manifest.txt
|
131
|
+
- README.md
|
132
|
+
files:
|
133
|
+
- .autotest
|
134
|
+
- History.rdoc
|
135
|
+
- Manifest.txt
|
136
|
+
- README.md
|
137
|
+
- Rakefile
|
138
|
+
- bin/game_master
|
139
|
+
- bin/pirate_game
|
140
|
+
- config.json
|
141
|
+
- imgs/jolly_roger.jpg
|
142
|
+
- imgs/jolly_roger_sm.png
|
143
|
+
- imgs/pirate_ship.png
|
144
|
+
- imgs/pirate_ship_sm.png
|
145
|
+
- lib/pirate_game.rb
|
146
|
+
- lib/pirate_game/animation.rb
|
147
|
+
- lib/pirate_game/background.rb
|
148
|
+
- lib/pirate_game/boot.rb
|
149
|
+
- lib/pirate_game/bridge.rb
|
150
|
+
- lib/pirate_game/bridge_button.rb
|
151
|
+
- lib/pirate_game/client.rb
|
152
|
+
- lib/pirate_game/client_app.rb
|
153
|
+
- lib/pirate_game/game_master.rb
|
154
|
+
- lib/pirate_game/image.rb
|
155
|
+
- lib/pirate_game/log_book.rb
|
156
|
+
- lib/pirate_game/master_app.rb
|
157
|
+
- lib/pirate_game/protocol.rb
|
158
|
+
- lib/pirate_game/shoes4_patch.rb
|
159
|
+
- lib/pirate_game/stage.rb
|
160
|
+
- lib/pirate_game/timeout_renewer.rb
|
161
|
+
- lib/pirate_game/wave.rb
|
162
|
+
- lib/pirate_game/waving_item.rb
|
163
|
+
- state_diagram.graffle
|
164
|
+
- test/test_pirate_game_bridge.rb
|
165
|
+
- test/test_pirate_game_client.rb
|
166
|
+
- test/test_pirate_game_game_master.rb
|
167
|
+
- test/test_pirate_game_log_book.rb
|
168
|
+
- test/test_pirate_game_stage.rb
|
169
|
+
- test/test_pirate_game_timeout_renewer.rb
|
170
|
+
- .gemtest
|
171
|
+
homepage: https://github.com/davy/pirate_game
|
172
|
+
licenses:
|
173
|
+
- MIT
|
174
|
+
post_install_message:
|
175
|
+
rdoc_options:
|
176
|
+
- --main
|
177
|
+
- README.md
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
none: false
|
186
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
none: false
|
192
|
+
requirements: []
|
193
|
+
rubyforge_project: pirate_game
|
194
|
+
rubygems_version: 1.8.24
|
195
|
+
signing_key:
|
196
|
+
specification_version: 3
|
197
|
+
summary: You insouciant scalawags will share the experience of a lifetime as you play a game built atop DRb and Shoes based generally upon the phenomenon known as Spaceteam! Except with Pirates!! Team up with your fellow pirates to plunder the high seas! Yarrrr….☠
|
198
|
+
test_files:
|
199
|
+
- test/test_pirate_game_bridge.rb
|
200
|
+
- test/test_pirate_game_client.rb
|
201
|
+
- test/test_pirate_game_game_master.rb
|
202
|
+
- test/test_pirate_game_log_book.rb
|
203
|
+
- test/test_pirate_game_stage.rb
|
204
|
+
- test/test_pirate_game_timeout_renewer.rb
|