ScummVM API documentation
room108.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 MADS_PHANTOM_ROOM108_H
23 #define MADS_PHANTOM_ROOM108_H
24 
25 #include "mads/madsv2/phantom/rooms/section1.h"
26 #include "mads/madsv2/phantom/global.h"
27 
28 namespace MADS {
29 namespace MADSV2 {
30 namespace Phantom {
31 namespace Rooms {
32 
33 #define local (&scratch)
34 #define ss local->sprite
35 #define seq local->sequence
36 #define aa local->animation
37 
38 struct Scratch { /* Room local variables */
39 
40  int16 sprite[15]; /* Sprite series handles */
41  int16 sequence[15]; /* Sequence handles */
42  int16 animation[4]; /* Animation handles */
43  int16 anim_0_running;
44 
45  int16 char_action; /* action Charles is going to perform */
46  int16 char_frame;
47  int16 char_talk_count;
48  int16 char_shut_up_count;
49  int16 dynamic_char; /* Dynamic HS for Charles */
50  int16 prev_shut_up_frame;
51  int16 max_talk_count; /* max talking count for Charles */
52  int16 did_raise_hand; /* true, when if talking, did raise hand */
53  int16 converse_counter; /* counter for talking displacements */
54 
55 };
56 
57 
58 /* ========================= Sprite Series ========================= */
59 
60 #define fx_1993 0 /* rm108z */
61 
62 
63 /* ========================= Conversation ========================== */
64 
65 #define CONV_CHARLES 2
66 
67 
68 /* ========================= Charles (Conv 2) action states ======== */
69 
70 #define CONV2_CHAR_SHUT_UP 0
71 #define CONV2_CHAR_TALK 1
72 #define CONV2_CHAR_WRITE 2
73 #define CONV2_CHAR_OH_MY 3
74 #define CONV2_CHAR_POINT_UP 4
75 #define CONV2_CHAR_BOTH_HANDS_UP 5
76 #define CONV2_CHAR_TURN_TO_RAOUL 6
77 #define CONV2_CHAR_POINT_RIGHT 7
78 
79 
80 /* ========================= Triggers ============================== */
81 
82 #define ROOM_108_CHAR_TALK 60
83 #define ROOM_108_CHAR_SHUT_UP 62
84 #define ROOM_108_CHAR_WRITE 64
85 #define ROOM_108_CHAR_BOTH_HANDS_UP 66
86 #define ROOM_108_CHAR_POINT_UP 68
87 #define ROOM_108_CHAR_POINT_RIGHT 70
88 #define ROOM_108_CHAR_OH_MY 72
89 
90 
91 /* ========================= Player positions ====================== */
92 
93 #define PLAYER_X_FROM_106 48
94 #define PLAYER_Y_FROM_106 81
95 
96 #define WALK_TO_X_FROM_106 71
97 #define WALK_TO_Y_FROM_106 76
98 
99 #define PLAYER_X_FROM_104_1 243
100 #define PLAYER_X_FROM_104_2 185
101 #define PLAYER_X_FROM_104_3 124
102 #define PLAYER_Y_FROM_104 143
103 
104 
105 /* ========================= Dynamic hotspot — stool (1993) ======== */
106 
107 #define STOOL_X 250
108 #define STOOL_Y 68
109 #define STOOL_X_SIZE 8
110 #define STOOL_Y_SIZE 21
111 #define STOOL_WALK_X 253
112 #define STOOL_WALK_Y 75
113 
114 
115 /* ========================= Dynamic hotspot — wall (1881) ========= */
116 
117 #define WALL_X 258
118 #define WALL_Y 58
119 #define WALL_X_SIZE 6
120 #define WALL_Y_SIZE 10
121 #define WALL_WALK_X 236
122 #define WALL_WALK_Y 69
123 
124 
125 /* ========================= Dynamic hotspot — Charles ============= */
126 
127 #define DYN_CHAR_X 253
128 #define DYN_CHAR_Y 52
129 #define DYN_CHAR_XS 15
130 #define DYN_CHAR_YS 34
131 #define DYN_CHAR_WALK_TO_X 235
132 #define DYN_CHAR_WALK_TO_Y 102
133 
134 
135 extern void room_108_init(void);
136 extern void room_108_daemon(void);
137 extern void room_108_parser(void);
138 extern void room_108_preload(void);
139 
140 } // namespace Rooms
141 } // namespace Phantom
142 } // namespace MADSV2
143 } // namespace MADS
144 
145 #endif
Definition: action.h:28