Initial commit
This commit is contained in:
305
engines/m4/burger/rooms/section7/room701.cpp
Normal file
305
engines/m4/burger/rooms/section7/room701.cpp
Normal file
@@ -0,0 +1,305 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/ },.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "m4/burger/rooms/section7/room701.h"
|
||||
#include "m4/burger/rooms/section7/section7.h"
|
||||
#include "m4/burger/vars.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
static const seriesStreamBreak SERIES1[] = {
|
||||
{ 0, "700Z001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 64, "700A_001", 2, 200, -1, 0, nullptr, 0 },
|
||||
{ 66, "700W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 68, "700F001", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 92, "700A_002", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 96, "700Z002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 130, "700F002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 172, "700W002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 208, "700F003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 268, "700Z003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 350, "700F004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 368, "700F005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 415, "700Z004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 476, "700F006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 527, "700F007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 565, "700W003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 601, "700F008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 769, "700Z005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 796, "700Z006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 869, "700Z007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 910, "700F009", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 945, "700Z008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 989, "700Z009", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1028, "700C001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1073, "700F010", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1085, "700F011", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1095, "700F012", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1105, "700F013", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1119, "700F014", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1145, "700F015", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1175, "700F016", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1189, "700Z010", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1227, "700Z011", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1255, "700C002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1296, "700A001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1317, "700Z012", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 1318, "700A_003", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 1335, "700A_004", 2, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES2[] = {
|
||||
{ 0, "701_002", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 2, "701Z001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 15, "700A002", 2, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES3[] = {
|
||||
{ 8, "700Z013", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 12, "700B_001", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 64, "700A003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 74, nullptr, 0, 0, 25, 0, nullptr, 0 },
|
||||
{ 121, "700Z014", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 137, "700Z015", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 181, "700W004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 226, "700Z016", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 312, "700A005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 331, "700Z017", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 356, "700Z018", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 399, "700Z018z", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 415, "700B_002", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 439, "700B_003", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 472, "700Z019", 1, 200, -1, 0, nullptr, 0 },
|
||||
{ 510, "700A006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 533, "700Z020", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 641, "700Z020z", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES4[] = {
|
||||
{ 6, "702W016", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 24, "702_001", 2, 75, -1, 0, nullptr, 0 },
|
||||
{ 30, "702_002", 2, 100, -1, 0, nullptr, 0 },
|
||||
{ 35, "702W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 55, nullptr, 0, 0, 22, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES5[] = {
|
||||
{ 0, "703W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 88, "703W002", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES6[] = {
|
||||
{ 7, "702F001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 27, "702F001z", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 67, "702F002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 95, "702_003", 2, 175, -1, 0, nullptr, 0 },
|
||||
{ 120, "702_004", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 126, "702f004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 128, "702_005", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 130, nullptr, 0, 0, 22, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES7[] = {
|
||||
{ 0, "704F001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 16, nullptr, 1, 0, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
|
||||
void Room701::preload() {
|
||||
_G(player).walker_in_this_scene = false;
|
||||
}
|
||||
|
||||
void Room701::init() {
|
||||
player_set_commands_allowed(false);
|
||||
_G(flags).set_boonsville_time(505210);
|
||||
pal_fade_set_start(0);
|
||||
pal_fade_init(0, 255, 100, 40, -1);
|
||||
digi_preload("700_001");
|
||||
digi_preload_stream_breaks(SERIES1);
|
||||
digi_preload_stream_breaks(SERIES2);
|
||||
kernel_trigger_dispatch_now(1);
|
||||
}
|
||||
|
||||
void Room701::daemon() {
|
||||
switch (_G(kernel).trigger) {
|
||||
case 1:
|
||||
digi_play_loop("700_001", 3, 50, -1, 700);
|
||||
series_stream_with_breaks(SERIES1, "700A", 6, 1, 2);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
kernel_timing_trigger(1, 23);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
pal_fade_set_start(0);
|
||||
pal_cycle_stop();
|
||||
kernel_timing_trigger(6, 3);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 4);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
series_stream_with_breaks(SERIES2, "701A", 6, 1, 5);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 6);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 7);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
digi_unload_stream_breaks(SERIES1);
|
||||
digi_unload_stream_breaks(SERIES3);
|
||||
series_stream_with_breaks(SERIES3, "700B", 6, 1, 8);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
kernel_timing_trigger(1, 24);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
pal_fade_set_start(0);
|
||||
pal_cycle_stop();
|
||||
kernel_timing_trigger(6, 9);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 10);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
digi_unload_stream_breaks(SERIES2);
|
||||
digi_unload_stream_breaks(SERIES4);
|
||||
series_stream_with_breaks(SERIES4, "702A", 6, 1, 11);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 12);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 13);
|
||||
break;
|
||||
|
||||
case 13:
|
||||
digi_unload_stream_breaks(SERIES3);
|
||||
digi_unload_stream_breaks(SERIES5);
|
||||
digi_preload_stream_breaks(SERIES6);
|
||||
series_stream_with_breaks(SERIES5, "703A", 6, 1, 14);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 14:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 15);
|
||||
break;
|
||||
|
||||
case 15:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 16);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
digi_unload_stream_breaks(SERIES4);
|
||||
series_stream_with_breaks(SERIES6, "702B", 6, 1, 17);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 17:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 18);
|
||||
break;
|
||||
|
||||
case 18:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 19);
|
||||
break;
|
||||
|
||||
case 19:
|
||||
digi_unload_stream_breaks(SERIES5);
|
||||
digi_unload_stream_breaks(SERIES6);
|
||||
digi_preload_stream_breaks(SERIES7);
|
||||
series_stream_with_breaks(SERIES7, "704A", 6, 1, 20);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 20:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 21);
|
||||
break;
|
||||
|
||||
case 21:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 26);
|
||||
break;
|
||||
|
||||
case 22:
|
||||
pal_fade_init(_G(kernel).first_fade, 255, 0, 60, -1);
|
||||
break;
|
||||
|
||||
case 23:
|
||||
pal_mirror_colours(119, 121);
|
||||
gr_pal_set_range(120, 8);
|
||||
pal_cycle_init(119, 124, 10, -1, -1);
|
||||
break;
|
||||
|
||||
case 24:
|
||||
pal_mirror_colours(120, 122);
|
||||
gr_pal_set_range(120, 8);
|
||||
pal_cycle_init(120, 122, 10, -1, -1);
|
||||
break;
|
||||
|
||||
case 25:
|
||||
inv_give_to_player("MIRROR");
|
||||
break;
|
||||
|
||||
case 26:
|
||||
_G(game).setRoom(702);
|
||||
break;
|
||||
|
||||
default:
|
||||
_G(kernel).continue_handling_trigger = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
45
engines/m4/burger/rooms/section7/room701.h
Normal file
45
engines/m4/burger/rooms/section7/room701.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef M4_BURGER_ROOMS_SECTION7_ROOM701_H
|
||||
#define M4_BURGER_ROOMS_SECTION7_ROOM701_H
|
||||
|
||||
#include "m4/burger/rooms/room.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
class Room701 : public Room {
|
||||
public:
|
||||
Room701() : Room() {}
|
||||
~Room701() override {}
|
||||
|
||||
void preload() override;
|
||||
void init() override;
|
||||
void daemon() override;
|
||||
};
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
|
||||
#endif
|
||||
306
engines/m4/burger/rooms/section7/room702.cpp
Normal file
306
engines/m4/burger/rooms/section7/room702.cpp
Normal file
@@ -0,0 +1,306 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/ },.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "m4/burger/rooms/section7/room702.h"
|
||||
#include "m4/burger/rooms/section7/section7.h"
|
||||
#include "m4/burger/vars.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
enum {
|
||||
kCHANGE_FLUMIX_ANIMATION = 5
|
||||
};
|
||||
|
||||
static const char *SAID[][4] = {
|
||||
{ "DOOR", nullptr, "702W002", nullptr },
|
||||
{ "FLUMIX", "702w001z", "702W002", "702W002" },
|
||||
{ "ABDUCT-O-TRON", "702W006", nullptr, "702W007" },
|
||||
{ "ABDUCT-O CONTROLS", "702W008", nullptr, "702W009" },
|
||||
{ "NEUTRINO PULSE GUN", "702W010", nullptr, "702W011" },
|
||||
{ "NEUTRINO GUN CONTROL", "702W012", nullptr, "702W009" },
|
||||
{ "VENT", "702W013", nullptr, "702W013" },
|
||||
{ "BRIG", "702W014", "702W002", "702W015" },
|
||||
{ "MIRROR", "999W010", nullptr, "999W010" },
|
||||
{ nullptr, nullptr, nullptr, nullptr }
|
||||
};
|
||||
|
||||
|
||||
void Room702::init() {
|
||||
pal_fade_set_start(0);
|
||||
_flag1 = false;
|
||||
_flag2 = false;
|
||||
_flumixMode = 1;
|
||||
|
||||
_series1 = series_load("702FLT01");
|
||||
_series2 = series_load("702FLX02");
|
||||
_series3 = series_load("702C1FL1");
|
||||
_series4 = series_load("702C1FL2");
|
||||
_series5 = series_load("702C1FL3");
|
||||
_series1 = series_load("702C1FX1");
|
||||
|
||||
digi_preload("700_001");
|
||||
digi_preload("702f003b");
|
||||
digi_preload("702_007");
|
||||
digi_preload("702_006");
|
||||
|
||||
kernel_trigger_dispatch_now(1);
|
||||
}
|
||||
|
||||
void Room702::daemon() {
|
||||
switch (_G(kernel).trigger) {
|
||||
case 1:
|
||||
player_set_commands_allowed(true);
|
||||
ws_demand_location(302, 284, 6);
|
||||
_val2 = 12;
|
||||
_G(flumix_should) = 8;
|
||||
_G(wilbur_should) = 10;
|
||||
digi_play_loop("700_001", 3, 50, -1, 700);
|
||||
kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION);
|
||||
kernel_trigger_dispatch_now(kCHANGE_FLUMIX_ANIMATION);
|
||||
kernel_trigger_dispatch_now(6);
|
||||
_G(flags)[kDisableFootsteps] = 1;
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
conv_load_and_prepare("conv82", 3);
|
||||
conv_play_curr();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
_G(flumix_should) = 4;
|
||||
pal_fade_init(_G(kernel).first_fade, 255, 0, 90, -1);
|
||||
kernel_timing_trigger(30, kCHANGE_FLUMIX_ANIMATION);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
_G(game).setRoom(706);
|
||||
break;
|
||||
|
||||
case kCHANGE_FLUMIX_ANIMATION:
|
||||
switch (_flumixMode) {
|
||||
case 1:
|
||||
switch (_G(flumix_should)) {
|
||||
case 3:
|
||||
_flumixMode = 2;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (_flag1)
|
||||
terminateMachineAndNull(_flumix);
|
||||
|
||||
_flumix = series_play("702FLX02", 0, 0, 4);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
_flag1 = true;
|
||||
_flumix = series_play("702C1FL2", 0, 2, kCHANGE_FLUMIX_ANIMATION);
|
||||
|
||||
if (imath_ranged_rand(0, 1) == 1) {
|
||||
digi_play("702F003B", 2, 100);
|
||||
} else {
|
||||
digi_play("702_007", 2, 100);
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
_flag1 = true;
|
||||
_flumix = series_play("702C1FL3", 0, 1, kCHANGE_FLUMIX_ANIMATION);
|
||||
|
||||
if (imath_ranged_rand(0, 1) == 1) {
|
||||
digi_play("702F003B", 2, 100);
|
||||
} else {
|
||||
digi_play("702_007", 2, 100);
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
_flag1 = true;
|
||||
_flumix = series_play("702C1FL2", 0, 0, kCHANGE_FLUMIX_ANIMATION);
|
||||
|
||||
if (imath_ranged_rand(0, 1) == 1) {
|
||||
digi_play("702F003B", 2, 100);
|
||||
} else {
|
||||
digi_play("702_007", 2, 100);
|
||||
}
|
||||
break;
|
||||
|
||||
case 8:
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
_flag1 = true;
|
||||
_flumix = series_play("702C1FL1", 0, 0, kCHANGE_FLUMIX_ANIMATION);
|
||||
digi_play("702F003B", 2, 120);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
_flag1 = true;
|
||||
_flumix = series_play("702FLT01", 0, 0, kCHANGE_FLUMIX_ANIMATION, 60);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
switch (_G(flumix_should)) {
|
||||
case 3:
|
||||
if (_flag1)
|
||||
terminateMachineAndNull(_flumix);
|
||||
|
||||
_flag1 = true;
|
||||
_G(flumix_should) = 21;
|
||||
_flumix = series_play("702FLT01", 0, 4, -1, 6, -1);
|
||||
digi_play(conv_sound_to_play(), 1, 255, 5);
|
||||
break;
|
||||
|
||||
case 21:
|
||||
terminateMachineAndNull(_flumix);
|
||||
_flag1 = false;
|
||||
_G(flumix_should) = getFlumixShould();
|
||||
kernel_trigger_dispatch_now(5);
|
||||
conv_resume_curr();
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
_flumixMode = 1;
|
||||
kernel_trigger_dispatch_now(5);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
switch (_val2) {
|
||||
case 12:
|
||||
_val2 = 13;
|
||||
_series11 = series_play("702C1FX1", 0xf00, 0, 6, 6);
|
||||
digi_play("702_006", 1, 200);
|
||||
break;
|
||||
|
||||
case 13:
|
||||
series_unload(_series6);
|
||||
digi_unload("702_006");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case kCHANGE_WILBUR_ANIMATION:
|
||||
switch (_G(wilbur_should)) {
|
||||
case 10:
|
||||
ws_walk(236, 338, nullptr, 11, 4);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
_G(flags)[kDisableFootsteps] = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
_G(kernel).continue_handling_trigger = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
_G(kernel).continue_handling_trigger = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Room702::parser() {
|
||||
_G(kernel).trigger_mode = KT_DAEMON;
|
||||
|
||||
if (player_said("TALK", "FLUMIX")) {
|
||||
kernel_trigger_dispatch_now(2);
|
||||
|
||||
} else if (player_said("conv82")) {
|
||||
conv82();
|
||||
|
||||
} else if (player_said("DOOR", "LOOK AT")) {
|
||||
if (_flag2) {
|
||||
wilbur_speech("702W004");
|
||||
} else {
|
||||
_flag2 = true;
|
||||
wilbur_speech("702W003");
|
||||
}
|
||||
} else if (player_said("DOOR", "GEAR")) {
|
||||
ws_walk(174, 316, nullptr, -1, 10);
|
||||
wilbur_speech("702W005");
|
||||
|
||||
} else if (!_G(walker).wilbur_said(SAID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
_G(player).command_ready = false;
|
||||
}
|
||||
|
||||
void Room702::conv82() {
|
||||
int who = conv_whos_talking();
|
||||
|
||||
if (conv_sound_to_play()) {
|
||||
if (who <= 0) {
|
||||
_G(flumix_should) = 3;
|
||||
kernel_trigger_dispatch_now(kCHANGE_FLUMIX_ANIMATION);
|
||||
|
||||
} else if (who == 1) {
|
||||
wilbur_speech(conv_sound_to_play(), 10001);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Room702::getFlumixShould() {
|
||||
switch (imath_ranged_rand(1, 12)) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return 7;
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 5;
|
||||
case 7:
|
||||
case 8:
|
||||
return 6;
|
||||
case 9:
|
||||
case 10:
|
||||
return 8;
|
||||
default:
|
||||
return 9;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
64
engines/m4/burger/rooms/section7/room702.h
Normal file
64
engines/m4/burger/rooms/section7/room702.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef M4_BURGER_ROOMS_SECTION7_ROOM702_H
|
||||
#define M4_BURGER_ROOMS_SECTION7_ROOM702_H
|
||||
|
||||
#include "m4/burger/rooms/room.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
class Room702 : public Room {
|
||||
private:
|
||||
int _series1 = -1;
|
||||
int _series2 = -1;
|
||||
int _series3 = -1;
|
||||
int _series4 = -1;
|
||||
int _series5 = -1;
|
||||
int _series6 = -1;
|
||||
machine *_flumix = nullptr;
|
||||
machine *_series11 = nullptr;
|
||||
bool _flag1 = false;
|
||||
bool _flag2 = false;
|
||||
int _flumixMode = 0;
|
||||
int _val2 = 0;
|
||||
|
||||
void conv82();
|
||||
int getFlumixShould();
|
||||
|
||||
public:
|
||||
Room702() : Room() {
|
||||
}
|
||||
~Room702() override {
|
||||
}
|
||||
|
||||
void init() override;
|
||||
void daemon() override;
|
||||
void parser() override;
|
||||
};
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
|
||||
#endif
|
||||
580
engines/m4/burger/rooms/section7/room706.cpp
Normal file
580
engines/m4/burger/rooms/section7/room706.cpp
Normal file
@@ -0,0 +1,580 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/ },.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "m4/burger/rooms/section7/room706.h"
|
||||
#include "m4/burger/rooms/section7/section7.h"
|
||||
#include "m4/burger/vars.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
enum {
|
||||
kCHANGE_ASTRAL_ANIMATION = 33,
|
||||
kCHANGE_FLUMIX_ANIMATION = 34
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES1[] = {
|
||||
{ 0, "706F001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 31, "706W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 52, "706F002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 83, "706A_001", 2, 150, -1, 0, nullptr, 0 },
|
||||
{ 105, "706A_002", 2, 125, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES2[] = {
|
||||
{ 0, "706w002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 50, "706F003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 103, "706W003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 140, "706F004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 145, "706A_003", 2, 200, -1, 0, nullptr, 0 },
|
||||
{ 170, "706W004", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES3[] = {
|
||||
{ 3, "707A_002", 1, 125, -1, 0, nullptr, 0 },
|
||||
{ 11, "707A_001", 2, 175, -1, 0, nullptr, 0 },
|
||||
{ 32, "707W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 56, "707F001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 100, "707W002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 104, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 115, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 120, "707F002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 134, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 147, "707W003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 163, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 180, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 190, "707F003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 192, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 201, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 214, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 222, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 233, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 237, "707W004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 239, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 253, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 259, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 267, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 268, "707F004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 271, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 277, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 281, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 295, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 303, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 317, "707F005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 323, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 345, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 347, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 365, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 379, "707Z001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 389, "707Z002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 450, "707Z003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 473, "707F006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 478, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 491, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 509, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 523, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 529, "707A_007", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 535, "707Z005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 536, "707A_007", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 543, "707Z004a", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 544, "707A_007", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 550, "707Z005a", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 556, "707Z007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 589, "707F007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 618, "707Z008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 645, "707F008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 686, "707F009", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 710, "707W005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 711, "707A_006", 2, 100, -1, 0, nullptr, 0 },
|
||||
{ 718, "707A_006", 2, 100, -1, 0, nullptr, 0 },
|
||||
{ 725, "707A_006", 2, 100, -1, 0, nullptr, 0 },
|
||||
{ 729, "707Z009", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES4[] = {
|
||||
{ 0, "708Z001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 48, "708W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 107, "708Z002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 187, "708W002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 206, "708Z003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 296, "708A001", 1, 200, -1, 0, nullptr, 0 },
|
||||
{ 312, "708Z004", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES5[] = {
|
||||
{ 0, "707A001", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES6[] = {
|
||||
{ 0, "708Z005", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES7[] = {
|
||||
{ 0, "707C_001", 3, 100, -1, (uint)-1, nullptr, 0 },
|
||||
{ 1, nullptr, 0, 0, 37, 0, nullptr, 0 },
|
||||
{ 2, "707A002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 33, "707Z010", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 95, "707C_002", 2, 200, -1, 0, nullptr, 0 },
|
||||
{ 100, "707Z011", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 124, "707F010", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES8[] = {
|
||||
{ 0, "709A_004", 3, 75, -1, (uint)-1, nullptr, 0 },
|
||||
{ 0, "709W001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 5, "709A_002", 2, 110, -1, 0, nullptr, 0 },
|
||||
{ 16, "709A001", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 41, "709A_003", 2, 75, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES9[] = {
|
||||
{ 0, "707D_005", 3, 75, -1, (uint)-1, nullptr, 0 },
|
||||
{ 0, "707W006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 16, "707W007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 28, nullptr, 0, 0, 35, 0, nullptr, 0 },
|
||||
{ 29, "707D_001", 2, 150, -1, 0, nullptr, 0 },
|
||||
{ 31, "707A003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 41, "707A004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 84, "707W008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 126, "707W009", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 132, nullptr, 0, 0, 36, 0, nullptr, 0 },
|
||||
{ 134, "707D_006", 3, 100, -1, 0, nullptr, 0 },
|
||||
{ 138, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 141, "707A_003", 2, 50, -1, 0, nullptr, 0 },
|
||||
{ 143, "707A_002", 2, 125, -1, 0, nullptr, 0 },
|
||||
{ 158, "707A005", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 175, "707W010", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 223, "707W010z", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 320, "707A006", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 353, "707W011", 1, 125, -1, 0, nullptr, 0 },
|
||||
{ 364, "707W012", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 453, "707W013", 1, 125, -1, 0, nullptr, 0 },
|
||||
{ 475, "707A007", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 600, "707W014", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 601, nullptr, 0, 0, 38, 0, nullptr, 0 },
|
||||
{ 650, "707A008", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 676, "707W015", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 696, "707W016", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 698, "707D_008", 2, 200, -1, 0, nullptr, 0 },
|
||||
{ 715, "707D_004", 2, 150, -1, 0, nullptr, 0 },
|
||||
{ 729, "707A009", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 730, "707D_008", 2, 200, -1, 0, nullptr, 0 },
|
||||
{ 753, "707W017", 1, 255, -1, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
static const seriesStreamBreak SERIES10[] = {
|
||||
{ 0, "709A002", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 45, "709B_001", 2, 100, -1, 0, nullptr, 0 },
|
||||
{ 56, "709A003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 83, "709W002", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 92, "709A004", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 95, "709B_002", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 103, "709W003", 1, 255, -1, 0, nullptr, 0 },
|
||||
{ 110, nullptr, 0, 0, 39, 0, nullptr, 0 },
|
||||
{ 115, nullptr, 0, 0, 40, 0, nullptr, 0 },
|
||||
{ 120, "709B_006", 2, 255, -1, 0, nullptr, 0 },
|
||||
{ 124, "709B_004", 3, 50, -1, 1024, nullptr, 0 },
|
||||
{ 264, nullptr, 0, 0, 41, 0, nullptr, 0 },
|
||||
STREAM_BREAK_END
|
||||
};
|
||||
|
||||
void Room706::preload() {
|
||||
_G(player).walker_in_this_scene = false;
|
||||
}
|
||||
|
||||
void Room706::init() {
|
||||
player_set_commands_allowed(false);
|
||||
pal_fade_set_start(0);
|
||||
pal_fade_init(0, 255, 100, 40, -1);
|
||||
_flag5 = false;
|
||||
_flag6 = false;
|
||||
_flag7 = false;
|
||||
_volume = 100;
|
||||
|
||||
_series1 = series_load("706FLX01");
|
||||
digi_preload("706A_004");
|
||||
digi_preload_stream_breaks(SERIES1);
|
||||
_series2 = series_load("706AST01");
|
||||
_series3 = series_load("706AST02");
|
||||
_series4 = series_load("706WIT01");
|
||||
|
||||
digi_preload_stream_breaks(SERIES2);
|
||||
kernel_trigger_dispatch_now(1);
|
||||
}
|
||||
|
||||
void Room706::daemon() {
|
||||
switch (_G(kernel).trigger) {
|
||||
case 1:
|
||||
digi_play_loop("706A_004", 3, 50, -1, 706);
|
||||
series_stream_with_breaks(SERIES1, "706A1", 6, 1, 2);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
kernel_timing_trigger(6, 3);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 4);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
player_set_commands_allowed(true);
|
||||
getFlumixShould();
|
||||
kernel_trigger_dispatch_now(kCHANGE_FLUMIX_ANIMATION);
|
||||
conv_load_and_prepare("conv83", 5);
|
||||
conv_play_curr();
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (_flag5)
|
||||
terminateMachineAndNull(_series5);
|
||||
if (_flag7) {
|
||||
terminateMachineAndNull(_series7);
|
||||
terminateMachineAndNull(_series8);
|
||||
}
|
||||
if (_flag6)
|
||||
terminateMachineAndNull(_series6);
|
||||
|
||||
_flag5 = _flag6 = _flag7 = false;
|
||||
_G(flumix_should) = 4;
|
||||
series_unload(_series2);
|
||||
series_unload(_series3);
|
||||
series_unload(_series4);
|
||||
kernel_timing_trigger(6, 6);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
digi_unload_stream_breaks(SERIES1);
|
||||
series_stream_with_breaks(SERIES2, "706A3", 6, 1, 7);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 8);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 9);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
series_unload(_series1);
|
||||
digi_unload_stream_breaks(SERIES2);
|
||||
digi_unload("706A_004");
|
||||
digi_preload("700_001");
|
||||
digi_preload_stream_breaks(SERIES3);
|
||||
digi_play_loop("700_001", 3, 50, -1, 700);
|
||||
series_stream_with_breaks(SERIES3, "707A", 6, 1, 10);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 11);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 12);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
digi_unload_stream_breaks(SERIES3);
|
||||
digi_preload_stream_breaks(SERIES4);
|
||||
digi_preload("707B_001");
|
||||
digi_preload_stream_breaks(SERIES5);
|
||||
digi_preload_stream_breaks(SERIES6);
|
||||
digi_preload_stream_breaks(SERIES7);
|
||||
series_stream_with_breaks(SERIES4, "708A", 6, 1, 13);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 13:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 14);
|
||||
break;
|
||||
|
||||
case 14:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 15);
|
||||
break;
|
||||
|
||||
case 15:
|
||||
digi_unload_stream_breaks(SERIES4);
|
||||
digi_play("707B_001", 2, 125);
|
||||
series_stream_with_breaks(SERIES5, "707B", 6, 1, 16);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 17);
|
||||
break;
|
||||
|
||||
case 17:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 18);
|
||||
break;
|
||||
|
||||
case 18:
|
||||
series_stream_with_breaks(SERIES6, "708B", 6, 1, 19);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 19:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 20);
|
||||
break;
|
||||
|
||||
case 20:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 21);
|
||||
break;
|
||||
|
||||
case 21:
|
||||
digi_unload_stream_breaks(SERIES5);
|
||||
digi_unload_stream_breaks(SERIES6);
|
||||
series_stream_with_breaks(SERIES7, "707C", 6, 1, 22);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 22:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 23);
|
||||
break;
|
||||
|
||||
case 23:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 24);
|
||||
break;
|
||||
|
||||
case 24:
|
||||
digi_unload_stream_breaks(SERIES7);
|
||||
digi_preload_stream_breaks(SERIES8);
|
||||
series_stream_with_breaks(SERIES8, "709A", 6, 1, 25);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 25:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 26);
|
||||
break;
|
||||
|
||||
case 26:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 27);
|
||||
break;
|
||||
|
||||
case 27:
|
||||
digi_unload_stream_breaks(SERIES8);
|
||||
digi_preload_stream_breaks(SERIES9);
|
||||
digi_preload("707D_007");
|
||||
series_stream_with_breaks(SERIES9, "707D", 6, 1, 28);
|
||||
pal_fade_init(0, 255, 100, 30, -1);
|
||||
break;
|
||||
|
||||
case 28:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 29);
|
||||
break;
|
||||
|
||||
case 29:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 30);
|
||||
break;
|
||||
|
||||
case 30:
|
||||
digi_unload_stream_breaks(SERIES9);
|
||||
digi_preload("709B_005");
|
||||
digi_preload_stream_breaks(SERIES10);
|
||||
series_stream_with_breaks(SERIES10, "709B", 6, 1, 31);
|
||||
pal_fade_init(0, 255, 100, 31, -1);
|
||||
break;
|
||||
|
||||
case 31:
|
||||
pal_fade_set_start(0);
|
||||
kernel_timing_trigger(6, 32);
|
||||
digi_unload_stream_breaks(SERIES10);
|
||||
break;
|
||||
|
||||
case 32:
|
||||
compact_mem_and_report();
|
||||
kernel_timing_trigger(6, 42);
|
||||
break;
|
||||
|
||||
case kCHANGE_ASTRAL_ANIMATION:
|
||||
switch (_astralShould) {
|
||||
case 1:
|
||||
_astralShould = 21;
|
||||
_flag7 = true;
|
||||
_series7 = series_play("706AST01", 0x300, 0, -1, 6, -1);
|
||||
_series8 = series_play("706AST02", 0x300, 0, -1, 6, -1);
|
||||
digi_play(conv_sound_to_play(), 1, 255, kCHANGE_ASTRAL_ANIMATION);
|
||||
break;
|
||||
|
||||
case 21:
|
||||
if (_flag7) {
|
||||
terminateMachineAndNull(_series7);
|
||||
terminateMachineAndNull(_series8);
|
||||
}
|
||||
|
||||
_flag7 = false;
|
||||
conv_resume_curr();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case kCHANGE_FLUMIX_ANIMATION:
|
||||
switch (_G(flumix_should)) {
|
||||
case 2:
|
||||
getFlumixShould();
|
||||
series_play("706FLX01", 0x400, 0, kCHANGE_FLUMIX_ANIMATION, 6);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
getFlumixShould();
|
||||
kernel_timing_trigger(60, kCHANGE_FLUMIX_ANIMATION);
|
||||
break;
|
||||
|
||||
default:
|
||||
_G(flumix_should) = 4;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 35:
|
||||
inv_move_object("MIRROR", NOWHERE);
|
||||
break;
|
||||
|
||||
case 36:
|
||||
digi_stop(3);
|
||||
break;
|
||||
|
||||
case 37:
|
||||
digi_stop(2);
|
||||
digi_unload("707B_001");
|
||||
break;
|
||||
|
||||
case 38:
|
||||
digi_play_loop("707D_007", 3, 100, -1, 707);
|
||||
break;
|
||||
|
||||
case 39:
|
||||
_volume -= 20;
|
||||
if (_volume > 0) {
|
||||
term_message("fading hero tune, current volume = %d", _volume);
|
||||
digi_change_volume(3, _volume);
|
||||
kernel_timing_trigger(20, 39);
|
||||
|
||||
} else {
|
||||
digi_stop(3);
|
||||
}
|
||||
break;
|
||||
|
||||
case 40:
|
||||
digi_play("709B_005", 1, 255, -1, 709);
|
||||
break;
|
||||
|
||||
case 41:
|
||||
pal_fade_init(_G(kernel).first_fade, 255, 0, 150, -1);
|
||||
break;
|
||||
|
||||
case 42:
|
||||
adv_kill_digi_between_rooms(false);
|
||||
_G(game).setRoom(_G(executing) == WHOLE_GAME ? 903 : 901);
|
||||
break;
|
||||
|
||||
case kCHANGE_WILBUR_ANIMATION:
|
||||
switch (_G(wilbur_should)) {
|
||||
case 1:
|
||||
_G(wilbur_should) = 21;
|
||||
_flag6 = true;
|
||||
_series6 = series_play("706WIT01", 0x200, 0, -1, 6, -1);
|
||||
digi_play(conv_sound_to_play(), 1, 255, kCHANGE_WILBUR_ANIMATION);
|
||||
break;
|
||||
|
||||
case 21:
|
||||
if (_flag6)
|
||||
terminateMachineAndNull(_series6);
|
||||
|
||||
_flag6 = false;
|
||||
conv_resume_curr();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
_G(kernel).continue_handling_trigger = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Room706::parser() {
|
||||
_G(kernel).trigger_mode = KT_DAEMON;
|
||||
|
||||
if (player_said("conv83")) {
|
||||
conv83();
|
||||
_G(player).command_ready = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Room706::conv83() {
|
||||
if (conv_sound_to_play()) {
|
||||
const int who = conv_whos_talking();
|
||||
|
||||
if (who <= 0) {
|
||||
_astralShould = 1;
|
||||
kernel_trigger_dispatch_now(kCHANGE_ASTRAL_ANIMATION);
|
||||
|
||||
} else if (who == 1) {
|
||||
_G(wilbur_should) = 1;
|
||||
kernel_trigger_dispatch_now(kCHANGE_WILBUR_ANIMATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Room706::getFlumixShould() {
|
||||
_G(flumix_should) = imath_ranged_rand(1, 100) >= 10 ? 3 : 2;
|
||||
}
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
66
engines/m4/burger/rooms/section7/room706.h
Normal file
66
engines/m4/burger/rooms/section7/room706.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef M4_BURGER_ROOMS_SECTION7_ROOM706_H
|
||||
#define M4_BURGER_ROOMS_SECTION7_ROOM706_H
|
||||
|
||||
#include "m4/burger/rooms/room.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
class Room706 : public Room {
|
||||
private:
|
||||
int _series1 = -1;
|
||||
int _series2 = -1;
|
||||
int _series3 = -1;
|
||||
int _series4 = -1;
|
||||
machine *_series5 = nullptr;
|
||||
machine *_series6 = nullptr;
|
||||
machine *_series7 = nullptr;
|
||||
machine *_series8 = nullptr;
|
||||
bool _flag5 = false;
|
||||
bool _flag6 = false;
|
||||
bool _flag7 = false;
|
||||
int _volume = 0;
|
||||
int _astralShould = 0;
|
||||
|
||||
void conv83();
|
||||
void getFlumixShould();
|
||||
|
||||
public:
|
||||
Room706() : Room() {
|
||||
}
|
||||
~Room706() override {
|
||||
}
|
||||
|
||||
void preload() override;
|
||||
void init() override;
|
||||
void daemon() override;
|
||||
void parser() override;
|
||||
};
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
|
||||
#endif
|
||||
36
engines/m4/burger/rooms/section7/section7.cpp
Normal file
36
engines/m4/burger/rooms/section7/section7.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "m4/burger/rooms/section7/section7.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
Section7::Section7() : Rooms::Section() {
|
||||
add(701, &_room701);
|
||||
add(702, &_room702);
|
||||
add(706, &_room706);
|
||||
}
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
50
engines/m4/burger/rooms/section7/section7.h
Normal file
50
engines/m4/burger/rooms/section7/section7.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef M4_BURGER_ROOMS_SECTION7_H
|
||||
#define M4_BURGER_ROOMS_SECTION7_H
|
||||
|
||||
#include "m4/burger/rooms/room.h"
|
||||
#include "m4/burger/rooms/section.h"
|
||||
#include "m4/burger/rooms/section7/room701.h"
|
||||
#include "m4/burger/rooms/section7/room702.h"
|
||||
#include "m4/burger/rooms/section7/room706.h"
|
||||
|
||||
namespace M4 {
|
||||
namespace Burger {
|
||||
namespace Rooms {
|
||||
|
||||
class Section7 : public Rooms::Section {
|
||||
private:
|
||||
Room701 _room701;
|
||||
Room702 _room702;
|
||||
Room706 _room706;
|
||||
|
||||
public:
|
||||
Section7();
|
||||
virtual ~Section7() {}
|
||||
};
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Burger
|
||||
} // namespace M4
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user