aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision
diff options
context:
space:
mode:
Diffstat (limited to 'engines/zvision')
-rw-r--r--engines/zvision/result_action.cpp93
-rw-r--r--engines/zvision/result_action.h93
2 files changed, 169 insertions, 17 deletions
diff --git a/engines/zvision/result_action.cpp b/engines/zvision/result_action.cpp
index 4721c5bd61..c61fcca398 100644
--- a/engines/zvision/result_action.cpp
+++ b/engines/zvision/result_action.cpp
@@ -27,6 +27,7 @@
namespace ZVision {
+//////////////////////////////////////////////////////////////////////////////
// ActionAdd
//////////////////////////////////////////////////////////////////////////////
@@ -40,6 +41,7 @@ bool ActionAdd::execute(ZVision *zVision) {
}
+//////////////////////////////////////////////////////////////////////////////
// ActionAssign
//////////////////////////////////////////////////////////////////////////////
@@ -53,6 +55,83 @@ bool ActionAssign::execute(ZVision *zVision) {
}
+//////////////////////////////////////////////////////////////////////////////
+// ActionAttenuate
+//////////////////////////////////////////////////////////////////////////////
+
+ActionAttenuate::ActionAttenuate(Common::String line) {
+ sscanf(line.c_str(), ":assign(%u, %hd)", &_key, &_attenuation);
+}
+
+bool ActionAttenuate::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ActionChangeLocation
+//////////////////////////////////////////////////////////////////////////////
+
+ActionChangeLocation::ActionChangeLocation(Common::String line) {
+ sscanf(line.c_str(), ":change_location(%c,%c,%2c,%hu)", &_world, &_room, &_nodeview, &_x);
+}
+
+bool ActionChangeLocation::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ActionCrossfade
+//////////////////////////////////////////////////////////////////////////////
+
+ActionCrossfade::ActionCrossfade(Common::String line) {
+ sscanf(line.c_str(),
+ ":crossfade(%u %u %hhu %hhu %hhu %hhu %hu)",
+ &_keyOne, &_keyTwo, &_oneStartVolume, &_twoStartVolume, &_oneEndVolume, &_twoEndVolume, &_timeInMillis);
+}
+
+bool ActionCrossfade::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ActionPreloadAnimation
+//////////////////////////////////////////////////////////////////////////////
+
+ActionPreloadAnimation::ActionPreloadAnimation(Common::String line) {
+ // The two %*hhu are always 0 and dont seem to have a use
+ sscanf(line.c_str(), ":animpreload:%u(%s %*hhu %*hhu %u %hhu)", &_key, &_fileName, &_mask, &_framerate);
+}
+
+bool ActionPreloadAnimation::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ActionPlayAnimation
+//////////////////////////////////////////////////////////////////////////////
+
+ActionPlayAnimation::ActionPlayAnimation(Common::String line) {
+ // The two %*hhu are always 0 and dont seem to have a use
+ sscanf(line.c_str(),
+ ":animplay:%u(%s %u %u %u %u %u %u %hhu %*hhu %*hhu %u %hhu)",
+ &_key, &_x, &_y, &_width, &_height, &_start, &_end, &_loop, &_mask, &_framerate);
+}
+
+bool ActionPlayAnimation::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
// ActionRandom
//////////////////////////////////////////////////////////////////////////////
@@ -66,4 +145,18 @@ bool ActionRandom::execute(ZVision *zVision) {
return true;
}
+
+//////////////////////////////////////////////////////////////////////////////
+// ActionTimer
+//////////////////////////////////////////////////////////////////////////////
+
+ActionTimer::ActionTimer(Common::String line) {
+ sscanf(line.c_str(), ":timer:%u(%hu)", &_key, &_time);
+}
+
+bool ActionTimer::execute(ZVision *zVision) {
+ // TODO: Implement
+ return true;
+}
+
} // End of namespace ZVision
diff --git a/engines/zvision/result_action.h b/engines/zvision/result_action.h
index fbf8e7f019..a58ef68e34 100644
--- a/engines/zvision/result_action.h
+++ b/engines/zvision/result_action.h
@@ -40,13 +40,6 @@ public:
// The different types of actions
-// ADD,
-// ANIM_PLAY,
-// ANIM_PRELOAD,
-// ANIM_UNLOAD,
-// ATTENUATE,
-// ASSIGN,
-// CHANGE_LOCATION,
// CROSSFADE,
// DEBUG,
// DELAY_RENDER,
@@ -76,7 +69,6 @@ public:
// STOP,
// STREAM_VIDEO,
// SYNC_SOUND,
-// TIMER,
// TTY_TEXT,
// UNIVERSE_MUSIC,
@@ -90,34 +82,91 @@ private:
byte _value;
};
-class ActionPlayAnimation : public ResultAction {
+class ActionAssign : public ResultAction {
public:
- ActionPlayAnimation(Common::String line);
+ ActionAssign(Common::String line);
bool execute(ZVision *zVision);
+
+private:
+ uint32 _key;
+ byte _value;
};
-class ActionPreloadAnimation : public ResultAction {
+class ActionAttenuate : public ResultAction {
public:
- ActionPreloadAnimation(Common::String line);
+ ActionAttenuate(Common::String line);
bool execute(ZVision *zVision);
+
+private:
+ uint32 _key;
+ int16 _attenuation;
};
-class ActionAttenuate : public ResultAction {
+class ActionChangeLocation : public ResultAction {
public:
- ActionAttenuate(Common::String line);
+ ActionChangeLocation(Common::String line);
bool execute(ZVision *zVision);
+
+private:
+ char _world;
+ char _room;
+ char _nodeview[2];
+ int16 _x;
};
-class ActionAssign : public ResultAction {
+class ActionCrossfade : public ResultAction {
public:
- ActionAssign(Common::String line);
+ ActionCrossfade(Common::String line);
+ bool execute(ZVision *zVision);
+
+private:
+ uint32 _keyOne;
+ uint32 _keyTwo;
+ byte _oneStartVolume;
+ byte _twoStartVolume;
+ byte _oneEndVolume;
+ byte _twoEndVolume;
+ uint16 _timeInMillis;
+};
+
+class ActionPlayAnimation : public ResultAction {
+public:
+ ActionPlayAnimation(Common::String line);
bool execute(ZVision *zVision);
private:
uint32 _key;
- byte _value;
+ Common::String _fileName;
+ uint32 _x;
+ uint32 _y;
+ uint32 _width;
+ uint32 _height;
+ uint32 _start;
+ uint32 _end;
+ uint32 _mask;
+ byte _framerate;
+ bool _loop;
};
+class ActionPreloadAnimation : public ResultAction {
+public:
+ ActionPreloadAnimation(Common::String line);
+ bool execute(ZVision *zVision);
+
+private:
+ uint32 _key;
+ Common::String _fileName;
+ uint32 _mask;
+ byte _framerate;
+};
+
+// TODO: See if this exists in ZGI. It doesn't in ZNem
+//class ActionUnloadAnimation : public ResultAction {
+//public:
+// ActionUnloadAnimation(Common::String line);
+// bool execute(ZVision *zVision);
+//};
+
class ActionRandom : public ResultAction {
public:
ActionRandom(Common::String line);
@@ -128,6 +177,16 @@ private:
uint32 _max;
};
+class ActionTimer : public ResultAction {
+public:
+ ActionTimer(Common::String line);
+ bool execute(ZVision *zVision);
+
+private:
+ uint32 _key;
+ uint32 _time;
+};
+
} // End of namespace ZVision
#endif