ScummVM API documentation
runtime_defines.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef AGS_ENGINE_AC_RUNTIME_DEFINES_H
23#define AGS_ENGINE_AC_RUNTIME_DEFINES_H
24
25#include "ags/shared/ac/common_defines.h"
26
27namespace AGS3 {
28
29// xalleg.h pulls in an Allegro-internal definition of MAX_TIMERS which
30// conflicts with the definition in runtime_defines.h. Forget it.
31#ifdef MAX_TIMERS
32#undef MAX_TIMERS
33#endif
34
35// Max old-style script string length
36#define MAX_MAXSTRLEN 200
37#define MAXGLOBALVARS 50
38
39#define INVALID_X 30000
40#define MAXGSVALUES 500
41#define MAXGLOBALSTRINGS 51
42#define MAX_INVORDER 500
43#define DIALOG_NONE 0
44#define DIALOG_RUNNING 1
45#define DIALOG_STOP 2
46#define DIALOG_NEWROOM 100
47#define DIALOG_NEWTOPIC 12000
48#define MAX_TIMERS 21
49#define MAX_PARSED_WORDS 15
50// how many saves may be listed at once
51#define MAXSAVEGAMES 50
52// topmost save index to be listed with a FillSaveGameList command
53// NOTE: changing this may theoretically affect older games which
54// use slots > 99 for special purposes!
55#define TOP_LISTEDSAVESLOT 99
56#define MAX_QUEUED_MUSIC 10
57#define GLED_INTERACTION 1
58#define GLED_EFFECTS 2
59#define QUEUED_MUSIC_REPEAT 10000
60#define MAX_AUDIO_TYPES 30
61
62// Legacy (pre 3.5.0) alignment types used in the script API
63enum LegacyScriptAlignment {
64 kLegacyScAlignLeft = 1,
65 kLegacyScAlignCentre = 2,
66 kLegacyScAlignRight = 3
67};
68
69const int LegacyMusicMasterVolumeAdjustment = 60;
70const int LegacyRoomVolumeFactor = 30;
71
72// Common command arguments
73// HISTORICAL NOTE: These numbers were chosen arbitrarily -- the idea is
74// to make sure that the user gets the parameters the right way round
75// Walk (pathfinding) modes
76#define ANYWHERE 304
77#define WALKABLE_AREAS 305
78// Blocking / non-blocking action
79#define BLOCKING 919
80#define IN_BACKGROUND 920
81// Direction of animation
82#define FORWARDS 1062
83#define BACKWARDS 1063
84// Stop / don't stop when changing a view
85#define STOP_MOVING 1
86#define KEEP_MOVING 0
87
88#define SCR_NO_VALUE 31998
89#define SCR_COLOR_TRANSPARENT -1
90
91
92#define TXT_SCOREBAR 29
93#define MAXSCORE _GP(play).totalscore
94
95#define FONT_STATUSBAR 0
96#define FONT_NORMAL _GP(play).normal_font
97//#define FONT_SPEECHBACK 1
98#define FONT_SPEECH _GP(play).speech_font
99
100// Standard interaction verbs (aka cursor modes)
101#define MODE_NONE -1
102#define MODE_WALK 0
103#define MODE_LOOK 1
104#define MODE_HAND 2
105#define MODE_TALK 3
106#define MODE_USE 4
107#define MODE_PICKUP 5
108// aka MODE_POINTER
109#define CURS_ARROW 6
110// aka MODE_WAIT
111#define CURS_WAIT 7
112#define MODE_CUSTOM1 8
113#define MODE_CUSTOM2 9
114#define NUM_STANDARD_VERBS 10
115
116// Fixed Overlay IDs
117#define OVER_TEXTMSG 1
118#define OVER_COMPLETE 2
119#define OVER_PICTURE 3
120#define OVER_TEXTSPEECH 4
121#define OVER_FIRSTFREE 5
122#define OVER_CUSTOM -1
123// Overlay parameters
124#define OVR_AUTOPLACE 30000
125
126#define FOR_ANIMATION 1
127#define FOR_SCRIPT 2
128#define FOR_EXITLOOP 3
129
130// an actsps index offset for characters
131#define ACTSP_OBJSOFF (MAX_ROOM_OBJECTS)
132// a 1-based movelist index offset for characters
133#define CHMLSOFFS (1 + MAX_ROOM_OBJECTS)
134#define MAX_SCRIPT_AT_ONCE 10
135#define EVENT_NONE 0
136#define EVENT_INPROGRESS 1
137#define EVENT_CLAIMED 2
138
139// Internal skip style flags, for speech/display, wait;
140 // theoretically correspond to InputType in script (with a 24-bit shift)
141#define SKIP_NONE 0x00
142#define SKIP_AUTOTIMER 0x01
143#define SKIP_KEYPRESS 0x02
144#define SKIP_MOUSECLICK 0x04
145// Bit shift for packing skip type into result
146#define SKIP_RESULT_TYPE_SHIFT 24
147// Bit mask for packing skip key/button data into result
148#define SKIP_RESULT_DATA_MASK 0x00FFFFFF
149
150// The index base for characters, used in legacy AnimateObject script function;
151// if passed ID is eq or gt than this, then a Character is animated instead
152#define LEGACY_ANIMATE_CHARIDBASE 100
153
154#define STD_BUFFER_SIZE 3000
155
156// NOTE: these flags are merged with the MoveList index;
157// but this means that the number of MoveList users will be limited by 1000
158#define TURNING_AROUND 1000
159#define TURNING_BACKWARDS 10000
160
161#define LOCTYPE_HOTSPOT 1
162#define LOCTYPE_CHAR 2
163#define LOCTYPE_OBJ 3
164
165#define MAX_DYNAMIC_SURFACES 20
166
167#define RESTART_POINT_SAVE_GAME_NUMBER 999
168
169#define MAX_OPEN_SCRIPT_FILES 10
170
171#define RETURN_CONTINUE 1
172
173} // namespace AGS3
174
175#endif