Initial commit
This commit is contained in:
209
engines/chewy/rooms/room46.cpp
Normal file
209
engines/chewy/rooms/room46.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
/* 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 "chewy/cursor.h"
|
||||
#include "chewy/defines.h"
|
||||
#include "chewy/events.h"
|
||||
#include "chewy/globals.h"
|
||||
#include "chewy/room.h"
|
||||
#include "chewy/rooms/room46.h"
|
||||
#include "chewy/sound.h"
|
||||
#include "chewy/video/video_player.h"
|
||||
|
||||
namespace Chewy {
|
||||
namespace Rooms {
|
||||
|
||||
void Room46::entry(int16 eib_nr) {
|
||||
if (_G(gameState)._personRoomNr[P_HOWARD] == 45) {
|
||||
_G(gameState)._personRoomNr[P_HOWARD] = 46;
|
||||
_G(SetUpScreenFunc) = setup_func;
|
||||
|
||||
if (eib_nr == 79) {
|
||||
setPersonPos(140, 90, P_HOWARD, P_LEFT);
|
||||
autoMove(3, P_CHEWY);
|
||||
setPersonSpr(P_LEFT, P_CHEWY);
|
||||
}
|
||||
}
|
||||
|
||||
if (_G(gameState)._personRoomNr[P_HOWARD] == 46) {
|
||||
_G(spieler_mi)[P_HOWARD].Mode = true;
|
||||
_G(SetUpScreenFunc) = setup_func;
|
||||
|
||||
if (_G(gameState).flags33_8) {
|
||||
_G(mouseLeftClick) = false;
|
||||
hideCur();
|
||||
setPersonPos(175, 73, P_HOWARD, P_LEFT);
|
||||
setPersonPos(147, 109, P_CHEWY, P_LEFT);
|
||||
_G(gameState).flags33_8 = false;
|
||||
_G(gameState).SVal1 = 46;
|
||||
waitShowScreen(10);
|
||||
|
||||
start_spz_wait(64, 1, false, P_CHEWY);
|
||||
start_spz(65, 255, false, P_CHEWY);
|
||||
startAadWait(494);
|
||||
_G(gameState).SVal2 = 504;
|
||||
switchRoom(92);
|
||||
start_spz(65, 255, false, P_CHEWY);
|
||||
startAadWait(495);
|
||||
_G(gameState).room_e_obj[78].Exit = 90;
|
||||
showCur();
|
||||
}
|
||||
}
|
||||
|
||||
if (_G(gameState).R47SchlossOk && !_G(gameState).R46GetLeder)
|
||||
bodo();
|
||||
}
|
||||
|
||||
void Room46::xit() {
|
||||
if (_G(gameState)._personRoomNr[P_HOWARD] == 46) {
|
||||
_G(spieler_mi)[P_HOWARD].Mode = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Room46::setup_func() {
|
||||
calc_person_look();
|
||||
int16 y = 64;
|
||||
const int16 ch_x = _G(moveState)[P_CHEWY].Xypos[0];
|
||||
|
||||
int16 x;
|
||||
if (ch_x > 160) {
|
||||
x = 260;
|
||||
} else {
|
||||
x = 120;
|
||||
}
|
||||
|
||||
if (_G(HowardMov) && _G(flags).ExitMov) {
|
||||
x = 160;
|
||||
y = 200;
|
||||
}
|
||||
|
||||
goAutoXy(x, y, P_HOWARD, ANI_GO);
|
||||
}
|
||||
|
||||
void Room46::bodo() {
|
||||
hideCur();
|
||||
_G(det)->showStaticSpr(0);
|
||||
_G(person_end_phase)[P_CHEWY] = P_RIGHT;
|
||||
startAadWait(240);
|
||||
_G(spieler_mi)[P_CHEWY].Mode = true;
|
||||
goAutoXy(42, 76, P_CHEWY, ANI_WAIT);
|
||||
startAadWait(250);
|
||||
autoMove(1, P_CHEWY);
|
||||
setPersonSpr(P_RIGHT, P_CHEWY);
|
||||
startAadWait(251);
|
||||
autoMove(2, P_CHEWY);
|
||||
|
||||
_G(spieler_mi)[P_CHEWY].Mode = false;
|
||||
startSetAILWait(0, 1, ANI_FRONT);
|
||||
_G(det)->startDetail(5, 255, ANI_FRONT);
|
||||
startAadWait(241);
|
||||
_G(det)->stopDetail(5);
|
||||
_G(det)->showStaticSpr(5);
|
||||
startAadWait(609);
|
||||
_G(det)->hideStaticSpr(5);
|
||||
startSetAILWait(2, 1, ANI_FRONT);
|
||||
startSetAILWait(3, 1, ANI_FRONT);
|
||||
_G(det)->startDetail(4, 255, ANI_FRONT);
|
||||
startAadWait(242);
|
||||
_G(det)->stopDetail(4);
|
||||
|
||||
_G(det)->showStaticSpr(6);
|
||||
startAadWait(610);
|
||||
_G(det)->hideStaticSpr(6);
|
||||
startSetAILWait(6, 1, ANI_FRONT);
|
||||
_G(det)->showStaticSpr(3);
|
||||
_G(gameState)._personHide[P_CHEWY] = true;
|
||||
startSetAILWait(1, 1, ANI_FRONT);
|
||||
flic_cut(FCUT_065);
|
||||
_G(out)->setPointer(nullptr);
|
||||
_G(out)->cls();
|
||||
register_cutscene(16);
|
||||
|
||||
_G(gameState)._personHide[P_CHEWY] = false;
|
||||
_G(det)->hideStaticSpr(0);
|
||||
_G(det)->hideStaticSpr(3);
|
||||
load_chewy_taf(CHEWY_ROCKER);
|
||||
_G(gameState).R28ChewyPump = false;
|
||||
|
||||
setPersonPos(213, 118, P_CHEWY, P_RIGHT);
|
||||
startAadWait(243);
|
||||
invent_2_slot(UHR_INV);
|
||||
invent_2_slot(RING_INV);
|
||||
_G(gameState).R46GetLeder = true;
|
||||
showCur();
|
||||
}
|
||||
|
||||
void Room46::kloppe() {
|
||||
//_G(sndPlayer)->setLoopMode(1);
|
||||
for (int16 i = 0; i < 4; i++) {
|
||||
g_engine->_video->playVideo(FCUT_065);
|
||||
|
||||
_G(out)->setPointer(nullptr);
|
||||
_G(out)->cls();
|
||||
|
||||
start_aad(244 + i, -1);
|
||||
int16 delay = _G(gameState).DelaySpeed * 50;
|
||||
_G(atds)->print_aad(0, 0);
|
||||
|
||||
_G(disableScreen) = true;
|
||||
|
||||
if (g_engine->_sound->speechEnabled()) {
|
||||
g_engine->_sound->waitForSpeechToFinish();
|
||||
} else {
|
||||
while (g_events->getSwitchCode() == Common::KEYCODE_INVALID && delay) {
|
||||
--delay;
|
||||
EVENTS_UPDATE;
|
||||
SHOULD_QUIT_RETURN;
|
||||
}
|
||||
}
|
||||
|
||||
_G(disableScreen) = false;
|
||||
}
|
||||
|
||||
g_engine->_video->playVideo(FCUT_066);
|
||||
// TODO: Reimplement
|
||||
//_G(sndPlayer)->fadeOut(0);
|
||||
_G(out)->cls();
|
||||
|
||||
//while (_G(sndPlayer)->musicPlaying() && !SHOULD_QUIT) {
|
||||
// EVENTS_UPDATE;
|
||||
//}
|
||||
}
|
||||
|
||||
int16 Room46::use_schloss() {
|
||||
int16 action_ret = false;
|
||||
|
||||
if (!_G(cur)->usingInventoryCursor()) {
|
||||
action_ret = true;
|
||||
|
||||
if (!_G(gameState).R46GetLeder) {
|
||||
autoMove(1, P_CHEWY);
|
||||
switchRoom(47);
|
||||
} else {
|
||||
startAadWait(252);
|
||||
}
|
||||
}
|
||||
|
||||
return action_ret;
|
||||
}
|
||||
|
||||
} // namespace Rooms
|
||||
} // namespace Chewy
|
||||
Reference in New Issue
Block a user