CHEWY: Implement Room 75 + partial implementation of Room 70

This commit is contained in:
Strangerke
2022-03-03 18:35:44 -08:00
committed by Paul Gilbert
parent 26a40b4214
commit 2dd8cfa445
4 changed files with 110 additions and 2 deletions
+45
View File
@@ -35,5 +35,50 @@ void Room70::entry(int16 eib_nr) {
void Room70::xit(int16 eib_nr) {
}
void Room70::setup_func() {
calc_person_look();
const int posX = spieler_vector[P_CHEWY].Xypos[0];
int howDestX, nicDestX;
if (posX > 40) {
howDestX = 52;
nicDestX = 100;
} else if (posX < 230) {
howDestX = 83;
nicDestX = 163;
} else if (posX < 445) {
howDestX = 261;
nicDestX = 329;
} else {
howDestX = 493;
nicDestX = 543;
}
go_auto_xy(howDestX, 111, P_HOWARD, P_RIGHT);
go_auto_xy(nicDestX, 110, P_NICHELLE, P_RIGHT);
}
void Room70::proc1() {
_G(cur_hide_flag) = 0;
hide_cur();
set_person_pos(236, 110, P_CHEWY, P_RIGHT);
set_person_pos(263, 85, P_NICHELLE, P_RIGHT);
set_person_pos(285, 78, P_HOWARD, P_RIGHT);
go_auto_xy(266, 113, P_HOWARD, ANI_VOR);
show_cur();
}
void Room70::proc2() {
set_person_pos(31, 118, P_CHEWY, P_RIGHT);
set_person_pos(71, 104, P_NICHELLE, P_RIGHT);
set_person_pos(6, 111, P_HOWARD, P_RIGHT);
}
void Room70::proc3() {
set_person_pos(587, 114, P_CHEWY, P_LEFT);
set_person_pos(613, 103, P_NICHELLE, P_LEFT);
set_person_pos(561, 112, P_HOWARD, P_LEFT);
}
} // namespace Rooms
} // namespace Chewy
+4
View File
@@ -29,6 +29,10 @@ class Room70 {
public:
static void entry(int16 eib_nr);
static void xit(int16 eib_nr);
static void setup_func();
static void proc1();
static void proc2();
static void proc3();
};
} // namespace Rooms
+60 -2
View File
@@ -22,17 +22,75 @@
#include "chewy/defines.h"
#include "chewy/events.h"
#include "chewy/global.h"
#include "chewy/ani_dat.h"
#include "chewy/room.h"
#include "chewy/rooms/room75.h"
#include "chewy/rooms/room70.h"
namespace Chewy {
namespace Rooms {
void Room75::entry(int16 eib_nr) {
det->enable_sound(0, 0);
det->play_sound(0, 0);
_G(spieler).ScrollxStep = 2;
_G(spieler).ZoomXy[P_HOWARD][0] = 70;
_G(spieler).ZoomXy[P_HOWARD][1] = 100;
_G(spieler).ZoomXy[P_NICHELLE][0] = 70;
_G(spieler).ZoomXy[P_NICHELLE][1] = 100;
spieler_mi[P_HOWARD].Mode = true;
spieler_mi[P_NICHELLE].Mode = true;
_G(zoom_horizont) = 110;
flags.ZoomMov = true;
_G(zoom_mov_fak) = 3;
SetUpScreenFunc = Room70::setup_func;
if (flags.LoadGame)
return;
switch (eib_nr) {
case 103:
_G(spieler.scrollx = 188);
proc1();
break;
case 104:
Room70::proc3();
break;
case 111:
Room70::proc2();
break;
default:
break;
}
}
void Room75::xit(int16 eib_nr) {
_G(spieler).ScrollxStep = 1;
if (_G(spieler).PersonRoomNr[P_HOWARD] != 75)
return;
switch (eib_nr) {
case 115:
_G(spieler).PersonRoomNr[P_HOWARD] = 73;
_G(spieler).PersonRoomNr[P_NICHELLE] = 73;
break;
case 116:
case 117:
_G(spieler).PersonRoomNr[P_HOWARD] = 70;
_G(spieler).PersonRoomNr[P_NICHELLE] = 70;
break;
default:
break;
}
}
void Room75::proc1() {
_G(cur_hide_flag) = 0;
hide_cur();
set_person_pos(363, 110, P_CHEWY, P_LEFT);
set_person_pos(322, 85, P_NICHELLE, P_RIGHT);
set_person_pos(317, 96, P_HOWARD, P_RIGHT);
go_auto_xy(318, 110, P_NICHELLE, ANI_VOR);
show_cur();
}
} // namespace Rooms
+1
View File
@@ -29,6 +29,7 @@ class Room75 {
public:
static void entry(int16 eib_nr);
static void xit(int16 eib_nr);
static void proc1();
};
} // namespace Rooms