diff options
-rw-r--r-- | engines/avalanche/acci2.cpp | 2 | ||||
-rw-r--r-- | engines/avalanche/gyro2.cpp | 105 | ||||
-rw-r--r-- | engines/avalanche/gyro2.h | 93 | ||||
-rw-r--r-- | engines/avalanche/timeout2.cpp | 4 |
4 files changed, 53 insertions, 151 deletions
diff --git a/engines/avalanche/acci2.cpp b/engines/avalanche/acci2.cpp index 30f5a4b9a1..830087361b 100644 --- a/engines/avalanche/acci2.cpp +++ b/engines/avalanche/acci2.cpp @@ -1817,7 +1817,7 @@ void Acci::doThat() { _vm->_visa->dixi('D', 9); _vm->_lucerna->points(3); } - _vm->_gyro->updateMoney(3); // It costs thruppence. + _vm->_gyro->decreaseMoney(3); // It costs thruppence. _vm->_gyro->_dna._objects[_vm->_gyro->kObjectOnion - 1] = true; _vm->_lucerna->objectlist(); _vm->_gyro->_dna._boughtOnion = true; diff --git a/engines/avalanche/gyro2.cpp b/engines/avalanche/gyro2.cpp index 1fd906d48d..879cc15714 100644 --- a/engines/avalanche/gyro2.cpp +++ b/engines/avalanche/gyro2.cpp @@ -37,20 +37,15 @@ #include "avalanche/acci2.h" #include "avalanche/trip6.h" -#include "common/textconsole.h" #include "common/file.h" - #include "common/random.h" - -//#include "dropdown.h" -//#include "basher.h" +#include "common/textconsole.h" namespace Avalanche { const char *Gyro::kVersionNum = "1.30"; const char *Gyro::kCopyright = "1995"; - const MouseHotspotType Gyro::kMouseHotSpots[9] = { {8,0}, // 1 - up-arrow {0,0}, // 2 - screwdriver @@ -66,15 +61,15 @@ const MouseHotspotType Gyro::kMouseHotSpots[9] = { // Art gallery at 2,1; notice about this at 2,2. const int32 Gyro::kCatacombMap[8][8] = { // Geida's room - // 1 2 3 | 4 5 6 7 8 - {0x204, 0x200, 0xd0f0, 0xf0ff, 0xff, 0xd20f, 0xd200, 0x200}, - {0x50f1, 0x20ff, 0x2ff, 0xff, 0xe0ff, 0x20ff, 0x200f, 0x7210}, - {0xe3f0, 0xe10f, 0x72f0, 0xff, 0xe0ff, 0xff, 0xff, 0x800f}, - {0x2201, 0x2030, 0x800f, 0x220, 0x20f, 0x30, 0xff, 0x23f}, // >> Oubliette - {0x5024, 0xf3, 0xff, 0x200f, 0x22f0, 0x20f, 0x200, 0x7260}, - {0xf0, 0x2ff, 0xe2ff, 0xff, 0x200f, 0x50f0, 0x72ff, 0x201f}, - {0xf6, 0x220f, 0x22f0, 0x30f, 0xf0, 0x20f, 0x8200, 0x2f0}, // <<< In here - {0x34, 0x200f, 0x51f0, 0x201f, 0xf1, 0x50ff, 0x902f, 0x2062} + // 1 2 3 | 4 5 6 7 8 + {0x204, 0x200, 0xd0f0, 0xf0ff, 0xff, 0xd20f, 0xd200, 0x200}, + {0x50f1, 0x20ff, 0x2ff, 0xff, 0xe0ff, 0x20ff, 0x200f, 0x7210}, + {0xe3f0, 0xe10f, 0x72f0, 0xff, 0xe0ff, 0xff, 0xff, 0x800f}, + {0x2201, 0x2030, 0x800f, 0x220, 0x20f, 0x30, 0xff, 0x23f}, // >> Oubliette + {0x5024, 0xf3, 0xff, 0x200f, 0x22f0, 0x20f, 0x200, 0x7260}, + {0xf0, 0x2ff, 0xe2ff, 0xff, 0x200f, 0x50f0, 0x72ff, 0x201f}, + {0xf6, 0x220f, 0x22f0, 0x30f, 0xf0, 0x20f, 0x8200, 0x2f0}, // <<< In here + {0x34, 0x200f, 0x51f0, 0x201f, 0xf1, 0x50ff, 0x902f, 0x2062} }; // vv Stairs trap. @@ -119,22 +114,22 @@ const char Gyro::kSpludwicksOrder[3] = {kObjectOnion, kObjectInk, kObjectMushroo // A quasiped defines how people who aren't sprites talk. For example, quasiped // "A" is Dogfood. The rooms aren't stored because I'm leaving that to context. const QuasipedType Gyro::kQuasipeds[16] = { - {2, kColorLightgray, 19, kColorBrown, kPeopleDogfood}, // A: Dogfood (screen 19). - {3, kColorGreen, 19, kColorWhite, kPeopleIbythneth}, // B: Ibythneth (screen 19). - {3, kColorWhite, 1, kColorMagenta, kPeopleArkata}, // C: Arkata (screen 1). - {3, kColorBlack, 23, kColorRed, 177}, // D: Hawk (screen 23). - {3, kColorLightgreen, 50, kColorBrown, kPeopleTrader}, // E: Trader (screen 50). - {6, kColorYellow, 42, kColorRed, kPeopleAvalot}, // F: Avvy, tied up (scr.42) - {2, kColorBlue, 16, kColorWhite, kPeopleAyles}, // G: Ayles (screen 16). - {2, kColorBrown, 7, kColorWhite, kPeopleJacques}, // H: Jacques (screen 7). - {2, kColorLightgreen, 47, kColorGreen, kPeopleSpurge}, // I: Spurge (screen 47). - {3, kColorYellow, 47, kColorRed, kPeopleAvalot}, // J: Avalot (screen 47). - {2, kColorLightgray, 23, kColorBlack, kPeopleDuLustie}, // K: du Lustie (screen 23). - {2, kColorYellow, 27, kColorRed, kPeopleAvalot}, // L: Avalot (screen 27). - {3, kColorWhite, 27, kColorRed, 177}, // M: Avaroid (screen 27). - {4, kColorLightgray, 19, kColorDarkgray, kPeopleMalagauche}, // N: Malagauche (screen 19). - {5, kColorLightmagenta, 47, kColorRed, kPeoplePort}, // O: Port (screen 47). - {2, kColorLightgreen, 51, kColorDarkgray, kPeopleDrDuck} // P: Duck (screen 51). + {2, kColorLightgray, 19, kColorBrown, kPeopleDogfood}, // A: Dogfood (screen 19). + {3, kColorGreen, 19, kColorWhite, kPeopleIbythneth}, // B: Ibythneth (screen 19). + {3, kColorWhite, 1, kColorMagenta, kPeopleArkata}, // C: Arkata (screen 1). + {3, kColorBlack, 23, kColorRed, 177}, // D: Hawk (screen 23). + {3, kColorLightgreen, 50, kColorBrown, kPeopleTrader}, // E: Trader (screen 50). + {6, kColorYellow, 42, kColorRed, kPeopleAvalot}, // F: Avvy, tied up (scr.42) + {2, kColorBlue, 16, kColorWhite, kPeopleAyles}, // G: Ayles (screen 16). + {2, kColorBrown, 7, kColorWhite, kPeopleJacques}, // H: Jacques (screen 7). + {2, kColorLightgreen, 47, kColorGreen, kPeopleSpurge}, // I: Spurge (screen 47). + {3, kColorYellow, 47, kColorRed, kPeopleAvalot}, // J: Avalot (screen 47). + {2, kColorLightgray, 23, kColorBlack, kPeopleDuLustie}, // K: du Lustie (screen 23). + {2, kColorYellow, 27, kColorRed, kPeopleAvalot}, // L: Avalot (screen 27). + {3, kColorWhite, 27, kColorRed, 177}, // M: Avaroid (screen 27). + {4, kColorLightgray, 19, kColorDarkgray, kPeopleMalagauche}, // N: Malagauche (screen 19). + {5, kColorLightmagenta, 47, kColorRed, kPeoplePort}, // O: Port (screen 47). + {2, kColorLightgreen, 51, kColorDarkgray, kPeopleDrDuck} // P: Duck (screen 51). }; const char Gyro::kMusicKeys[] = "QWERTYUIOP[]"; @@ -143,9 +138,8 @@ const uint16 Gyro::kNotes[12] = {196, 220, 247, 262, 294, 330, 350, 392, 440, 49 const TuneType Gyro::kTune = { kPitchHigher, kPitchHigher, kPitchLower, kPitchSame, kPitchHigher, kPitchHigher, kPitchLower, kPitchHigher, kPitchHigher, kPitchHigher, - kPitchLower, kPitchHigher, kPitchHigher, - kPitchSame, kPitchHigher, kPitchLower, kPitchLower, kPitchLower, kPitchLower, kPitchHigher, kPitchHigher, kPitchLower, kPitchLower, kPitchLower, - kPitchLower, kPitchSame, kPitchLower, kPitchHigher, kPitchSame, kPitchLower, kPitchHigher + kPitchLower, kPitchHigher, kPitchHigher, kPitchSame, kPitchHigher, kPitchLower, kPitchLower, kPitchLower, kPitchLower, kPitchHigher, + kPitchHigher, kPitchLower, kPitchLower, kPitchLower, kPitchLower, kPitchSame, kPitchLower, kPitchHigher, kPitchSame, kPitchLower, kPitchHigher }; byte Gyro::_whereIs[29] = { @@ -175,9 +169,6 @@ byte Gyro::_whereIs[29] = { r__wisewomans // The Wise Woman. }; -// CHECKME: Useless? -// const char Gyro::kItemsChar[] = "WMBParCLguKeSnIohn"; - Gyro::Gyro(AvalancheEngine *vm) : _interrogation(0), _onCanDoPageSwap(true) { _vm = vm; @@ -186,6 +177,7 @@ Gyro::Gyro(AvalancheEngine *vm) : _interrogation(0), _onCanDoPageSwap(true) { for (int ff = 0; ff < 2; ff++) _also[fv][ff] = 0; } + _dna._totalTime = 0; } @@ -197,9 +189,9 @@ Gyro::~Gyro() { _digits[9].free(); } -Common::String Gyro::intToStr(int32 x) { - Common::String q = Common::String::format("%d", x); - return q; +Common::String Gyro::intToStr(int32 num) { + Common::String result = Common::String::format("%d", num); + return result; } void Gyro::newMouse(byte id) { @@ -230,28 +222,28 @@ void Gyro::drawShadow(int16 x1, int16 y1, int16 x2, int16 y2, byte hc, byte sc) warning("STUB: Gyro::shadow()"); } -void Gyro::shadowBox(int16 x1, int16 y1, int16 x2, int16 y2, Common::String t) { +void Gyro::drawShadowBox(int16 x1, int16 y1, int16 x2, int16 y2, Common::String t) { warning("STUB: Gyro::shbox()"); } void Gyro::newGame() { - for (byte gm = 0; gm < kMaxSprites; gm++) { - if (_vm->_trip->tr[gm].quick) - _vm->_trip->tr[gm].done(); + for (byte i = 0; i < kMaxSprites; i++) { + if (_vm->_trip->tr[i].quick) + _vm->_trip->tr[i].done(); } // Deallocate sprite. Sorry, beta testers! _vm->_trip->tr[0].init(0, true, _vm->_trip); - _alive = true; + _alive = true; _score = 0; - //for gd:=0 to 5 do which[gd]:=1; memset(&_vm->_gyro->_dna, 0, sizeof(DnaType)); + _vm->_scrolls->natural(); _vm->_lucerna->mousepage(0); + _dna._spareEvening = "answer a questionnaire"; _dna._favouriteDrink = "beer"; - _dna._money = 30; // 2/6 _dna._direction = kDirectionStopped; _dna._wearing = kObjectClothes; @@ -279,7 +271,7 @@ void Gyro::newGame() { _dna._avvyInBed = true; _enidFilename = ""; - for (byte gd = 0; gd <= 1; gd++) { + for (byte i = 0; i <= 1; i++) { _cp = 1 - _cp; _vm->_trip->getback(); } @@ -287,7 +279,6 @@ void Gyro::newGame() { _vm->_lucerna->enterroom(1, 1); _vm->_trip->new_game_for_trippancy(); _vm->_lucerna->showscore(); - _vm->_dropdown->setupMenu(); _vm->_lucerna->clock_lucerna(); _vm->_lucerna->sprite_run(); @@ -314,7 +305,7 @@ void Gyro::forceNumlock() { warning("STUB: Gyro::force_numlock()"); } -bool Gyro::updateMoney(uint16 howmuchby) { +bool Gyro::decreaseMoney(uint16 howmuchby) { _dna._money -= howmuchby; if (_dna._money < 0) { _vm->_visa->dixi('Q', 2); // "You are now denariusless!" @@ -324,8 +315,6 @@ bool Gyro::updateMoney(uint16 howmuchby) { return true; } -// There'll may be problems with calling these functions because of the conversion of the arrays!!! -// Keep an eye open! Common::String Gyro::getName(byte whose) { static const Common::String kLads[17] = { "Avalot", "Spludwick", "Crapulus", "Dr. Duck", "Malagauche", "Friar Tuck", @@ -335,28 +324,22 @@ Common::String Gyro::getName(byte whose) { static const Common::String kLasses[4] = {"Arkata", "Geida", "\0xB1", "the Wise Woman"}; - assert((whose > 150) && (whose < 179)); - if (whose < 175) return kLads[whose - 150]; else return kLasses[whose - 175]; } -// Keep an eye open! ^ byte Gyro::getNameChar(byte whose) { static const char kLadChar[] = "ASCDMTRwLfgeIyPu"; static const char kLassChar[] = "kG\0xB1o"; - assert((whose > 150) && (whose < 179)); - if (whose < 175) return kLadChar[whose - 150]; else return kLassChar[whose - 175]; } -// Keep an eye open! ^^ Common::String Gyro::getThing(byte which) { static const Common::String kThings[kObjectNum] = { "Wine", "Money-bag", "Bodkin", "Potion", "Chastity belt", @@ -389,7 +372,6 @@ Common::String Gyro::getThing(byte which) { return get_thing_result; } -// Keep an eye open! ^^^ char Gyro::getThingChar(byte which) { static const char kThingsChar[] = "WMBParCLguKeSnIohn"; // V=Vinegar @@ -407,7 +389,6 @@ char Gyro::getThingChar(byte which) { return get_thingchar_result; } -// Keep an eye open! ^^^^ Common::String Gyro::getItem(byte which) { static const Common::String kItems[kObjectNum] = { "some wine", "your money-bag", "your bodkin", "a potion", "a chastity belt", @@ -522,13 +503,9 @@ void Gyro::loadMouse(byte which) { } mask.free(); - f.close(); - - CursorMan.replaceCursor(cursor.pixels, 16, 32, kMouseHotSpots[which - 1]._horizontal, kMouseHotSpots[which - 1]._vertical * 2, 255, false); - cursor.free(); } diff --git a/engines/avalanche/gyro2.h b/engines/avalanche/gyro2.h index ca367cd66f..e1ce464f56 100644 --- a/engines/avalanche/gyro2.h +++ b/engines/avalanche/gyro2.h @@ -69,7 +69,6 @@ struct DnaType { // Ux, uy, & ww now all belong to Trip5 bool _wonNim; // Have you *won* Nim? (That's harder.) byte _wineState; // 0=good (Notts), 1=passable(Argent) ... 3=vinegar. bool _cwytalotGone; // Has Cwytalot rushed off to Jerusalem yet? - byte _passwordNum; // Number of the passw for this game. bool _aylesIsAwake; // pretty obvious! byte _drawbridgeOpen; // Between 0 (shut) and 4 (open). @@ -77,82 +76,50 @@ struct DnaType { // Ux, uy, & ww now all belong to Trip5 bool _boughtOnion; // Have you bought an onion yet? bool _rottenOnion; // And has it rotted? bool _onionInVinegar; // Is the onion in the vinegar? - byte _givenToSpludwick; // 0 = nothing given, 1 = onion... byte _brummieStairs; // Progression through the stairs trick. byte _cardiffQuestionNum; // Things you get asked in Cardiff. - bool _passedCwytalotInHerts; // Have you passed Cwytalot in Herts? - bool _avvyIsAwake; // Well? Is Avvy awake? (Screen 1 only.) bool _avvyInBed; // True if Avvy's in bed, but awake. - bool _userMovesAvvy; // If this is false, the user has no control over Avvy's movements. - byte _dogFoodPos; // Which way Dogfood's looking in the pub. - bool _givenBadgeToIby; // Have you given the badge to Iby yet? - bool _friarWillTieYouUp; // If you're going to get tied up. bool _tiedUp; // You ARE tied up! - byte _boxContent; // 0 = money (sixpence), 254 = empty, any other number implies the contents of the box. - bool _talkedToCrapulus; // Pretty self-explanatory. - byte _jacquesState; // 0=asleep, 1=awake, 2=gets up, 3=gone. - bool _bellsAreRinging; // Is Jacques ringing the bells? - bool _standingOnDais; // In room 71, inside Cardiff Castle. bool _takenPen; // Have you taken the pen (in Cardiff?) bool _arrowTriggered; // And has the arrow been triggered? bool _arrowInTheDoor; // Did the arrow hit the wall? - Common::String _favouriteDrink, _favouriteSong, _worstPlaceOnEarth, _spareEvening; // Personalisation str's - uint32 _totalTime; // Your total time playing this game, in ticks. - byte _jumpStatus; // Fixes how high you're jumping. - bool _mushroomGrowing; // Is the mushroom growing in 42? - bool _spludwickAtHome; // Is Spludwick at home? - byte _lastRoom; byte _lastRoomNotMap; - bool _crapulusWillTell; // Will Crapulus tell you about Spludwick being away? - bool _enterCatacombsFromLustiesRoom; bool _teetotal; // Are we touching any more drinks? byte _malagauche; // Position of Malagauche. See Celer for more info. char _drinking; // What's he getting you? - bool _enteredLustiesRoomAsMonk; - byte _catacombX, _catacombY; // XY coords in the catacombs. - bool _avvysInTheCupboard; // On screen 22. - bool _geidaFollows; // Is Geida following you? - byte _geidaSpin, _geidaTime; // For the making "Geida dizzy" joke. - byte _nextBell; // For the ringing. - bool _givenPotionToGeida; // Does Geida have the potion? bool _lustieIsAsleep; // Is BDL asleep? - byte _flipToWhere, _flipToPed; // For the sequencer. - bool _beenTiedUp; // In r__Robins. - bool _sittingInPub; // Are you sitting down in the pub? byte _spurgeTalkCount; // Count for talking to Spurge. - bool _metAvaroid; - bool _takenMushroom, _givenPenToAyles, _askedDogfoodAboutNim; }; @@ -347,9 +314,6 @@ public: - - - // If this is greater than zero, the next line you type is stored in the DNA in a position dictated by the value. // If a scroll comes up, or you leave the room, it's automatically set to zero. byte _interrogation; @@ -360,9 +324,6 @@ public: // You may know better than On which page to switch to. bool _onCanDoPageSwap; - - - DnaType _dna; byte _lineNum; // Number of lines. LineType _lines[50]; // For Also. @@ -375,23 +336,18 @@ public: byte _scrollNum, _score, _whichwas; byte _thinks; bool _thinkThing; - int16 _talkX, _talkY; byte _talkBackgroundColor, _talkFontColor; byte _scrollBells; // no. of times to ring the bell bool _onToolbar, _seeScroll; // TODO: maybe this means we're interacting with the toolbar / a scroll? - char _objectList[10]; - ::Graphics::Surface _digits[10]; // digitsize and rwlitesize are defined in Lucerna::load_digits() !!! ::Graphics::Surface _directions[9]; // Maybe it will be needed to move them to the class itself instead. // Called .free() for them in ~Gyro(). - byte _oldDirection; int8 _scoreToDisplay[3]; byte _currentMouse; // current mouse-void Common::String _verbStr; // what you can do with your object. :-) - Common::String *_also[31][2]; PedType _peds[15]; MagicType _magics[15]; @@ -400,27 +356,19 @@ public: byte _fieldNum; Common::String _flags; Common::String _listen; - - uint16 _oh, _onh, _om, _hours, _minutes, _seconds; - + uint16 _oh, _onh, _om, _hours, _minutes, _seconds; // For Timeout. TODO: Move them into it. Common::String _atKey; // For XTs, set to "alt-". For ATs, set to "f1". - byte _cp, _ledStatus, _defaultLed; FontType _font; bool _alive; byte _buffer[2000]; uint16 _bufSize; - int16 _underScroll; // Y-coord of just under the scroll text. - bool _dropdownActive; // Kludge so we don't have to keep referring to Dropdown Common::String _roomnName; // Name of actual room - Common::String _subject; // What you're talking to them about. byte _subjectNum; // The same thing. - bool _keyboardClick; // Is a keyboard click noise wanted? - byte _him, _her, _it; int32 _roomTime; // Set to 0 when you enter a room, added to in every loop. @@ -430,68 +378,45 @@ public: Common::DumpFile _demoFileSave; // uruk added it - first use located in constructor of Basher byte _lastPerson; // Last person to have been selected using the People menu. - bool _doingSpriteRun; // Only set to True if we're doing a sprite_run at this moment. This stops the trippancy system from moving any of the sprites. - bool _holdTheDawn; // If this is true, calling Dawn will do nothing. It's used, for example, at the start, to stop Load from dawning. - bool isLoaded; // Is it a loaded gamestate? - Common::String _enidFilename; Gyro(AvalancheEngine *vm); - ~Gyro(); - Common::String intToStr(int32 x); - + Common::String intToStr(int32 num); void newMouse(byte id); - void setMousePointerWait(); // Makes hourglass. + void loadMouse(byte which); void note(uint16 hertz); - void blip(); + void click(); // "Audio keyboard feedback" - void shadowBox(int16 x1, int16 y1, int16 x2, int16 y2, Common::String t); + void setBackgroundColor(byte x); + void drawShadowBox(int16 x1, int16 y1, int16 x2, int16 y2, Common::String t); void newGame(); // This sets up the DNA for a completely new game. - - void click(); // "Audio keyboard feedback" - void slowDown(); - bool setFlag(char x); - void forceNumlock(); - - bool updateMoney(uint16 howmuchby); // Called pennycheck in the original. - + bool decreaseMoney(uint16 howmuchby); // Called pennycheck in the original. + void hangAroundForAWhile(); + Common::String getName(byte whose); - byte getNameChar(byte whose); - Common::String getThing(byte which); - char getThingChar(byte which); - Common::String getItem(byte which); // Called get_better in the original. - Common::String f5Does(); // This procedure determines what f5 does. - void loadMouse(byte which); - - void setBackgroundColor(byte x); - - void hangAroundForAWhile(); - private: AvalancheEngine *_vm; - // CHECKME: Useless? - // static const char kItemsChar[]; void drawShadow(int16 x1, int16 y1, int16 x2, int16 y2, byte hc, byte sc); }; diff --git a/engines/avalanche/timeout2.cpp b/engines/avalanche/timeout2.cpp index 9155643d27..085df26923 100644 --- a/engines/avalanche/timeout2.cpp +++ b/engines/avalanche/timeout2.cpp @@ -499,7 +499,7 @@ void Timeout::buydrinks() { _vm->_visa->dixi('D', _vm->_gyro->_dna._drinking); // Display message about it. _vm->_pingo->wobble(); // Do the special effects. _vm->_visa->dixi('D', 1); // That'll be thruppence. - if (_vm->_gyro->updateMoney(3)) // Pay 3d. + if (_vm->_gyro->decreaseMoney(3)) // Pay 3d. _vm->_visa->dixi('D', 3); // Tell 'em you paid up. _vm->_acci->drink(); } @@ -510,7 +510,7 @@ void Timeout::buywine() { _vm->_visa->dixi('D', 50); // You buy the wine. _vm->_visa->dixi('D', 1); // It'll be thruppence. - if (_vm->_gyro->updateMoney(3)) { + if (_vm->_gyro->decreaseMoney(3)) { _vm->_visa->dixi('D', 4); // You paid up. _vm->_gyro->_dna._objects[_vm->_gyro->kObjectWine - 1] = true; _vm->_lucerna->objectlist(); |