scummvm/engines/zvision/actions.h
richiesams 7644e00bf3 ZVISION: Convert ResultActions to take a String pointer in their constructors
There's no point in copying the String since it's just being parsed
2013-08-04 13:32:24 -05:00

193 lines
3.8 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef ZVISION_RESULT_ACTION_H
#define ZVISION_RESULT_ACTION_H
#include "common/scummsys.h"
#include "common/str.h"
namespace ZVision {
// Forward declaration of ZVision. This file is included before ZVision is declared
class ZVision;
class ResultAction {
public:
virtual ~ResultAction() {}
virtual bool execute(ZVision *engine) = 0;
};
// The different types of actions
// CROSSFADE,
// DEBUG,
// DELAY_RENDER,
// DISABLE_CONTROL,
// DISABLE_VENUS,
// DISPLAY_MESSAGE,
// DISSOLVE,
// DISTORT,
// ENABLE_CONTROL,
// FLUSH_MOUSE_EVENTS,
// INVENTORY,
// KILL,
// MENU_BAR_ENABLE,
// MUSIC,
// PAN_TRACK,
// PLAY_PRELOAD,
// PREFERENCES,
// QUIT,
// RANDOM,
// REGION,
// RESTORE_GAME,
// ROTATE_TO,
// SAVE_GAME,
// SET_PARTIAL_SCREEN,
// SET_SCREEN,
// SET_VENUS,
// STOP,
// STREAM_VIDEO,
// SYNC_SOUND,
// TTY_TEXT,
// UNIVERSE_MUSIC,
class ActionAdd : public ResultAction {
public:
ActionAdd(Common::String *line);
bool execute(ZVision *engine);
private:
uint32 _key;
byte _value;
};
class ActionAssign : public ResultAction {
public:
ActionAssign(Common::String *line);
bool execute(ZVision *engine);
private:
uint32 _key;
byte _value;
};
class ActionAttenuate : public ResultAction {
public:
ActionAttenuate(Common::String *line);
bool execute(ZVision *engine);
private:
uint32 _key;
int16 _attenuation;
};
class ActionChangeLocation : public ResultAction {
public:
ActionChangeLocation(Common::String *line);
bool execute(ZVision *engine);
private:
char _world;
char _room;
char _nodeview[2];
int16 _x;
};
class ActionCrossfade : public ResultAction {
public:
ActionCrossfade(Common::String *line);
bool execute(ZVision *engine);
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 *engine);
private:
uint32 _key;
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 *engine);
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 *engine);
//};
class ActionRandom : public ResultAction {
public:
ActionRandom(Common::String *line);
bool execute(ZVision *engine);
private:
uint32 _key;
uint32 _max;
};
class ActionTimer : public ResultAction {
public:
ActionTimer(Common::String *line);
bool execute(ZVision *engine);
private:
uint32 _key;
uint32 _time;
};
} // End of namespace ZVision
#endif