DREAMWEB: Move more functions to DreamBase
This commit is contained in:
parent
bcf789274f
commit
42068065b5
6 changed files with 57 additions and 119 deletions
|
@ -169,6 +169,7 @@ public:
|
|||
void loadPersonal();
|
||||
void loadNews();
|
||||
void loadCart();
|
||||
void showKeys();
|
||||
|
||||
// from newplace.cpp
|
||||
void getUnderCentre();
|
||||
|
@ -190,6 +191,9 @@ public:
|
|||
void deleteExText(uint8 textNum);
|
||||
void purgeALocation(uint8 index);
|
||||
const uint8 *getObTextStart();
|
||||
void wornError();
|
||||
void makeWorn(DynObject *object);
|
||||
void dropObject();
|
||||
|
||||
// from pathfind.cpp
|
||||
void turnPathOn(uint8 param);
|
||||
|
@ -527,6 +531,12 @@ public:
|
|||
void showDiaryPage();
|
||||
void showDiaryKeys();
|
||||
void dumpDiaryKeys();
|
||||
void useMenu();
|
||||
void incRyanPage();
|
||||
void edensFlatReminders();
|
||||
void dropError();
|
||||
void cantDrop();
|
||||
void entryAnims();
|
||||
|
||||
// from use.cpp
|
||||
void placeFreeObject(uint8 index);
|
||||
|
@ -610,6 +620,10 @@ public:
|
|||
void useAltar();
|
||||
void notHeldError();
|
||||
void useCashCard();
|
||||
void useButtonA();
|
||||
void wearWatch();
|
||||
void wearShades();
|
||||
void useTrainer();
|
||||
|
||||
// from vgafades.cpp
|
||||
void clearStartPal();
|
||||
|
|
|
@ -426,7 +426,7 @@ void DreamBase::loadCart() {
|
|||
data.word(kTextfile3) = standardLoad("DREAMWEB.T24"); // monitor file 24
|
||||
}
|
||||
|
||||
void DreamGenContext::showKeys() {
|
||||
void DreamBase::showKeys() {
|
||||
randomAccess(10);
|
||||
scrollMonitor();
|
||||
monMessage(18);
|
||||
|
|
|
@ -66,7 +66,7 @@ bool DreamBase::isItWorn(const DynObject *object) {
|
|||
return (object->id[0] == 'W'-'A') && (object->id[1] == 'E'-'A');
|
||||
}
|
||||
|
||||
void DreamGenContext::wornError() {
|
||||
void DreamBase::wornError() {
|
||||
data.byte(kCommandtype) = 255;
|
||||
delPointer();
|
||||
printMessage(76, 21, 57, 240, false);
|
||||
|
@ -79,7 +79,7 @@ void DreamGenContext::wornError() {
|
|||
workToScreenM();
|
||||
}
|
||||
|
||||
void DreamGenContext::makeWorn(DynObject *object) {
|
||||
void DreamBase::makeWorn(DynObject *object) {
|
||||
object->id[0] = 'W'-'A';
|
||||
object->id[1] = 'E'-'A';
|
||||
}
|
||||
|
@ -461,10 +461,6 @@ void DreamGenContext::setPickup() {
|
|||
workToScreenM();
|
||||
}
|
||||
|
||||
void DreamGenContext::deleteExFrame() {
|
||||
deleteExFrame(al);
|
||||
}
|
||||
|
||||
void DreamBase::deleteExFrame(uint8 frameNum) {
|
||||
Frame *frame = (Frame *)getSegment(data.word(kExtras)).ptr(kExframedata + sizeof(Frame)*frameNum, sizeof(Frame));
|
||||
|
||||
|
@ -488,10 +484,6 @@ void DreamBase::deleteExFrame(uint8 frameNum) {
|
|||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::deleteExText() {
|
||||
deleteExText(al);
|
||||
}
|
||||
|
||||
void DreamBase::deleteExText(uint8 textNum) {
|
||||
uint16 offset = getSegment(data.word(kExtras)).word(kExtextdat + 2*textNum);
|
||||
|
||||
|
@ -704,7 +696,7 @@ const uint8 *DreamBase::getObTextStart() {
|
|||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::dropObject() {
|
||||
void DreamBase::dropObject() {
|
||||
if (data.byte(kCommandtype) != 223) {
|
||||
data.byte(kCommandtype) = 223;
|
||||
if (!data.byte(kPickup)) {
|
||||
|
|
|
@ -1708,18 +1708,6 @@ uint16 DreamBase::findSetObject(const char *id) {
|
|||
return 128;
|
||||
}
|
||||
|
||||
void DreamGenContext::findExObject() {
|
||||
char id[5];
|
||||
id[0] = al;
|
||||
id[1] = ah;
|
||||
id[2] = cl;
|
||||
id[3] = ch;
|
||||
id[4] = '\0';
|
||||
al = findExObject(id);
|
||||
es = data.word(kExtras);
|
||||
bx = kExdata + al * 16;
|
||||
}
|
||||
|
||||
uint16 DreamBase::findExObject(const char *id) {
|
||||
for (uint16 index = 0; index < kNumexobjects; index++) {
|
||||
if (objectMatches(getExAd(index), id))
|
||||
|
@ -1729,16 +1717,6 @@ uint16 DreamBase::findExObject(const char *id) {
|
|||
return kNumexobjects;
|
||||
}
|
||||
|
||||
void DreamGenContext::isRyanHolding() {
|
||||
char id[5];
|
||||
id[0] = al;
|
||||
id[1] = ah;
|
||||
id[2] = cl;
|
||||
id[3] = ch;
|
||||
id[4] = '\0';
|
||||
flags._z = !isRyanHolding(id);
|
||||
}
|
||||
|
||||
bool DreamBase::isRyanHolding(const char *id) {
|
||||
for (uint16 index = 0; index < kNumexobjects; index++) {
|
||||
DynObject *object = getExAd(index);
|
||||
|
@ -1859,13 +1837,6 @@ void DreamBase::hangOnP(uint16 count) {
|
|||
data.byte(kPointermode) = 0;
|
||||
}
|
||||
|
||||
void DreamGenContext::findNextColon() {
|
||||
const uint8 *initialString = es.ptr(si, 0);
|
||||
const uint8 *string = initialString;
|
||||
al = findNextColon(&string);
|
||||
si += (string - initialString);
|
||||
}
|
||||
|
||||
uint8 DreamBase::findNextColon(const uint8 **string) {
|
||||
uint8 c;
|
||||
do {
|
||||
|
@ -2572,7 +2543,7 @@ void DreamBase::dumpMenu() {
|
|||
multiDump(kMenux, kMenuy, 48, 48);
|
||||
}
|
||||
|
||||
void DreamGenContext::useMenu() {
|
||||
void DreamBase::useMenu() {
|
||||
getRidOfReels();
|
||||
loadMenu();
|
||||
createPanel();
|
||||
|
@ -3296,7 +3267,7 @@ void DreamBase::diaryKeyN() {
|
|||
data.byte(kDiarypage) = 0;
|
||||
}
|
||||
|
||||
void DreamGenContext::dropError() {
|
||||
void DreamBase::dropError() {
|
||||
data.byte(kCommandtype) = 255;
|
||||
delPointer();
|
||||
printMessage(76, 21, 56, 240, 240 & 1);
|
||||
|
@ -3309,7 +3280,7 @@ void DreamGenContext::dropError() {
|
|||
workToScreenM();
|
||||
}
|
||||
|
||||
void DreamGenContext::cantDrop() {
|
||||
void DreamBase::cantDrop() {
|
||||
data.byte(kCommandtype) = 255;
|
||||
delPointer();
|
||||
printMessage(76, 21, 24, 240, 240 & 1);
|
||||
|
@ -3344,26 +3315,6 @@ void DreamBase::getBack1() {
|
|||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::useButtonA() {
|
||||
if (!isSetObOnMap(95)) {
|
||||
showFirstUse();
|
||||
turnAnyPathOn(0, data.byte(kRoomnum) - 1);
|
||||
removeSetObject(9);
|
||||
placeSetObject(95);
|
||||
data.word(kWatchingtime) = 15 * 2;
|
||||
data.word(kReeltowatch) = 71;
|
||||
data.word(kEndwatchreel) = 85;
|
||||
data.byte(kWatchspeed) = 1;
|
||||
data.byte(kSpeedcount) = 1;
|
||||
data.byte(kGetback) = 1;
|
||||
data.byte(kProgresspoints)++;
|
||||
} else {
|
||||
// Done this bit
|
||||
showSecondUse();
|
||||
putBackObStuff();
|
||||
}
|
||||
}
|
||||
|
||||
void DreamBase::autoAppear() {
|
||||
if (data.byte(kLocation) == 32) {
|
||||
// In alley
|
||||
|
@ -3417,10 +3368,6 @@ void DreamBase::quitKey() {
|
|||
data.byte(kGetback) = 1;
|
||||
}
|
||||
|
||||
void DreamGenContext::setupTimedUse() {
|
||||
DreamBase::setupTimedUse(al, cx, dx, bl, bh);
|
||||
}
|
||||
|
||||
void DreamBase::setupTimedUse(uint16 textIndex, uint16 countToTimed, uint16 timeCount, byte x, byte y) {
|
||||
if (data.word(kTimecount) != 0)
|
||||
return; // can't setup
|
||||
|
@ -3463,7 +3410,7 @@ void DreamBase::entryTexts() {
|
|||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::entryAnims() {
|
||||
void DreamBase::entryAnims() {
|
||||
data.word(kReeltowatch) = 0xFFFF;
|
||||
data.byte(kWatchmode) = (byte)-1;
|
||||
|
||||
|
@ -3731,7 +3678,7 @@ void DreamBase::showDiaryKeys() {
|
|||
showDiaryPage();
|
||||
}
|
||||
|
||||
void DreamGenContext::edensFlatReminders() {
|
||||
void DreamBase::edensFlatReminders() {
|
||||
if (data.byte(kReallocation) != 24 || data.byte(kMapx) != 44)
|
||||
return; // not in Eden's lift
|
||||
|
||||
|
@ -3740,18 +3687,18 @@ void DreamGenContext::edensFlatReminders() {
|
|||
|
||||
uint16 exObjextIndex = findExObject("CSHR");
|
||||
if (!isRyanHolding("DKEY") || exObjextIndex == kNumexobjects) {
|
||||
DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
return;
|
||||
}
|
||||
|
||||
DynObject *object = getExAd(exObjextIndex);
|
||||
|
||||
if (object->mapad[0] != 4) {
|
||||
DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
return;
|
||||
} else if (object->mapad[1] != 255) {
|
||||
if (!compare(object->mapad[1], object->mapad[0], "PURS")) {
|
||||
DreamBase::setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
setupTimedUse(50, 48, 8, 54, 70); // forgot something
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -3759,7 +3706,7 @@ void DreamGenContext::edensFlatReminders() {
|
|||
data.byte(kProgresspoints)++; // got card
|
||||
}
|
||||
|
||||
void DreamGenContext::incRyanPage() {
|
||||
void DreamBase::incRyanPage() {
|
||||
if (data.byte(kCommandtype) != 222) {
|
||||
data.byte(kCommandtype) = 222;
|
||||
commandOnly(31);
|
||||
|
|
|
@ -103,8 +103,6 @@
|
|||
bool isItWorn(const DynObject *object) {
|
||||
return DreamBase::isItWorn(object);
|
||||
}
|
||||
void wornError();
|
||||
void makeWorn(DynObject *object);
|
||||
void obToInv();
|
||||
void obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
|
||||
DreamBase::obToInv(index, flag, x, y);
|
||||
|
@ -114,11 +112,6 @@
|
|||
void hangOn(uint16 frameCount) {
|
||||
DreamBase::hangOn(frameCount);
|
||||
}
|
||||
uint8 findNextColon(const uint8 **string) {
|
||||
return DreamBase::findNextColon(string);
|
||||
}
|
||||
void findNextColon();
|
||||
const uint8 *getObTextStartCPP();
|
||||
void showCity();
|
||||
uint16 getPersFrame(uint8 index);
|
||||
void convIcons();
|
||||
|
@ -127,7 +120,6 @@
|
|||
void transferText();
|
||||
void watchCount();
|
||||
void readSetData();
|
||||
void useMenu();
|
||||
void useMon();
|
||||
void makeCaps();
|
||||
byte makeCaps(byte c) {
|
||||
|
@ -156,8 +148,6 @@
|
|||
void useElevator1();
|
||||
void useKey();
|
||||
void useObject();
|
||||
void wearWatch();
|
||||
void wearShades();
|
||||
void singleKey(uint8 key, uint16 x, uint16 y);
|
||||
uint8 nextSymbol(uint8 symbol);
|
||||
void showSymbol();
|
||||
|
@ -177,7 +167,6 @@
|
|||
void afterIntroRoom();
|
||||
void gettingShot();
|
||||
void allPointer();
|
||||
void useTrainer();
|
||||
void chewy();
|
||||
void delEverything();
|
||||
void errorMessage1();
|
||||
|
@ -201,28 +190,15 @@
|
|||
void hangOnPQ();
|
||||
void showGun();
|
||||
void endGame();
|
||||
void dropError();
|
||||
void cantDrop();
|
||||
void newPlace();
|
||||
void monkSpeaking();
|
||||
void rollEndCredits2();
|
||||
void useButtonA();
|
||||
void setupTimedUse();
|
||||
void entryAnims();
|
||||
void triggerMessage(uint16 index);
|
||||
void processTrigger();
|
||||
void updateSymbolTop();
|
||||
void updateSymbolBot();
|
||||
void runEndSeq();
|
||||
bool execCommand();
|
||||
void findExObject();
|
||||
uint16 findExObject(const char *id) {
|
||||
return DreamBase::findExObject(id);
|
||||
}
|
||||
void isRyanHolding();
|
||||
bool isRyanHolding(const char *id) {
|
||||
return DreamBase::isRyanHolding(id);
|
||||
}
|
||||
void getOpenedSize();
|
||||
byte getOpenedSizeCPP();
|
||||
void openOb();
|
||||
|
@ -232,26 +208,14 @@
|
|||
void findInvPos();
|
||||
uint16 findInvPosCPP();
|
||||
void setPickup();
|
||||
void showKeys();
|
||||
void getKeyAndLogo();
|
||||
void deleteExObject();
|
||||
void deleteExObject(uint8 index) {
|
||||
DreamBase::deleteExObject(index);
|
||||
}
|
||||
void deleteExFrame();
|
||||
void deleteExFrame(uint8 frameNum) {
|
||||
DreamBase::deleteExFrame(frameNum);
|
||||
}
|
||||
void deleteExText();
|
||||
void deleteExText(uint8 textNum) {
|
||||
DreamBase::deleteExText(textNum);
|
||||
}
|
||||
void signOn();
|
||||
void lookAtPlace();
|
||||
void inToInv();
|
||||
void outOfInv();
|
||||
void edensFlatReminders();
|
||||
void incRyanPage();
|
||||
void dropObject();
|
||||
|
||||
#endif
|
||||
|
|
|
@ -46,7 +46,7 @@ void DreamGenContext::useRoutine() {
|
|||
{ &DreamBase::useElevator5, "ELVF" },
|
||||
{ &DreamBase::useChurchGate, "CGAT" },
|
||||
{ &DreamGenContext::useStereo, "REMO" },
|
||||
{ &DreamGenContext::useButtonA, "BUTA" },
|
||||
{ &DreamBase::useButtonA, "BUTA" },
|
||||
{ &DreamBase::useWinch, "CBOX" },
|
||||
{ &DreamBase::useLighter, "LITE" },
|
||||
{ &DreamBase::usePlate, "PLAT" },
|
||||
|
@ -61,7 +61,7 @@ void DreamGenContext::useRoutine() {
|
|||
{ &DreamBase::useCardReader2, "CRBB" },
|
||||
{ &DreamBase::useCardReader3, "CRCC" },
|
||||
{ &DreamBase::sitDownInBar, "SEAT" },
|
||||
{ &DreamGenContext::useMenu, "MENU" },
|
||||
{ &DreamBase::useMenu, "MENU" },
|
||||
{ &DreamBase::useCooker, "COOK" },
|
||||
{ &DreamBase::callHotelLift, "ELCA" },
|
||||
{ &DreamBase::callEdensLift, "EDCA" },
|
||||
|
@ -75,9 +75,9 @@ void DreamGenContext::useRoutine() {
|
|||
{ &DreamBase::openYourNeighbour, "ENTC" },
|
||||
{ &DreamBase::openEden, "ENTD" },
|
||||
{ &DreamBase::openSarters, "ENTH" },
|
||||
{ &DreamGenContext::wearWatch, "WWAT" },
|
||||
{ &DreamBase::wearWatch, "WWAT" },
|
||||
{ &DreamBase::usePoolReader, "POOL" },
|
||||
{ &DreamGenContext::wearShades, "WSHD" },
|
||||
{ &DreamBase::wearShades, "WSHD" },
|
||||
{ &DreamBase::grafittiDoor, "GRAF" },
|
||||
{ &DreamBase::trapDoor, "TRAP" },
|
||||
{ &DreamBase::edensCDPlayer, "CDPE" },
|
||||
|
@ -97,8 +97,8 @@ void DreamGenContext::useRoutine() {
|
|||
{ &DreamBase::useBalcony, "BALC" },
|
||||
{ &DreamBase::useWindow, "WIND" },
|
||||
{ &DreamBase::viewFolder, "PAPR" },
|
||||
{ &DreamGenContext::useTrainer, "UWTA" },
|
||||
{ &DreamGenContext::useTrainer, "UWTB" },
|
||||
{ &DreamBase::useTrainer, "UWTA" },
|
||||
{ &DreamBase::useTrainer, "UWTB" },
|
||||
{ &DreamGenContext::enterSymbol, "STAT" },
|
||||
{ &DreamBase::openTomb, "TLID" },
|
||||
{ &DreamBase::useSlab, "SLAB" },
|
||||
|
@ -355,7 +355,7 @@ void DreamBase::useRailing() {
|
|||
data.byte(kMandead) = 4;
|
||||
}
|
||||
|
||||
void DreamGenContext::wearWatch() {
|
||||
void DreamBase::wearWatch() {
|
||||
if (data.byte(kWatchon) == 1) {
|
||||
// Already wearing watch
|
||||
showSecondUse();
|
||||
|
@ -369,7 +369,7 @@ void DreamGenContext::wearWatch() {
|
|||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::wearShades() {
|
||||
void DreamBase::wearShades() {
|
||||
if (data.byte(kShadeson) == 1) {
|
||||
// Already wearing shades
|
||||
showSecondUse();
|
||||
|
@ -1027,7 +1027,7 @@ void DreamBase::useCart() {
|
|||
data.byte(kGetback) = 1;
|
||||
}
|
||||
|
||||
void DreamGenContext::useTrainer() {
|
||||
void DreamBase::useTrainer() {
|
||||
uint8 dummy;
|
||||
DynObject *object = (DynObject *)getAnyAd(&dummy, &dummy);
|
||||
if (object->mapad[0] != 4) {
|
||||
|
@ -1684,4 +1684,25 @@ void DreamBase::showPuzText(uint16 command, uint16 count) {
|
|||
hangOnP(count);
|
||||
}
|
||||
|
||||
void DreamBase::useButtonA() {
|
||||
if (!isSetObOnMap(95)) {
|
||||
showFirstUse();
|
||||
turnAnyPathOn(0, data.byte(kRoomnum) - 1);
|
||||
removeSetObject(9);
|
||||
placeSetObject(95);
|
||||
data.word(kWatchingtime) = 15 * 2;
|
||||
data.word(kReeltowatch) = 71;
|
||||
data.word(kEndwatchreel) = 85;
|
||||
data.byte(kWatchspeed) = 1;
|
||||
data.byte(kSpeedcount) = 1;
|
||||
data.byte(kGetback) = 1;
|
||||
data.byte(kProgresspoints)++;
|
||||
} else {
|
||||
// Done this bit
|
||||
showSecondUse();
|
||||
putBackObStuff();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // End of namespace DreamGen
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue