summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/MovieSettings.py43
1 files changed, 34 insertions, 9 deletions
diff --git a/tools/MovieSettings.py b/tools/MovieSettings.py
index 1269e5c..d9f9ca0 100644
--- a/tools/MovieSettings.py
+++ b/tools/MovieSettings.py
@@ -4,15 +4,21 @@ class Settings(object):
class Banner(object):
def __init__(self, name):
self.name = name
- self.sounds = []
+ self.commands = []
- def add_sound(self, delay, sound_id):
- self.sounds.append((delay, sound_id))
+ def play_sound(self, delay, sound_id):
+ self.commands.append((1, delay, sound_id))
+
+ def play_looping_sound(self, handle_id, delay, sound_id):
+ self.commands.append((2, handle_id, delay, sound_id))
+
+ def stop_looping_sound(self, handle_id, delay, frame_count):
+ self.commands.append((3, handle_id, delay, frame_count))
def __init__(self, widescreen):
self.banners = []
self.widescreen = widescreen
-
+
def add_banner(self, name):
b = self.Banner(name)
self.banners.append(b)
@@ -29,13 +35,29 @@ class Settings(object):
banner_offsets.append(offset)
b_header1 = 'xxxx' # will be replaced later
- b_header2 = struct.pack('>bxxxI', 1 if self.widescreen else 0, len(b.sounds))
- b_sounds = map(lambda x: struct.pack('>II', *x), b.sounds)
-
- offset += 12 + (len(b_sounds) * 8)
+ b_header2 = struct.pack('>bxxxI', 1 if self.widescreen else 0, len(b.commands))
+ b_commands = []
+ b_commands_size = 0
+
+ for cmd in b.commands:
+ ctype = cmd[0]
+ if ctype == 1:
+ # Play Sound
+ b_commands.append(struct.pack('>III', 1, cmd[1], cmd[2]))
+ b_commands_size += 12
+ elif ctype == 2:
+ # Play Looping Sound
+ b_commands.append(struct.pack('>IIII', 2, cmd[1], cmd[2], cmd[3]))
+ b_commands_size += 16
+ elif ctype == 3:
+ # Stop Looping Sound
+ b_commands.append(struct.pack('>IIII', 3, cmd[1], cmd[2], cmd[3]))
+ b_commands_size += 16
+
+ offset += 12 + b_commands_size
b_data = [b_header1, b_header2]
- b_data.extend(b_sounds)
+ b_data.extend(b_commands)
banner_data.append(b_data)
# now build a string table
@@ -68,6 +90,9 @@ class Settings(object):
s = Settings(widescreen=False)
b = s.add_banner('/CS/Opening1.arc')
+b.play_sound(delay=10, sound_id=740)
+b.play_looping_sound(handle_id=0, delay=100, sound_id=500)
+b.stop_looping_sound(handle_id=0, delay=1000, frame_count=15)
b = s.add_banner('/CS/Opening3.arc')
b = s.add_banner('/CS/Opening4.arc')
b = s.add_banner('/CS/Opening5.arc')