aboutsummaryrefslogtreecommitdiff
path: root/engines/access/scripts.h
blob: d78b74840d17b171fb9e51f660be6d53c8830650 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* 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 ACCESS_SCRIPTS_H
#define ACCESS_SCRIPTS_H

#include "common/scummsys.h"

namespace Access {

class AccessEngine;
class Scripts;

typedef void(Scripts::*ScriptMethodPtr)(const byte *&pScript);

class Scripts {
protected:
	AccessEngine *_vm;

	virtual void executeCommand(int commandIndex, const byte *&pScript);
	void CMDOBJECT(const byte *&pScript);
	void CMDENDOBJECT(const byte *&pScript);
	void cmdJumpLook(const byte *&pScript);
	void cmdJumpHelp(const byte *&pScript);
	void cmdJumpGet(const byte *&pScript);
	void cmdJumpMove(const byte *&pScript);
	void cmdJumpUse(const byte *&pScript);
	void cmdJumpTalk(const byte *&pScript);
	void cmdNull(const byte *&pScript);
	void CMDPRINT(const byte *&pScript);
	void cmdRetPos(const byte *&pScript);
	void CMDANIM(const byte *&pScript);
	void cmdSetFlag(const byte *&pScript);
	void CMDCHECKFLAG(const byte *&pScript);
	
	/**
	 * Jump to another script
	 */
	void cmdGoto(const byte *&pScript);
	
	void CMDSETINV(const byte *&pScript);
	void CMDCHECKINV(const byte *&pScript);
	void CMDSETTEX(const byte *&pScript);
	void CMDNEWROOM(const byte *&pScript);
	void CMDCONVERSE(const byte *&pScript);
	void CMDCHECKFRAME(const byte *&pScript);
	void CMDCHECKANIM(const byte *&pScript);
	void CMDSND(const byte *&pScript);
	void CMDRETNEG(const byte *&pScript);
	void cmdCheckLoc(const byte *&pScript);
	void cmdSetAnim(const byte *&pScript);
	void CMDDISPINV(const byte *&pScript);
	void CMDSETTIMER(const byte *&pScript);
	void CMDCHECKTIMER(const byte *&pScript);
	void CMDSETTRAVEL(const byte *&pScript);
	void CMDSETVID(const byte *&pScript);
	void CMDPLAYVID(const byte *&pScript);
	void CMDPLOTIMAGE(const byte *&pScript);
	void CMDSETDISPLAY(const byte *&pScript);
	void CMDSETBUFFER(const byte *&pScript);
	void CMDSETSCROLL(const byte *&pScript);
	void CMDSAVERECT(const byte *&pScript);
	void CMDSETBUFVID(const byte *&pScript);
	void CMDPLAYBUFVID(const byte *&pScript);
	void CMDREMOVELAST(const byte *&pScript);
	void CMDSPECIAL(const byte *&pScript);
	void CMDSETCYCLE(const byte *&pScript);
	void CMDCYCLE(const byte *&pScript);
	void CMDCHARSPEAK(const byte *&pScript);
	void CMDTEXSPEAK(const byte *&pScript);
	void CMDTEXCHOICE(const byte *&pScript);
	void CMDWAIT(const byte *&pScript);
	void CMDSETCONPOS(const byte *&pScript);
	void CMDCHECKVFRAME(const byte *&pScript);
	void CMDJUMPCHOICE(const byte *&pScript);
	void CMDRETURNCHOICE(const byte *&pScript);
	void CMDCLEARBLOCK(const byte *&pScript);
	void CMDLOADSOUND(const byte *&pScript);
	void CMDFREESOUND(const byte *&pScript);
	void CMDSETVIDSND(const byte *&pScript);
	void CMDPLAYVIDSND(const byte *&pScript);
	void CMDPUSHLOCATION(const byte *&pScript);
	void cmdPlayerOff(const byte *&pScript);
	void cmdPlayerOn(const byte *&pScript);
	void CMDDEAD(const byte *&pScript);
	void CMDFADEOUT(const byte *&pScript);
	void CMDENDVID(const byte *&pScript);
	void CMDHELP(const byte *&pScript);
	void CMDCYCLEBACK(const byte *&pScript);
	void CMDCHAPTER(const byte *&pScript);
	void CMDSETHELP(const byte *&pScript);
	void CMDCENTERPANEL(const byte *&pScript);
	void cmdMainPanel(const byte *&pScript);
	void CMDRETFLASH(const byte *&pScript);
public:
	const byte *_script;
	const byte *_scriptLoc;
	int _sequence;
	bool _endFlag;
	int _returnCode;
	int _scriptCommand;
public:
	Scripts(AccessEngine *vm);

	virtual ~Scripts();

	void freeScriptData();

	const byte *searchForSequence();
	
	int executeScript();
};

} // End of namespace Access

#endif /* ACCESS_SCRIPTS_H */