ScummVM API documentation
room113.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_ROOM113_H
23#define MADS_PHANTOM_ROOM113_H
24
25#include "mads/phantom/rooms/section1.h"
26#include "mads/phantom/global.h"
27
28namespace MADS {
29namespace Phantom {
30namespace Rooms {
31
32#define local (&scratch)
33#define ss local->sprite
34#define seq local->sequence
35#define aa local->animation
36
37struct Scratch { /* Room local variables */
38
39 int16 sprite[15]; /* Sprite series handles */
40 int16 sequence[15]; /* Sequence handles */
41 int16 animation[5]; /* Animation handles [0=Daae, 1=Raoul13/Raoul4's */
42 /* proxy, 2=Florent, 3=Raoul4, 4=Julie] */
43
44 int16 chris_daae_dynamic; /* Dynamic HS for Christine (love scene) */
45 int16 chris_flor_dynamic; /* Dynamic HS for Christine/Florent (1993) */
46
47 int16 standing_talking; /* T once Daae & Raoul are standing face-to-face */
48 int16 day_wants_to_talk; /* T if Daae should start talking at next idle pt */
49 int16 music_is_playing; /* T once angel music has been triggered */
50 int16 right_after_kiss; /* T once kiss frame (165) has been reached */
51 int16 anim_0_running; /* T if Daae animation is active */
52 int16 anim_1_running; /* T if Raoul-13 animation is active */
53 int16 anim_2_running; /* T if Florent animation is active */
54 int16 anim_3_running; /* T if Raoul-4 animation is active */
55 int16 anim_4_running; /* T if Julie animation is active */
56 int16 prevent_1; /* Prevent first-time code from repeating */
57 int16 prevent_2; /* Prevent first-time code from repeating */
58 int16 raoul_is_up; /* T once Raoul has stood up from couch */
59 int16 arms_are_out; /* T once Daae has arms outstretched (frame 95) */
60
61 int16 day_frame;
62 int16 day_action;
63 int16 day_talk_count;
64 int16 stand_talk_count;
65 int16 florent_frame;
66 int16 florent_action;
67 int16 florent_talk_count;
68 int16 raoul_frame;
69 int16 raoul_action;
70 int16 raoul_talk_count;
71 int16 julie_frame;
72 int16 julie_action;
73 int16 julie_talk_count;
74 int16 just_did_option;
75
76};
77
78
79/* ========================= Sprite Series ========================= */
80
81#define fx_1993 0 /* rm113z (1993 overlay backdrop) */
82#define fx_dress 1 /* rm113f0 (Florent/Christine dress) */
83#define fx_small_note 2 /* rm113f1 (note sprite) */
84#define fx_corpse 3 /* rm113c3 (dead Florent) */
85#define fx_face_1 4 /* *faceral (1881 only) */
86#define fx_face_2 5 /* *facecrsd (1881 only) */
87
88
89/* ========================= Conversations ========================= */
90
91#define CONV_LOVE_SCENE 13
92#define CONV_FLORENT 4
93#define CONV_FLORENT_DEAD 6
94
95/* Conv 4 (Florent) — Florent action states */
96#define CONV4_FLORENT_TALK 0
97#define CONV4_FLORENT_SHUT_UP 1
98#define CONV4_FLORENT_POINT 2
99#define CONV4_FLORENT_HOLD_HAND 3
100
101/* Conv 4 (Florent) — Raoul action states */
102#define CONV4_RAOUL_TALK 0
103#define CONV4_RAOUL_SHUT_UP 1
104#define CONV4_RAOUL_INVISIBLE 3
105#define CONV4_RAOUL_GET_UP 4
106#define CONV4_RAOUL_TAKE_NOTE 5
107#define CONV4_RAOUL_CHIN 2
108
109/* Conv 6 (Julie/dead Florent) — Julie action states */
110#define CONV6_JULIE_TALK 0
111#define CONV6_JULIE_CRY 1
112
113/* Conv 13 (love scene) — Daae action states */
114#define CONV13_DAY_MIRROR 2 //0
115#define CONV13_DAY_TALK 0 //1
116#define CONV13_DAY_GET_READY_TALK 1 //2
117#define CONV13_DAY_WAVE 3 //3
118#define CONV13_DAY_STAND_TALK 5 //4
119#define CONV13_DAY_STAND_SHUT_UP 6 //5
120#define CONV13_BOTH_SHUT_UP 7 //6
121#define CONV13_DAY_GET_UP 4 //7
122
123/* Conv 13 (love scene) — Raoul action states */
124#define CONV13_RAOUL_INVISIBLE 3 //0
125#define CONV13_RAOUL_SHUT_UP 1 //1
126#define CONV13_RAOUL_TALK 0 //2
127#define CONV13_RAOUL_CHIN 2 //3
128
129
130/* ========================= Triggers ============================== */
131
132/* Daemon triggers */
133#define ROOM_113_BY_MIRROR 57
134#define ROOM_113_AT_CORPSE 59
135#define ROOM_113_AT_DRESSER 61
136#define ROOM_113_WAIT_FOR_FADE_IN 110
137
138/* Process_conversation_dead triggers */
139#define ROOM_113_JULIE_START_TALKING 63
140#define ROOM_113_JULIE_STOP_TALKING 65
141
142/* Process_conversation_florent triggers */
143#define ROOM_113_RAOUL_START_TALKING 62
144#define ROOM_113_FLORENT_START_TALKING2 66
145#define ROOM_113_FLORENT_START_TALKING 66
146#define ROOM_113_MADE_IT_TO_FLORENT 94
147#define ROOM_113_AT_COUCH 80
148#define ROOM_113_BEFORE_COUCH 82
149#define ROOM_113_BETWEEN_COUCH 84
150#define ROOM_113_TAKE_NOTE 86
151#define ROOM_113_DELAY_BEFORE_WALK 92
152#define ROOM_113_PUT_ON_HOLD 96
153#define ROOM_113_HOLD_HAND 98
154#define ROOM_113_END_HOLD_HAND 100
155
156/* Process_conversation_love triggers */
157#define ROOM_113_CHECK_FOR_ARMS_OUT 70
158#define ROOM_113_DAY_START_TALKING 66
159#define ROOM_113_WAIT_TO_SIT 78
160#define ROOM_113_CHECK_FOR_AFTER_KISS 72
161#define ROOM_113_HOLD_OPTIONS 76
162
163
164/* ========================= Player positions ====================== */
165
166#define PLAYER_X_FROM_111 190
167#define PLAYER_Y_FROM_111 148
168
169#define PLAYER_X_AFTER_CONV13 175
170#define PLAYER_Y_AFTER_CONV13 148
171
172#define COUCH_X 201
173#define COUCH_Y 120
174
175#define MIRROR_X 272
176#define MIRROR_Y 138
177
178#define SCREEN_X 106
179#define SCREEN_Y 127
180
181#define CORPSE_X 175
182#define CORPSE_Y 128
183
184#define FLORENT_TOUCH_HAND_X 68
185#define FLORENT_TOUCH_HAND_Y 142
186
187
188/* ========================= Florent dynamic hotspot =============== */
189
190#define DYN_FLORENT_X 43
191#define DYN_FLORENT_Y 118
192#define DYN_FLORENT_X_SIZE 15
193#define DYN_FLORENT_Y_SIZE 29
194
195
196/* ========================= Misc coordinates ====================== */
197
198#define CHRIS_DEAD_X 220
199#define CHRIS_DEAD_Y 130
200
201#define LIGHT_1993_X 155
202#define LIGHT_1993_Y 17
203
204#define LIGHT_1881_X 150
205#define LIGHT_1881_Y 46
206
207#define SMALL_NUMBER_OF_TICKS 1
208
209
210extern void room_113_init();
211extern void room_113_daemon();
212extern void room_113_pre_parser();
213extern void room_113_parser();
214extern void room_113_preload();
215
216} // namespace Rooms
217} // namespace Phantom
218} // namespace MADS
219
220#endif