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
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (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, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  * Scene parsing defines
22  */
23 
24 #ifndef	TINSEL_SCENE_H
25 #define	TINSEL_SCENE_H
26 
27 #include "tinsel/dw.h"
28 #include "tinsel/events.h"
29 
30 namespace Tinsel {
31 
32 enum {
33 	MAX_NODES		= 32,	///< maximum nodes in a Node Path
34 	MAX_NOSCROLL	= 16,	///< maximum number of NoScroll commands in a scene
35 	MAX_ENTRANCE	= 25,	///< maximum number of entrances in a scene
36 	MAX_POLY		= 256,	///< maximum number of polygons in a scene
37 	MAX_ACTOR		= 32	///< maximum number of actors in a scene
38 };
39 
40 // ENTRANCE_STRUC bitflags
41 enum ENTRANCE_FLAGS {
42 	fCall = 0x00000001L,
43 	fHook = 0x00000002L
44 };
45 
46 /** reference direction */
47 enum REFTYPE {
48 	REF_DEFAULT, REF_UP, REF_DOWN, REF_LEFT, REF_RIGHT, REF_POINT
49 };
50 
51 enum TFTYPE {
52 	TF_NONE, TF_UP, TF_DOWN, TF_LEFT, TF_RIGHT, TF_FILM
53 };
54 
55 /** different actor masks */
56 enum MASK_TYPE{
57 	ACT_DEFAULT,
58 	ACT_MASK = -1,
59 	ACT_ALWAYS = -2
60 };
61 
62 /** different scales */
63 enum SCALE {
64 	SCALE_DEFAULT, SCALE_LARGE, SCALE_MEDIUM, SCALE_SMALL,
65 	SCALE_COMPACT, SCALE_TINY,
66 	SCALE_AUX1, SCALE_AUX2, SCALE_AUX3,
67 	SCALE_AUX4, SCALE_AUX5
68 };
69 
70 /** different reels */
71 enum REEL {
72 	REEL_DEFAULT, REEL_ALL, REEL_HORIZ, REEL_VERT
73 };
74 
75 typedef enum { TRANS_DEF, TRANS_CUT, TRANS_FADE } TRANSITS;
76 
77 // amount to shift scene handles by
78 #define	SCNHANDLE_SHIFT ((TinselV2 && !TinselV2Demo) ? 25 : 23)
79 #define	OFFSETMASK ((TinselV2 && !TinselV2Demo) ? 0x01ffffffL : 0x007fffffL)
80 #define HANDLEMASK ((TinselV2 && !TinselV2Demo) ? 0xFE000000L : 0xFF800000L)
81 
82 void DoHailScene(SCNHANDLE scene);
83 
84 void WrapScene();
85 
86 void StartNewScene(SCNHANDLE scene, int entry);
87 
88 void EndScene();
89 
90 void SendSceneTinselProcess(TINSEL_EVENT event);
91 
92 } // End of namespace Tinsel
93 
94 #endif	// TINSEL_SCENE_H
95