aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/scripting/sidefx/music_node.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/zvision/scripting/sidefx/music_node.h')
-rw-r--r--engines/zvision/scripting/sidefx/music_node.h55
1 files changed, 54 insertions, 1 deletions
diff --git a/engines/zvision/scripting/sidefx/music_node.h b/engines/zvision/scripting/sidefx/music_node.h
index 066b8f80f4..262b13085e 100644
--- a/engines/zvision/scripting/sidefx/music_node.h
+++ b/engines/zvision/scripting/sidefx/music_node.h
@@ -32,7 +32,30 @@ class String;
}
namespace ZVision {
-class MusicNode : public SideFX {
+
+class MusicNode_BASE : public SideFX {
+public:
+ MusicNode_BASE(ZVision *engine, uint32 key, SideFXType type) : SideFX(engine, key, type) {}
+ ~MusicNode_BASE() {}
+
+ /**
+ * Decrement the timer by the delta time. If the timer is finished, set the status
+ * in _globalState and let this node be deleted
+ *
+ * @param deltaTimeInMillis The number of milliseconds that have passed since last frame
+ * @return If true, the node can be deleted after process() finishes
+ */
+ virtual bool process(uint32 deltaTimeInMillis) = 0;
+
+ virtual void setVolume(uint8 volume) = 0;
+
+ virtual void setPanTrack(int16 pos) = 0;
+ virtual void unsetPanTrack() = 0;
+
+ virtual void setFade(int32 time, uint8 target) = 0;
+};
+
+class MusicNode : public MusicNode_BASE {
public:
MusicNode(ZVision *engine, uint32 key, Common::String &file, bool loop, int8 volume);
~MusicNode();
@@ -68,6 +91,36 @@ private:
Subtitle *_sub;
};
+class MusicMidiNode : public MusicNode_BASE {
+public:
+ MusicMidiNode(ZVision *engine, uint32 key, int8 program, int8 note, int8 volume);
+ ~MusicMidiNode();
+
+ /**
+ * Decrement the timer by the delta time. If the timer is finished, set the status
+ * in _globalState and let this node be deleted
+ *
+ * @param deltaTimeInMillis The number of milliseconds that have passed since last frame
+ * @return If true, the node can be deleted after process() finishes
+ */
+ bool process(uint32 deltaTimeInMillis);
+
+ void setVolume(uint8 volume);
+
+ void setPanTrack(int16 pos);
+ void unsetPanTrack();
+
+ void setFade(int32 time, uint8 target);
+
+private:
+ int8 _chan;
+ int8 _noteNumber;
+ int8 _velocity;
+ int8 _pan;
+ int8 _volume;
+ int8 _prog;
+};
+
class PanTrackNode : public SideFX {
public:
PanTrackNode(ZVision *engine, uint32 key, uint32 slot, int16 pos);