gemwarrior 0.14.4 → 0.14.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/gemwarrior +1 -1
- data/gemwarrior.gemspec +5 -8
- data/lib/gemwarrior/battle.rb +6 -1
- data/lib/gemwarrior/entities/items/bookcase.rb +1 -0
- data/lib/gemwarrior/entities/items/massive_door.rb +1 -0
- data/lib/gemwarrior/entities/items/pedestal.rb +1 -0
- data/lib/gemwarrior/entities/items/pond.rb +1 -0
- data/lib/gemwarrior/entities/items/small_hole.rb +1 -0
- data/lib/gemwarrior/entities/items/tree.rb +3 -1
- data/lib/gemwarrior/game.rb +5 -0
- data/lib/gemwarrior/misc/audio.rb +54 -14
- data/lib/gemwarrior/misc/audio_cues.rb +18 -7
- data/lib/gemwarrior/misc/bloops_cues.rb +166 -0
- data/lib/gemwarrior/repl.rb +21 -2
- data/lib/gemwarrior/version.rb +1 -1
- metadata +3 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eed4c481dd9b8c403851ed62c05ea92757f56d7
|
4
|
+
data.tar.gz: b2d8cbfee1c8dac0daed910d8436970e8cdab12a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c9168749c94929d96c7175698a90f44c393846d45d7d5d9d2000ac20fe077adf1305ddecbe46b6b7a24a47f5a552363720c7f4ee7d8c306e9c2f98396a70110
|
7
|
+
data.tar.gz: 7c7e3eb9aab5d32d8f20ef14577935ba3d4aa69666fbb6c28a64262b0fc6baf77f6e3d91e7a08764e8fa924651c010d5bb6a2ca97c57cf9f63ad239b5492d76c
|
data/bin/gemwarrior
CHANGED
@@ -117,7 +117,7 @@ end
|
|
117
117
|
def init_config
|
118
118
|
Dir.mkdir(GW_HOME) unless Dir.exist?(GW_HOME)
|
119
119
|
|
120
|
-
sound_system_default = OS.windows? ? 'win32-sound' : '
|
120
|
+
sound_system_default = OS.windows? ? 'win32-sound' : 'bloops'
|
121
121
|
|
122
122
|
GameOptions.add 'sound_system', sound_system_default
|
123
123
|
GameOptions.add 'save_file_mode', 'Y'
|
data/gemwarrior.gemspec
CHANGED
@@ -25,19 +25,16 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_runtime_dependency 'colorize', '~> 0.7.7'
|
26
26
|
spec.add_runtime_dependency 'matrext', '~> 0.4.10'
|
27
27
|
spec.add_runtime_dependency 'clocker', '~> 0.1.6'
|
28
|
-
spec.add_runtime_dependency 'win32-sound', '~> 0.6.0'
|
29
|
-
spec.add_runtime_dependency 'feep', '~> 0.1.3'
|
30
28
|
spec.add_runtime_dependency 'gems', '~> 0.8.3'
|
31
|
-
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
29
|
+
|
30
|
+
# sound systems
|
31
|
+
#spec.add_runtime_dependency 'feep', '~> 0.1.3'
|
32
|
+
#spec.add_runtime_dependency 'win32-sound', '~> 0.6.0'
|
33
|
+
#spec.add_runtime_dependency 'bloopsaphone', '>= 0.4'
|
35
34
|
|
36
35
|
spec.add_development_dependency 'bundler', '~> 1.8'
|
37
36
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
|
-
|
39
37
|
spec.add_development_dependency 'rubocop', '~> 0.29'
|
40
|
-
|
41
38
|
spec.add_development_dependency 'rspec'
|
42
39
|
spec.add_development_dependency 'rspec-nc'
|
43
40
|
spec.add_development_dependency 'guard'
|
data/lib/gemwarrior/battle.rb
CHANGED
@@ -541,7 +541,6 @@ module Gemwarrior
|
|
541
541
|
end
|
542
542
|
|
543
543
|
def monster_death
|
544
|
-
Audio.play_synth(:battle_win)
|
545
544
|
puts " YOU HAVE DEFEATED #{monster.name.upcase}!\n".colorize(:green)
|
546
545
|
|
547
546
|
if monster.is_boss
|
@@ -557,6 +556,8 @@ module Gemwarrior
|
|
557
556
|
# game ending: initiate
|
558
557
|
return monster.initiate_ending(world)
|
559
558
|
elsif monster.name.eql?('jaspern')
|
559
|
+
Audio.play_synth(:battle_win_boss)
|
560
|
+
|
560
561
|
puts ' You just beat a MINIBOSS! Fantastic!'
|
561
562
|
puts
|
562
563
|
|
@@ -565,11 +566,15 @@ module Gemwarrior
|
|
565
566
|
# river bridge boss: initiate
|
566
567
|
return monster.river_bridge_success(world)
|
567
568
|
else
|
569
|
+
Audio.play_synth(:battle_win_boss)
|
570
|
+
|
568
571
|
reward_player(monster)
|
569
572
|
|
570
573
|
world.location_by_coords(player.cur_coords).remove_monster(monster.name)
|
571
574
|
end
|
572
575
|
else
|
576
|
+
Audio.play_synth(:battle_win_monster)
|
577
|
+
|
573
578
|
# stats
|
574
579
|
world.player.monsters_killed += 1
|
575
580
|
|
@@ -16,6 +16,7 @@ module Gemwarrior
|
|
16
16
|
def use(world)
|
17
17
|
puts 'You attempt to open the seriously massive door that separates you from Emerald himself.'
|
18
18
|
if world.player.inventory.contains_item?('keystone')
|
19
|
+
Audio.play_synth(:uncover_secret)
|
19
20
|
puts 'The keystone in your inventory glows as you approach the incredibly titanic-sized door, so you naturally pull it out and thrust it into the stone-shaped depression within the cloudy obstruction. The door "opens" in a way and you can now pass through.'
|
20
21
|
{ type: 'move', data: 'Sky Tower (Throne Room)' }
|
21
22
|
else
|
@@ -93,6 +93,7 @@ module Gemwarrior
|
|
93
93
|
end
|
94
94
|
|
95
95
|
if pedestal_configured
|
96
|
+
Audio.play_synth(:uncover_secret)
|
96
97
|
puts 'You push the large gem into the pedestal and it descends without a hitch, almost as if it were meant to be. The pedestal begins to violently shake and a strong gust of wind picks you up off the ground. You feel completely taken aback and unsettled, but you have no choice: you are being whisked away somewhere into the sky, destination unknown.'.colorize(:yellow)
|
97
98
|
|
98
99
|
# stats
|
@@ -20,6 +20,7 @@ module Gemwarrior
|
|
20
20
|
puts 'You gently place your fingers on the pond\'s rippling surface.'
|
21
21
|
|
22
22
|
if (NEEDED_ITEMS - world.player.inventory.items.map(&:name)).empty?
|
23
|
+
Audio.play_synth(:uncover_secret)
|
23
24
|
puts 'The pond water explodes with a force that knocks you back onto the ground. When you come to, you notice the depression in the ground where the pond once was now has a new curious object!'
|
24
25
|
self.description = 'A barren depression in the ground is all that is left of the pond.'
|
25
26
|
return { type: 'item', data: 'Opalaser' }
|
@@ -17,6 +17,7 @@ module Gemwarrior
|
|
17
17
|
if !self.used
|
18
18
|
self.used = true
|
19
19
|
|
20
|
+
Audio.play_synth(:uncover_secret)
|
20
21
|
puts 'You lower yourself to the ground and attempt to peer in the hole in the wall. Just as you begin to think this is a fruitless endeavor, a pair of bright, beady eyes manifest, and an unexpectedly low voice speaks:'
|
21
22
|
Person.new.speak('Hello. I\'m Rockney, of Rockney\'s Hole in the Wall. Pleasure!')
|
22
23
|
|
@@ -20,7 +20,9 @@ module Gemwarrior
|
|
20
20
|
return { type: nil, data: nil }
|
21
21
|
elsif self.used
|
22
22
|
self.used_again = true
|
23
|
-
|
23
|
+
|
24
|
+
Audio.play_synth(:uncover_secret)
|
25
|
+
|
24
26
|
puts 'Looking further into the small opening in the trunk your eye catches the light glinting off a few small metallic objects.'
|
25
27
|
|
26
28
|
cur_loc = world.location_by_name('forest-southeast')
|
data/lib/gemwarrior/game.rb
CHANGED
@@ -88,6 +88,11 @@ module Gemwarrior
|
|
88
88
|
# create options file if not existing
|
89
89
|
update_options_file
|
90
90
|
|
91
|
+
# require needed files for selected sound_system if sound_enabled
|
92
|
+
if GameOptions.data['sound_enabled']
|
93
|
+
Audio.init
|
94
|
+
end
|
95
|
+
|
91
96
|
# create the console
|
92
97
|
self.evaluator = Evaluator.new(world)
|
93
98
|
self.repl = Repl.new(self, world, evaluator)
|
@@ -1,25 +1,40 @@
|
|
1
1
|
# lib/gemwarrior/misc/audio.rb
|
2
2
|
# Audio cues using either synth or samples
|
3
|
-
# Synth: win32-sound
|
3
|
+
# Synth: win32-sound, feep, or bloopsaphone depending on platform/choice
|
4
4
|
# Samples: small wav files
|
5
5
|
|
6
6
|
require_relative '../game_options'
|
7
|
-
require_relative 'audio_cues'
|
8
|
-
require_relative 'musical_notes'
|
9
7
|
|
10
8
|
module Gemwarrior
|
11
9
|
module Audio
|
12
|
-
def self.
|
13
|
-
|
10
|
+
def self.init
|
11
|
+
if GameOptions.data['sound_system'].eql?('win32-sound')
|
12
|
+
begin
|
13
|
+
require 'win32/sound'
|
14
|
+
rescue LoadError => e
|
15
|
+
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Gem Warrior will be silent for now."
|
16
|
+
end
|
17
|
+
elsif GameOptions.data['sound_system'].eql?('feep')
|
18
|
+
begin
|
19
|
+
require 'feep'
|
20
|
+
rescue LoadError => e
|
21
|
+
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Gem Warrior will be silent for now."
|
22
|
+
end
|
23
|
+
elsif GameOptions.data['sound_system'].eql?('bloops')
|
24
|
+
begin
|
25
|
+
require 'bloops'
|
26
|
+
rescue LoadError => e
|
27
|
+
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}aphone'. Gem Warrior will be silent for now."
|
28
|
+
end
|
29
|
+
end
|
14
30
|
end
|
15
31
|
|
16
32
|
def self.play_synth(audio_cue_symbol)
|
17
33
|
if GameOptions.data['sound_enabled']
|
18
|
-
|
19
|
-
|
20
|
-
|
34
|
+
case GameOptions.data['sound_system']
|
35
|
+
when 'win32-sound'
|
36
|
+
require_relative 'audio_cues'
|
21
37
|
require_relative 'musical_notes'
|
22
|
-
|
23
38
|
Thread.start do
|
24
39
|
AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
|
25
40
|
threads = []
|
@@ -31,10 +46,8 @@ module Gemwarrior
|
|
31
46
|
threads.each { |th| th.join }
|
32
47
|
end
|
33
48
|
end
|
34
|
-
|
35
|
-
|
36
|
-
require 'feep'
|
37
|
-
|
49
|
+
when 'feep'
|
50
|
+
require_relative 'audio_cues'
|
38
51
|
feep_defaults = {
|
39
52
|
frequencies: '440',
|
40
53
|
waveform: 'sine',
|
@@ -42,7 +55,7 @@ module Gemwarrior
|
|
42
55
|
duration: 500,
|
43
56
|
notext: true
|
44
57
|
}
|
45
|
-
|
58
|
+
|
46
59
|
Thread.start do
|
47
60
|
AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
|
48
61
|
seq = feep_defaults.merge(seq)
|
@@ -56,8 +69,35 @@ module Gemwarrior
|
|
56
69
|
})
|
57
70
|
end
|
58
71
|
end
|
72
|
+
when 'bloops'
|
73
|
+
require_relative 'bloops_cues'
|
74
|
+
Thread.start do
|
75
|
+
BloopsCues.cues[audio_cue_symbol][:synth].each do |seq|
|
76
|
+
threads = []
|
77
|
+
|
78
|
+
seq.each do |note|
|
79
|
+
threads << Thread.new do
|
80
|
+
b = Bloops.new
|
81
|
+
b.tempo = 240
|
82
|
+
snd = b.sound Bloops::SQUARE
|
83
|
+
snd.punch = GameOptions.data['sound_volume']/2
|
84
|
+
snd.sustain = 0.7
|
85
|
+
snd.decay = 0.2
|
86
|
+
b.tune snd, note[1]
|
87
|
+
b.play
|
88
|
+
sleep 0.1 while !b.stopped?
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
threads.each { |th| th.join }
|
93
|
+
end
|
94
|
+
end
|
59
95
|
end
|
60
96
|
end
|
61
97
|
end
|
98
|
+
|
99
|
+
def self.play_sample(audio_cue_symbol)
|
100
|
+
# future use
|
101
|
+
end
|
62
102
|
end
|
63
103
|
end
|
@@ -93,13 +93,11 @@ module Gemwarrior
|
|
93
93
|
|
94
94
|
self.add :intro, {
|
95
95
|
synth: [
|
96
|
-
{ frequencies: '
|
97
|
-
{ frequencies: '
|
98
|
-
{ frequencies: '
|
99
|
-
{ frequencies: '
|
100
|
-
{ frequencies: '
|
101
|
-
{ frequencies: 'F4,C6', duration: 50 },
|
102
|
-
{ frequencies: 'G4,B5,D6', duration: 500 }
|
96
|
+
{ frequencies: 'C3,G4', duration: 50 },
|
97
|
+
{ frequencies: 'D3,A4', duration: 50 },
|
98
|
+
{ frequencies: 'E3,B4', duration: 50 },
|
99
|
+
{ frequencies: 'F3,C5', duration: 50 },
|
100
|
+
{ frequencies: 'G3,B4,D5', duration: 350 }
|
103
101
|
],
|
104
102
|
sample: 'intro.wav'
|
105
103
|
}
|
@@ -131,6 +129,19 @@ module Gemwarrior
|
|
131
129
|
sample: 'player_travel.wav'
|
132
130
|
}
|
133
131
|
|
132
|
+
self.add :uncover_secret, {
|
133
|
+
synth: [
|
134
|
+
{ frequencies: 'F5', duration: 150 },
|
135
|
+
{ frequencies: 'E5', duration: 150 },
|
136
|
+
{ frequencies: 'C#4', duration: 150 },
|
137
|
+
{ frequencies: 'C4', duration: 150 },
|
138
|
+
{ frequencies: 'D#5', duration: 150 },
|
139
|
+
{ frequencies: 'F#5', duration: 150 },
|
140
|
+
{ frequencies: 'A5', duration: 150 }
|
141
|
+
],
|
142
|
+
sample: 'uncover_secret.wav'
|
143
|
+
}
|
144
|
+
|
134
145
|
self.add :win_game, {
|
135
146
|
synth: [
|
136
147
|
{ frequencies: 'G3', duration: 250 },
|
@@ -0,0 +1,166 @@
|
|
1
|
+
# lib/gemwarrior/misc/bloops_cues.rb
|
2
|
+
# Bloops cue symbol -> notes/wav_file
|
3
|
+
|
4
|
+
module Gemwarrior
|
5
|
+
module BloopsCues
|
6
|
+
def self.add key, val
|
7
|
+
@@cues ||= {}
|
8
|
+
@@cues[key] = val
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.cues
|
12
|
+
@@cues ||= {}
|
13
|
+
end
|
14
|
+
|
15
|
+
self.add :bg1, {
|
16
|
+
synth: [
|
17
|
+
{ s1: '2:C4' },
|
18
|
+
{ s1: '2:C5' },
|
19
|
+
{ s1: '2:C4' },
|
20
|
+
{ s1: '2:C5' },
|
21
|
+
{ s1: '2:C4' },
|
22
|
+
{ s1: '2:C5' },
|
23
|
+
{ s1: '2:G4' },
|
24
|
+
{ s1: '2:A4' },
|
25
|
+
{ s1: '2:C4' },
|
26
|
+
{ s1: '2:C5' },
|
27
|
+
{ s1: '2:C4' },
|
28
|
+
{ s1: '2:C5' },
|
29
|
+
{ s1: '2:C4' },
|
30
|
+
{ s1: '2:C5' },
|
31
|
+
{ s1: '2:B4' },
|
32
|
+
{ s1: '2:A4' },
|
33
|
+
],
|
34
|
+
sample: 'bg1.wav'
|
35
|
+
}
|
36
|
+
|
37
|
+
self.add :battle_start, {
|
38
|
+
synth: [
|
39
|
+
{ s1: '16:G4' },
|
40
|
+
{ s1: '16:G#4' },
|
41
|
+
{ s1: '16:G4' },
|
42
|
+
{ s1: '16:G#4' },
|
43
|
+
{ s1: '16:G4' },
|
44
|
+
{ s1: '16:G#4' }
|
45
|
+
],
|
46
|
+
sample: 'battle_start.wav'
|
47
|
+
}
|
48
|
+
|
49
|
+
self.add :battle_player_attack, {
|
50
|
+
synth: [{ s1: '16:A4', s2: '16:E4', s3: '16:B5' }],
|
51
|
+
sample: 'battle_player_attack.wav'
|
52
|
+
}
|
53
|
+
|
54
|
+
self.add :battle_player_miss, {
|
55
|
+
synth: [{ s1: '8:A4' }],
|
56
|
+
sample: 'battle_player_miss.wav'
|
57
|
+
}
|
58
|
+
|
59
|
+
self.add :battle_monster_attack, {
|
60
|
+
synth: [{ s1: '16:B4', s2: '16:E#5', s3: '16:A5' }],
|
61
|
+
sample: 'battle_monster_attack.wav'
|
62
|
+
}
|
63
|
+
|
64
|
+
self.add :battle_monster_miss, {
|
65
|
+
synth: [{ s1: '8:B4' }],
|
66
|
+
sample: 'battle_monster_miss.wav'
|
67
|
+
}
|
68
|
+
|
69
|
+
self.add :battle_win_boss, {
|
70
|
+
synth: [
|
71
|
+
{ s1: '16:E5' },
|
72
|
+
{ s1: '16:F5' },
|
73
|
+
{ s1: '8:E5' },
|
74
|
+
{ s1: '16:E5' },
|
75
|
+
{ s1: '16:F5' },
|
76
|
+
{ s1: '8:E5' },
|
77
|
+
{ s1: '16:E4', s2: '16:A4' },
|
78
|
+
{ s1: '4:E4', s2: '4:A4' }
|
79
|
+
],
|
80
|
+
sample: 'battle_win_boss.wav'
|
81
|
+
}
|
82
|
+
|
83
|
+
self.add :battle_win_monster, {
|
84
|
+
synth: [
|
85
|
+
{ s1: '16:D5' },
|
86
|
+
{ s1: '16:E5' },
|
87
|
+
{ s1: '8:D5' },
|
88
|
+
{ s1: '16:D4' },
|
89
|
+
{ s1: '4:D4' }
|
90
|
+
],
|
91
|
+
sample: 'battle_win_monster.wav'
|
92
|
+
}
|
93
|
+
|
94
|
+
self.add :intro, {
|
95
|
+
synth: [
|
96
|
+
{ s1: '16:C3', s2: '16:G4' },
|
97
|
+
{ s1: '16:D3', s2: '16:A4' },
|
98
|
+
{ s1: '16:E3', s2: '16:B4' },
|
99
|
+
{ s1: '16:F3', s2: '16:C5' },
|
100
|
+
{ s1: '4:G3', s2: '4:B4', s3: '4:D5' }
|
101
|
+
],
|
102
|
+
sample: 'intro.wav'
|
103
|
+
}
|
104
|
+
|
105
|
+
self.add :player_level_up, {
|
106
|
+
synth: [
|
107
|
+
{ s1: '8:D4', s2: '8:A4', s3: '8:D5', s4: '8:A5', s5: '8:D6' },
|
108
|
+
{ s1: '4:D4', s2: '4:A4', s3: '4:D5', s4: '4:A5', s5: '4:D6' },
|
109
|
+
{ s1: '1:E4', s2: '1:B4', s3: '1:E5', s4: '1:B5', s5: '1:E6' }
|
110
|
+
]
|
111
|
+
}
|
112
|
+
|
113
|
+
self.add :player_resurrection, {
|
114
|
+
synth: [
|
115
|
+
{ s1: '16:D#5' },
|
116
|
+
{ s1: '14:A4' },
|
117
|
+
{ s1: '12:F#4' },
|
118
|
+
{ s1: '2:F4' }
|
119
|
+
],
|
120
|
+
sample: 'player_resurrection.wav'
|
121
|
+
}
|
122
|
+
|
123
|
+
self.add :player_travel, {
|
124
|
+
synth: [
|
125
|
+
{ s1: '16:C4' },
|
126
|
+
{ s1: '16:D4' },
|
127
|
+
{ s1: '16:E4' }
|
128
|
+
],
|
129
|
+
sample: 'player_travel.wav'
|
130
|
+
}
|
131
|
+
|
132
|
+
self.add :uncover_secret, {
|
133
|
+
synth: [
|
134
|
+
{ s1: '8:F5' },
|
135
|
+
{ s1: '8:E5' },
|
136
|
+
{ s1: '8:C#4' },
|
137
|
+
{ s1: '8:C4' },
|
138
|
+
{ s1: '8:D#5' },
|
139
|
+
{ s1: '8:F#5' },
|
140
|
+
{ s1: '8:A5' }
|
141
|
+
],
|
142
|
+
sample: 'uncover_secret.wav'
|
143
|
+
}
|
144
|
+
|
145
|
+
self.add :win_game, {
|
146
|
+
synth: [
|
147
|
+
{ s1: '4:G3' },
|
148
|
+
{ s1: '16:A3' },
|
149
|
+
{ s1: '16:B3' },
|
150
|
+
{ s1: '16:C4' },
|
151
|
+
{ s1: '4:D4' },
|
152
|
+
{ s1: '16:E4' },
|
153
|
+
{ s1: '16:F#4' },
|
154
|
+
{ s1: '16:G4' },
|
155
|
+
{ s1: '4:A4' },
|
156
|
+
{ s1: '16:B4' },
|
157
|
+
{ s1: '16:C5' },
|
158
|
+
{ s1: '16:D5' },
|
159
|
+
{ s1: '16:E5' },
|
160
|
+
{ s1: '16:F#5' },
|
161
|
+
{ s1: '1:G5' }
|
162
|
+
],
|
163
|
+
sample: 'win_game.wav'
|
164
|
+
}
|
165
|
+
end
|
166
|
+
end
|
data/lib/gemwarrior/repl.rb
CHANGED
@@ -203,9 +203,17 @@ module Gemwarrior
|
|
203
203
|
print ' (2) FEEP '
|
204
204
|
print '(SELECTED)'.colorize(:yellow) if GameOptions.data['sound_system'].eql?('feep')
|
205
205
|
print "\n"
|
206
|
+
print ' (3) BLOOPS '
|
207
|
+
print '(SELECTED)'.colorize(:yellow) if GameOptions.data['sound_system'].eql?('bloops')
|
208
|
+
print "\n"
|
209
|
+
puts
|
210
|
+
puts ' WIN32-SOUND : good quality; Windows-only'
|
211
|
+
puts ' FEEP : cross-platform; VERY SLOW and BUGGY'
|
212
|
+
puts ' BLOOPS : cross-platform; requires portaudio'
|
206
213
|
puts
|
207
|
-
puts '
|
208
|
-
puts '
|
214
|
+
puts ' NOTE: none of these are required dependencies anymore, as sound is optional.'
|
215
|
+
puts ' If you do not have the one selected installed on your machine, you will get '
|
216
|
+
puts ' an error on game load, and no sound will be heard.'
|
209
217
|
puts
|
210
218
|
puts '================================='.colorize(:yellow)
|
211
219
|
puts
|
@@ -221,6 +229,9 @@ module Gemwarrior
|
|
221
229
|
when '2'
|
222
230
|
GameOptions.add 'sound_system', 'feep'
|
223
231
|
print_options_sound_sytem
|
232
|
+
when '3'
|
233
|
+
GameOptions.add 'sound_system', 'bloops'
|
234
|
+
print_options_sound_sytem
|
224
235
|
else
|
225
236
|
return
|
226
237
|
end
|
@@ -493,6 +504,7 @@ module Gemwarrior
|
|
493
504
|
|
494
505
|
# main menu loop until new game or exit
|
495
506
|
if new_skip
|
507
|
+
print_errors
|
496
508
|
play_intro_tune
|
497
509
|
print_splash_message
|
498
510
|
print_fortune
|
@@ -501,6 +513,7 @@ module Gemwarrior
|
|
501
513
|
if result.nil?
|
502
514
|
run_main_menu
|
503
515
|
else
|
516
|
+
print_errors
|
504
517
|
self.world = result
|
505
518
|
self.evaluator = Evaluator.new(self.world)
|
506
519
|
end
|
@@ -513,6 +526,12 @@ module Gemwarrior
|
|
513
526
|
puts evaluator.parse(extra_command) unless extra_command.nil?
|
514
527
|
end
|
515
528
|
|
529
|
+
def print_errors
|
530
|
+
if GameOptions.data['errors']
|
531
|
+
puts GameOptions.data['errors'].colorize(:red)
|
532
|
+
end
|
533
|
+
end
|
534
|
+
|
516
535
|
def play_intro_tune
|
517
536
|
Audio.play_synth(:intro)
|
518
537
|
end
|
data/lib/gemwarrior/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemwarrior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Chadwick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|
@@ -100,34 +100,6 @@ dependencies:
|
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: 0.1.6
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: win32-sound
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.6.0
|
110
|
-
type: :runtime
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: 0.6.0
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: feep
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - "~>"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 0.1.3
|
124
|
-
type: :runtime
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - "~>"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: 0.1.3
|
131
103
|
- !ruby/object:Gem::Dependency
|
132
104
|
name: gems
|
133
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -354,6 +326,7 @@ files:
|
|
354
326
|
- lib/gemwarrior/misc/animation.rb
|
355
327
|
- lib/gemwarrior/misc/audio.rb
|
356
328
|
- lib/gemwarrior/misc/audio_cues.rb
|
329
|
+
- lib/gemwarrior/misc/bloops_cues.rb
|
357
330
|
- lib/gemwarrior/misc/formatting.rb
|
358
331
|
- lib/gemwarrior/misc/hr.rb
|
359
332
|
- lib/gemwarrior/misc/musical_notes.rb
|