mirror of
https://github.com/scummvm/scummvm.git
synced 2025-04-02 10:52:32 -04:00
2185 lines
56 KiB
C++
2185 lines
56 KiB
C++
/* 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 "graphics/cursorman.h"
|
|
|
|
#include "bagel/spacebar/nav_window.h"
|
|
#include "bagel/spacebar/master_win.h"
|
|
#include "bagel/boflib/event_loop.h"
|
|
#include "bagel/boflib/file_functions.h"
|
|
#include "bagel/boflib/log.h"
|
|
#include "bagel/boflib/sound.h"
|
|
#include "bagel/boflib/std_keys.h"
|
|
|
|
namespace Bagel {
|
|
namespace SpaceBar {
|
|
|
|
#define MAP_BMP "nebsim1.bmp"
|
|
#define CUR_LOC "curloc.bmp"
|
|
#define LEVEL_DONE "levdone.bmp"
|
|
#define WELCOME_SND "evnaawel.wav"
|
|
#define QUIT 111
|
|
#define HELP 112
|
|
#define MASK_COLOR 1
|
|
#define HIGHLIGHT_COLOR 13
|
|
|
|
#define NAV_DIR "$SBARDIR\\NEBLITZ\\CLOSEUP\\NAV\\"
|
|
#define NEBSIM2_BMP "$SBARDIR\\NEBLITZ\\CLOSEUP\\NAV\\nebsim2.bmp"
|
|
#define NEBSIM3_BMP "$SBARDIR\\NEBLITZ\\CLOSEUP\\NAV\\nebsim3.bmp"
|
|
#define NEBSIM4_BMP "$SBARDIR\\NEBLITZ\\CLOSEUP\\NAV\\nebsim4.bmp"
|
|
|
|
// New background bmps are black, so text will be white
|
|
#define NAV_TEXT_COLOR CTEXT_WHITE
|
|
|
|
struct ST_BUTTONS {
|
|
const char *_pszName;
|
|
const char *_pszUp;
|
|
const char *_pszDown;
|
|
const char *_pszFocus;
|
|
const char *_pszDisabled;
|
|
int _nLeft;
|
|
int _nTop;
|
|
int _nWidth;
|
|
int _nHeight;
|
|
int _nID;
|
|
|
|
};
|
|
|
|
NPLANET g_level[9] = {
|
|
{ "Pinna", 36, 54, 45, 63, {nullptr, 0, true} },
|
|
{ "H'poctyl", 181, 19, 190, 28, { "Mattresses", 72, true} },
|
|
{ "Armpit", 108, 251, 117, 260, { "Spam", 56, true} },
|
|
{ "Yzore", 251, 271, 260, 280, {nullptr, 0, true} },
|
|
{ "Bulbus", 323, 197, 332, 206, {nullptr, 0, true} },
|
|
{ "Dingle", 394, 143, 403, 154, {nullptr, 0, true} },
|
|
{ "Karkas", 163, 394, 172, 403, {nullptr, 0, true} },
|
|
{ "Fruufnia", 306, 393, 315, 402, { "Swizzle Sticks", 86, true} },
|
|
{ nullptr, 0, 0, 0, 0, {nullptr, 0, true} }
|
|
};
|
|
|
|
NPLANET g_levelOne[10] = {
|
|
{ "Wilbur", 108, 38, 116, 49, {nullptr, 0, true} },
|
|
{ "McKelvey", 394, 37, 403, 46, {nullptr, 0, true} },
|
|
{ "Medge", 19, 90, 28, 99, { "Memory Chips", 127, true} },
|
|
{ "Wall", 234, 90, 243, 99, {nullptr, 0, true} },
|
|
{ "Woo", 108, 306, 119, 315, {nullptr, 0, true} },
|
|
{ "Roman", 198, 270, 207, 279, { "Motorcycles", 20, true} },
|
|
{ "Weed", 322, 252, 331, 261, {nullptr, 0, true} },
|
|
{ "Bok", 55, 395, 64, 404, { "Frisbees", 119, true} },
|
|
{ "Pizer", 339, 412, 348, 421, { "Bird Seed", 54, true} },
|
|
{nullptr, 0, 0, 0, 0, {nullptr, 0, true}}
|
|
};
|
|
NPLANET g_levelTwo[9] = {
|
|
{ "Backwater", 108, 18, 117, 27, { "Kayaks", 28, true} },
|
|
{ "Uranus", 161, 126, 170, 135, { "Toilet Paper", 14, true} },
|
|
{ "Toe Jam", 252, 126, 261, 135, { "Peanutbutter", 45, true} },
|
|
{ "Hellhole", 412, 108, 421, 117, { "Pitchforks", 100, true} },
|
|
{ "Pustule", 180, 269, 189, 278, {nullptr, 0, true} },
|
|
{ "Swamp Rock", 340, 234, 349, 243, {nullptr, 0, true} },
|
|
{ "Slug", 36, 341, 45, 350, { "Slime Remover", 75, true} },
|
|
{ "Maggot's Nest", 251, 376, 260, 385, {nullptr, 0, true} },
|
|
{ nullptr, 0, 0, 0, 0, {nullptr, 0, false}}
|
|
};
|
|
NPLANET g_levelThree[11] = {
|
|
{ "Peggleboz", 90, 20, 99, 29, { "Shot Glasses", 99, true} },
|
|
{ "Archeroids", 144, 89, 153, 98, { "Arrows", 8, true} },
|
|
{ "Pack-Rat", 324, 55, 333, 64, { "Turtle Food", 24, true} },
|
|
{ "Beacon", 270, 144, 279, 155, { "Fog Horns", 125, true} },
|
|
{ "Mankala", 72, 251, 81, 260, {nullptr, 0, true} },
|
|
{ "Life", 394, 234, 403, 243, {nullptr, 0, true} },
|
|
{ "Fuge", 270, 324, 279, 333, { "Cotton Candy", 10, true} },
|
|
{ "Garfunkel", 90, 377, 99, 386, {nullptr, 0, true} },
|
|
{ "Battlefish", 359, 359, 368, 368, { "Harpoons", 17, true} },
|
|
{ "No Vacancy", 18, 107, 117, 116, {nullptr, 0, true} },
|
|
{ nullptr, 0, 0, 0, 0, {nullptr, 0, true} }
|
|
};
|
|
|
|
ST_BUTTONS g_navButtons[2] = {
|
|
{ "Quit", "QUP.bmp", "QDOWN.bmp", "QDIS.bmp", "QDIS.bmp", 432, 443, 200, 30, QUIT },
|
|
{ "Instructions", "HUP.bmp", "HDOWN.bmp", "HDIS.bmp", "HDIS.bmp", 4, 443, 200, 30, HELP },
|
|
};
|
|
|
|
const char *g_levelTitle[4] = {
|
|
"Novice",
|
|
"Moderate",
|
|
"Hard",
|
|
"Expert"
|
|
};
|
|
|
|
|
|
// Local functions
|
|
const char *makeDir(const char *pszFile) {
|
|
return formPath(NAV_DIR, pszFile);
|
|
}
|
|
|
|
CNavWindow::CNavWindow() {
|
|
logInfo("Constructing NAV...");
|
|
|
|
_level = 0;
|
|
_pPinna = nullptr;
|
|
_pHpoctyl = nullptr;
|
|
_pArmpit = nullptr;
|
|
_pYzore = nullptr;
|
|
_pBulbus = nullptr;
|
|
_pDingle = nullptr;
|
|
_pKarkas = nullptr;
|
|
_pFruufnia = nullptr;
|
|
_pButtons[0] = nullptr;
|
|
_pButtons[1] = nullptr;
|
|
_pPal = nullptr;
|
|
_pOldPal = nullptr;
|
|
_pMap = nullptr;
|
|
_pCurLoc = nullptr;
|
|
_pNewMap = nullptr;
|
|
_pCurPos = nullptr;
|
|
_pPortName = nullptr;
|
|
_pWilbur = nullptr;
|
|
_pMcKelvey = nullptr;
|
|
_pMedge = nullptr;
|
|
_pWall = nullptr;
|
|
_pWoo = nullptr;
|
|
_pRoman = nullptr;
|
|
_pWeed = nullptr;
|
|
_pBok = nullptr;
|
|
_pPizer = nullptr;
|
|
_pBackwater = nullptr;
|
|
_pUranus = nullptr;
|
|
_pToejam = nullptr;
|
|
_pHellhole = nullptr;
|
|
_pPustule = nullptr;
|
|
_pSwamprock = nullptr;
|
|
_pSlug = nullptr;
|
|
_pMaggotsNest = nullptr;
|
|
_pPeggleboz = nullptr;
|
|
_pArcheroids = nullptr;
|
|
_pPackRat = nullptr;
|
|
_pBeacon = nullptr;
|
|
_pMankala = nullptr;
|
|
_pLife = nullptr;
|
|
_pFuge = nullptr;
|
|
_pGarfunkel = nullptr;
|
|
_pBattleFish = nullptr;
|
|
_pNoVacancy = nullptr;
|
|
_bNavAttached = false;
|
|
|
|
_bmpTwo = nullptr;
|
|
_fuel = 40;
|
|
_cargo = 0;
|
|
_ship = 120;
|
|
_pLevel = nullptr;
|
|
}
|
|
|
|
ErrorCode CNavWindow::attach() {
|
|
assert(isValidObject(this));
|
|
|
|
logInfo("\tCNavWindow::attach()");
|
|
CBagStorageDevWnd::attach();
|
|
|
|
_level = 0;
|
|
|
|
// always starts at Yzore
|
|
_pPortName = new CBofString("Yzore");
|
|
_ship = 120;
|
|
_cargo = 86 + 72 + 56;
|
|
_fuel = 40;
|
|
|
|
// navsim1
|
|
_pPinna = new CBofRect(36, 54, 45, 63);
|
|
_pHpoctyl = new CBofRect(181, 19, 190, 28);
|
|
_pArmpit = new CBofRect(108, 251, 117, 260);
|
|
_pYzore = new CBofRect(251, 271, 260, 280);
|
|
_pBulbus = new CBofRect(323, 197, 332, 206);
|
|
_pDingle = new CBofRect(394, 143, 403, 154);
|
|
_pKarkas = new CBofRect(163, 394, 172, 403);
|
|
_pFruufnia = new CBofRect(306, 393, 315, 402);
|
|
|
|
// navsim2
|
|
_pWilbur = new CBofRect(108, 38, 116, 49);
|
|
_pMcKelvey = new CBofRect(394, 37, 403, 46);
|
|
_pMedge = new CBofRect(19, 90, 28, 99);
|
|
_pWall = new CBofRect(234, 90, 243, 99);
|
|
_pWoo = new CBofRect(108, 306, 119, 315);
|
|
_pRoman = new CBofRect(198, 270, 207, 279);
|
|
_pWeed = new CBofRect(322, 252, 331, 261);
|
|
_pBok = new CBofRect(55, 395, 64, 404);
|
|
_pPizer = new CBofRect(339, 412, 348, 421);
|
|
|
|
// navsim3
|
|
_pBackwater = new CBofRect(108, 18, 117, 27);
|
|
_pUranus = new CBofRect(161, 126, 170, 135);
|
|
_pToejam = new CBofRect(252, 126, 261, 135);
|
|
_pHellhole = new CBofRect(412, 108, 421, 117);
|
|
_pPustule = new CBofRect(180, 269, 189, 278);
|
|
_pSwamprock = new CBofRect(340, 234, 349, 243);
|
|
_pSlug = new CBofRect(36, 341, 45, 350);
|
|
_pMaggotsNest = new CBofRect(251, 376, 260, 385);
|
|
|
|
// navsim4
|
|
_pPeggleboz = new CBofRect(90, 20, 99, 29);
|
|
_pArcheroids = new CBofRect(144, 89, 153, 98);
|
|
_pPackRat = new CBofRect(324, 55, 333, 64);
|
|
_pBeacon = new CBofRect(270, 144, 279, 155);
|
|
_pMankala = new CBofRect(72, 251, 81, 260);
|
|
_pLife = new CBofRect(394, 234, 403, 243);
|
|
_pFuge = new CBofRect(270, 324, 279, 333);
|
|
_pGarfunkel = new CBofRect(90, 377, 99, 386);
|
|
_pBattleFish = new CBofRect(359, 359, 368, 368);
|
|
_pNoVacancy = new CBofRect(18, 107, 117, 116);
|
|
|
|
// Reset all levels
|
|
int i;
|
|
for (i = 0; i < 9; i++) {
|
|
g_level[i].cargo._bUsed = true;
|
|
}
|
|
for (i = 0; i < 10; i++) {
|
|
g_levelOne[i].cargo._bUsed = true;
|
|
}
|
|
for (i = 0; i < 9; i++) {
|
|
g_levelTwo[i].cargo._bUsed = true;
|
|
}
|
|
for (i = 0; i < 11; i++) {
|
|
g_levelThree[i].cargo._bUsed = true;
|
|
}
|
|
|
|
_pLevel = g_level;
|
|
_pCurPos = new CBofRect(*_pYzore);
|
|
|
|
_pOldPal = CBofApp::getApp()->getPalette();
|
|
_pPal = _pBackdrop->getPalette()->copyPalette();
|
|
CBofApp::getApp()->setPalette(_pPal);
|
|
|
|
_pCurLoc = new CBofSprite;
|
|
_pCurLoc->loadSprite(makeDir(CUR_LOC), 2);
|
|
_pCurLoc->setMaskColor(MASK_COLOR);
|
|
_pCurLoc->setZOrder(SPRITE_TOPMOST);
|
|
_pCurLoc->setAnimated(true);
|
|
_pCurLoc->linkSprite();
|
|
_pCurLoc->setPosition(_pCurPos->left, _pCurPos->top);
|
|
|
|
// Build all our buttons
|
|
for (i = 0; i < 2; i++) {
|
|
_pButtons[i] = new CBofBmpButton;
|
|
|
|
CBofBitmap *pUp = loadBitmap(makeDir(g_navButtons[i]._pszUp), _pPal);
|
|
CBofBitmap *pDown = loadBitmap(makeDir(g_navButtons[i]._pszDown), _pPal);
|
|
CBofBitmap *pFocus = loadBitmap(makeDir(g_navButtons[i]._pszFocus), _pPal);
|
|
CBofBitmap *pDis = loadBitmap(makeDir(g_navButtons[i]._pszDisabled), _pPal);
|
|
|
|
_pButtons[i]->loadBitmaps(pUp, pDown, pFocus, pDis);
|
|
_pButtons[i]->create(g_navButtons[i]._pszName, g_navButtons[i]._nLeft, g_navButtons[i]._nTop, g_navButtons[i]._nWidth, g_navButtons[i]._nHeight, this, g_navButtons[i]._nID);
|
|
_pButtons[i]->show();
|
|
}
|
|
|
|
show();
|
|
updateWindow();
|
|
setTimer(777, 200, nullptr);
|
|
|
|
BofPlaySound(makeDir(WELCOME_SND), SOUND_WAVE);
|
|
CSound::waitWaveSounds();
|
|
|
|
CBagCursor::showSystemCursor();
|
|
|
|
_bNavAttached = true;
|
|
|
|
return _errCode;
|
|
}
|
|
|
|
|
|
ErrorCode CNavWindow::detach() {
|
|
assert(isValidObject(this));
|
|
|
|
// If attached
|
|
if (_bNavAttached) {
|
|
|
|
// Get rid of the system cursor
|
|
CBagCursor::hideSystemCursor();
|
|
|
|
// One turn has gone by
|
|
g_VarManager->incrementTimers();
|
|
|
|
_bNavAttached = false;
|
|
}
|
|
|
|
logInfo("\tCNavWindow::detach()");
|
|
|
|
CBofApp::getApp()->setPalette(_pOldPal);
|
|
|
|
delete _pPal;
|
|
_pPal = nullptr;
|
|
|
|
delete _pPortName;
|
|
_pPortName = nullptr;
|
|
|
|
delete _pPinna;
|
|
_pPinna = nullptr;
|
|
|
|
delete _pHpoctyl;
|
|
_pHpoctyl = nullptr;
|
|
|
|
delete _pArmpit;
|
|
_pArmpit = nullptr;
|
|
|
|
delete _pYzore;
|
|
_pYzore = nullptr;
|
|
|
|
delete _pBulbus;
|
|
_pBulbus = nullptr;
|
|
|
|
delete _pDingle;
|
|
_pDingle = nullptr;
|
|
|
|
delete _pKarkas;
|
|
_pKarkas = nullptr;
|
|
|
|
delete _pFruufnia;
|
|
_pFruufnia = nullptr;
|
|
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
|
|
delete _pWilbur;
|
|
_pWilbur = nullptr;
|
|
|
|
delete _pMcKelvey;
|
|
_pMcKelvey = nullptr;
|
|
|
|
delete _pMedge;
|
|
_pMedge = nullptr;
|
|
|
|
delete _pWall;
|
|
_pWall = nullptr;
|
|
|
|
delete _pWoo;
|
|
_pWoo = nullptr;
|
|
|
|
delete _pRoman;
|
|
_pRoman = nullptr;
|
|
|
|
delete _pWeed;
|
|
_pWeed = nullptr;
|
|
|
|
delete _pBok;
|
|
_pBok = nullptr;
|
|
|
|
delete _pPizer;
|
|
_pPizer = nullptr;
|
|
|
|
delete _pBackwater;
|
|
_pBackwater = nullptr;
|
|
|
|
delete _pUranus;
|
|
_pUranus = nullptr;
|
|
|
|
delete _pToejam;
|
|
_pToejam = nullptr;
|
|
|
|
delete _pHellhole;
|
|
_pHellhole = nullptr;
|
|
|
|
delete _pPustule;
|
|
_pPustule = nullptr;
|
|
|
|
delete _pSlug;
|
|
_pSlug = nullptr;
|
|
|
|
delete _pSwamprock;
|
|
_pSwamprock = nullptr;
|
|
|
|
delete _pMaggotsNest;
|
|
_pMaggotsNest = nullptr;
|
|
|
|
delete _pPeggleboz;
|
|
_pPeggleboz = nullptr;
|
|
|
|
delete _pArcheroids;
|
|
_pArcheroids = nullptr;
|
|
|
|
delete _pPackRat;
|
|
_pPackRat = nullptr;
|
|
|
|
delete _pBeacon;
|
|
_pBeacon = nullptr;
|
|
|
|
delete _pMankala;
|
|
_pMankala = nullptr;
|
|
|
|
delete _pLife;
|
|
_pLife = nullptr;
|
|
|
|
delete _pFuge;
|
|
_pFuge = nullptr;
|
|
|
|
delete _pGarfunkel;
|
|
_pGarfunkel = nullptr;
|
|
|
|
delete _pBattleFish;
|
|
_pBattleFish = nullptr;
|
|
|
|
delete _pCurLoc;
|
|
_pCurLoc = nullptr;
|
|
|
|
delete _pNoVacancy;
|
|
_pNoVacancy = nullptr;
|
|
|
|
// Destroy all buttons
|
|
for (int i = 0; i < 2; i++) {
|
|
delete _pButtons[i];
|
|
_pButtons[i] = nullptr;
|
|
}
|
|
|
|
// Close sprite lib
|
|
CBofSprite::closeLibrary();
|
|
|
|
killBackdrop();
|
|
|
|
CBagStorageDevWnd::detach();
|
|
|
|
return _errCode;
|
|
}
|
|
|
|
|
|
void CNavWindow::onMainLoop() {
|
|
// Do nothing
|
|
}
|
|
|
|
|
|
void CNavWindow::onPaint(CBofRect *pRect) {
|
|
assert(isValidObject(this));
|
|
assert(pRect != nullptr);
|
|
|
|
// Render offscreen
|
|
if (_pBackdrop != nullptr) {
|
|
CBofBitmap *pBmp = getWorkBmp();
|
|
if (pBmp != nullptr) {
|
|
_pBackdrop->paint(pBmp, pRect, pRect);
|
|
|
|
// Now update the screen
|
|
pBmp->paint(this, pRect, pRect);
|
|
}
|
|
}
|
|
|
|
setTimer(777, 200, nullptr);
|
|
|
|
// Separated repainting of text
|
|
refreshData();
|
|
}
|
|
|
|
void CNavWindow::refreshData() {
|
|
assert(isValidObject(this));
|
|
|
|
if (_pBackdrop == nullptr)
|
|
return;
|
|
|
|
// Render offscreen
|
|
CBofBitmap *pBmp = getWorkBmp();
|
|
if (pBmp == nullptr)
|
|
return;
|
|
|
|
CBofRect cRect(440, 0, 639, 439);
|
|
CBofBitmap cBmp(200, 440, _pPal);
|
|
pBmp->paint(&cBmp, 0, 0, &cRect);
|
|
|
|
cRect.setRect(0, 10, 199, 25);
|
|
paintText(&cBmp, &cRect, buildString("Current Port of call:"), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left += 10; // Indent this section
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
paintText(&cBmp, &cRect, buildString("%s", _pPortName->getBuffer()), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left -= 10; // Un-indent
|
|
|
|
// Leave blank space before next section
|
|
cRect.top += 30;
|
|
cRect.bottom += 30;
|
|
|
|
paintText(&cBmp, &cRect, buildString("Current Manifest:"), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
|
|
cRect.left += 10; // Indent this section
|
|
char szBuf[100];
|
|
int i = 0;
|
|
while (_pLevel[i].Name != nullptr) {
|
|
if (_pLevel[i].cargo._pszCargo != nullptr && _pLevel[i].cargo._bUsed) {
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
if (_pLevel[i].cargo.Weight != 1)
|
|
Common::sprintf_s(szBuf, "%3d tons of %s", _pLevel[i].cargo.Weight, _pLevel[i].cargo._pszCargo);
|
|
else
|
|
Common::sprintf_s(szBuf, "%3d ton of %s", _pLevel[i].cargo.Weight, _pLevel[i].cargo._pszCargo);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
Common::sprintf_s(szBuf, " for %s", _pLevel[i].Name);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
};
|
|
i++;
|
|
};
|
|
cRect.left -= 10; // Un-indent
|
|
|
|
// Leave blank space before next section
|
|
cRect.top += 30;
|
|
cRect.bottom += 30;
|
|
|
|
paintText(&cBmp, &cRect, buildString("Current Fuel:"), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left += 10; // Indent this section
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
if (_fuel != 1)
|
|
paintText(&cBmp, &cRect, buildString("%3d tons", _fuel), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
else
|
|
paintText(&cBmp, &cRect, buildString("%3d ton", _fuel), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left -= 10; // Un-indent
|
|
|
|
// Leave blank space before next section
|
|
cRect.top += 30;
|
|
cRect.bottom += 30;
|
|
|
|
paintText(&cBmp, &cRect, buildString("Current Tonnage:"), 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
|
|
cRect.left += 10; // Indent this section
|
|
if (_cargo != 1)
|
|
Common::sprintf_s(szBuf, "%3d tons Cargo", _cargo);
|
|
else
|
|
Common::sprintf_s(szBuf, "%3d ton Cargo", _cargo);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
if (_ship != 1)
|
|
Common::sprintf_s(szBuf, "%3d tons Ship", _ship);
|
|
else
|
|
Common::sprintf_s(szBuf, "%3d ton Ship", _ship);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
if (_fuel != 1)
|
|
Common::sprintf_s(szBuf, "%3d tons Fuel", _fuel);
|
|
else
|
|
Common::sprintf_s(szBuf, "%3d ton Fuel", _fuel);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
Common::sprintf_s(szBuf, "%3d tons TOTAL", _ship + _fuel + _cargo);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left -= 10; // Un-indent
|
|
|
|
cRect.top += 30;
|
|
cRect.bottom += 30;
|
|
Common::sprintf_s(szBuf, "Simulation Level:");
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left += 10; // Indent
|
|
cRect.top += 15;
|
|
cRect.bottom += 15;
|
|
Common::sprintf_s(szBuf, "%s", g_levelTitle[_level]);
|
|
paintText(&cBmp, &cRect, szBuf, 14, TEXT_NORMAL, NAV_TEXT_COLOR, JUSTIFY_LEFT, FORMAT_DEFAULT, FONT_MONO);
|
|
cRect.left -= 10; // Un-indent
|
|
cBmp.paint(this, 443, 0);
|
|
}
|
|
|
|
void CNavWindow::onBofButton(CBofObject *pObject, int nState) {
|
|
assert(isValidObject(this));
|
|
assert(pObject != nullptr);
|
|
|
|
if (nState != BUTTON_CLICKED)
|
|
return;
|
|
|
|
CBofButton *pButton = (CBofButton *)pObject;
|
|
switch (pButton->getControlID()) {
|
|
case QUIT: {
|
|
logInfo("\tClicked Quit");
|
|
g_VarManager->getVariable("NPLAYEDNAV")->setBoolValue(true);
|
|
close();
|
|
break;
|
|
}
|
|
case HELP: {
|
|
logInfo("\tClicked Help");
|
|
|
|
killTimer(777);
|
|
CBagel *pApp = CBagel::getBagApp();
|
|
if (pApp != nullptr) {
|
|
CBagMasterWin *pWin = pApp->getMasterWnd();
|
|
if (pWin != nullptr) {
|
|
pWin->onHelp(makeDir("NAVHELP.TXT"));
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
default:
|
|
logWarning(buildString("Clicked Unknown Button with ID %d", pButton->getControlID()));
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void CNavWindow::onLButtonDown(uint32 /*nFlags*/, CBofPoint *pPoint, void *) {
|
|
assert(isValidObject(this));
|
|
assert(pPoint != nullptr);
|
|
|
|
switch (_level) {
|
|
case 0:
|
|
if (_pPinna->ptInRect(*pPoint))
|
|
onPinna();
|
|
|
|
if (_pHpoctyl->ptInRect(*pPoint))
|
|
onHpoctyl();
|
|
|
|
if (_pArmpit->ptInRect(*pPoint))
|
|
onArmpit();
|
|
|
|
if (_pYzore->ptInRect(*pPoint))
|
|
onYzore();
|
|
|
|
if (_pBulbus->ptInRect(*pPoint))
|
|
onBulbus();
|
|
|
|
if (_pDingle->ptInRect(*pPoint))
|
|
onDingle();
|
|
|
|
if (_pKarkas->ptInRect(*pPoint))
|
|
onKarkas();
|
|
|
|
if (_pFruufnia->ptInRect(*pPoint))
|
|
onFruufnia();
|
|
break;
|
|
|
|
case 1:
|
|
if (_pWilbur->ptInRect(*pPoint))
|
|
onWilbur();
|
|
|
|
if (_pMcKelvey->ptInRect(*pPoint))
|
|
onMcKelvey();
|
|
|
|
if (_pMedge->ptInRect(*pPoint))
|
|
onMedge();
|
|
|
|
if (_pWall->ptInRect(*pPoint))
|
|
onWall();
|
|
|
|
if (_pWoo->ptInRect(*pPoint))
|
|
onWoo();
|
|
|
|
if (_pRoman->ptInRect(*pPoint))
|
|
onRoman();
|
|
|
|
if (_pWeed->ptInRect(*pPoint))
|
|
onWeed();
|
|
|
|
if (_pBok->ptInRect(*pPoint))
|
|
onBok();
|
|
|
|
if (_pPizer->ptInRect(*pPoint))
|
|
onPizer();
|
|
|
|
break;
|
|
|
|
case 2:
|
|
if (_pBackwater->ptInRect(*pPoint))
|
|
onBackwater();
|
|
|
|
if (_pUranus->ptInRect(*pPoint))
|
|
onUranus();
|
|
|
|
if (_pToejam->ptInRect(*pPoint))
|
|
onToejam();
|
|
|
|
if (_pHellhole->ptInRect(*pPoint))
|
|
onHellhole();
|
|
|
|
if (_pPustule->ptInRect(*pPoint))
|
|
onPustule();
|
|
|
|
if (_pSwamprock->ptInRect(*pPoint))
|
|
onSwamprock();
|
|
|
|
if (_pSlug->ptInRect(*pPoint))
|
|
onSlug();
|
|
|
|
if (_pMaggotsNest->ptInRect(*pPoint))
|
|
onMaggotsnest();
|
|
|
|
break;
|
|
|
|
case 3:
|
|
if (_pPeggleboz->ptInRect(*pPoint))
|
|
onPeggleboz();
|
|
|
|
if (_pNoVacancy->ptInRect(*pPoint))
|
|
onNoVacancy();
|
|
|
|
if (_pArcheroids->ptInRect(*pPoint))
|
|
onArcheroids();
|
|
|
|
if (_pPackRat->ptInRect(*pPoint))
|
|
onPackRat();
|
|
|
|
if (_pBeacon->ptInRect(*pPoint))
|
|
onBeacon();
|
|
|
|
if (_pMankala->ptInRect(*pPoint))
|
|
onMankala();
|
|
|
|
if (_pLife->ptInRect(*pPoint))
|
|
onLife();
|
|
|
|
if (_pFuge->ptInRect(*pPoint))
|
|
onFuge();
|
|
|
|
if (_pGarfunkel->ptInRect(*pPoint))
|
|
onGarfunkel();
|
|
|
|
if (_pBattleFish->ptInRect(*pPoint))
|
|
onBattlefish();
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
} //close switch
|
|
|
|
if (_cargo <= 0)
|
|
calcFuel(0);
|
|
}
|
|
|
|
|
|
void CNavWindow::onKeyHit(uint32 lKey, uint32 /*lRepCount*/) {
|
|
assert(isValidObject(this));
|
|
|
|
if (lKey == BKEY_ALT_q || lKey == BKEY_ALT_F4) {
|
|
g_VarManager->getVariable("NPLAYEDNAV")->setBoolValue(true);
|
|
close();
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onTimer(uint32 tId) {
|
|
if (tId == 777) {
|
|
_pCurLoc->paintSprite(this, _pCurPos->left, _pCurPos->top);
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onPinna() {
|
|
if (*_pCurPos == *_pPinna) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPinna);
|
|
*_pPortName = "Pinna";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pHpoctyl) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPinna);
|
|
*_pPortName = "Pinna";
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pArmpit) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPinna);
|
|
*_pPortName = "Pinna";
|
|
calcFuel(1.5);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onHpoctyl() {
|
|
if (*_pCurPos == *_pHpoctyl) {
|
|
|
|
*_pPortName = "H'poctyl";
|
|
if (g_level[1].cargo._pszCargo != nullptr && g_level[1].cargo._bUsed) {
|
|
g_level[1].cargo._bUsed = false;
|
|
_cargo -= 72;
|
|
}
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHpoctyl);
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pArmpit) {
|
|
*_pPortName = "H'poctyl";
|
|
if (g_level[1].cargo._pszCargo != nullptr && g_level[1].cargo._bUsed) {
|
|
g_level[1].cargo._bUsed = false;
|
|
_cargo -= 72;
|
|
}
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHpoctyl);
|
|
calcFuel(3.2);
|
|
} else if (*_pCurPos == *_pPinna) {
|
|
*_pPortName = "H'poctyl";
|
|
if (g_level[1].cargo._pszCargo != nullptr && g_level[1].cargo._bUsed) {
|
|
g_level[1].cargo._bUsed = false;
|
|
_cargo -= 72;
|
|
}
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHpoctyl);
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pDingle) {
|
|
*_pPortName = "H'poctyl";
|
|
if (g_level[1].cargo._pszCargo != nullptr && g_level[1].cargo._bUsed) {
|
|
g_level[1].cargo._bUsed = false;
|
|
_cargo -= 72;
|
|
}
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHpoctyl);
|
|
calcFuel(2.4);
|
|
} else if (*_pCurPos == *_pBulbus) {
|
|
*_pPortName = "H'poctyl";
|
|
if (g_level[1].cargo._pszCargo != nullptr && g_level[1].cargo._bUsed) {
|
|
g_level[1].cargo._bUsed = false;
|
|
_cargo -= 72;
|
|
}
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHpoctyl);
|
|
calcFuel(2.8);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
|
|
void CNavWindow::onArmpit() {
|
|
if (*_pCurPos == *_pArmpit) {
|
|
|
|
delete _pCurPos;
|
|
_pCurPos = new CBofRect(*_pArmpit);
|
|
*_pPortName = "Armpit";
|
|
if (g_level[2].cargo._pszCargo != nullptr && g_level[2].cargo._bUsed) {
|
|
g_level[2].cargo._bUsed = false;
|
|
_cargo -= 56;
|
|
}
|
|
|
|
} else if (*_pCurPos == *_pHpoctyl) {
|
|
|
|
delete _pCurPos;
|
|
_pCurPos = new CBofRect(*_pArmpit);
|
|
*_pPortName = "Armpit";
|
|
if (g_level[2].cargo._pszCargo != nullptr && g_level[2].cargo._bUsed) {
|
|
g_level[2].cargo._bUsed = false;
|
|
_cargo -= 56;
|
|
}
|
|
calcFuel(3.2);
|
|
} else if (*_pCurPos == *_pPinna) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArmpit);
|
|
*_pPortName = "Armpit";
|
|
if (g_level[2].cargo._pszCargo != nullptr && g_level[2].cargo._bUsed) {
|
|
g_level[2].cargo._bUsed = false;
|
|
_cargo -= 56;
|
|
}
|
|
calcFuel(1.5);
|
|
} else if (*_pCurPos == *_pKarkas) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArmpit);
|
|
*_pPortName = "Armpit";
|
|
if (g_level[2].cargo._pszCargo != nullptr && g_level[2].cargo._bUsed) {
|
|
g_level[2].cargo._bUsed = false;
|
|
_cargo -= 56;
|
|
}
|
|
calcFuel(2.3);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onYzore() {
|
|
if (*_pCurPos == *_pYzore) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Yzore";
|
|
_pCurPos = new CBofRect(*_pYzore);
|
|
} else if (*_pCurPos == *_pKarkas) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pYzore);
|
|
*_pPortName = "Yzore";
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pFruufnia) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pYzore);
|
|
*_pPortName = "Yzore";
|
|
calcFuel(4.0);
|
|
} else if (*_pCurPos == *_pBulbus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pYzore);
|
|
*_pPortName = "Yzore";
|
|
calcFuel(1.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onBulbus() {
|
|
if (*_pCurPos == *_pBulbus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Bulbus";
|
|
_pCurPos = new CBofRect(*_pBulbus);
|
|
} else if (*_pCurPos == *_pHpoctyl) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBulbus);
|
|
*_pPortName = "Bulbus";
|
|
calcFuel(2.8);
|
|
} else if (*_pCurPos == *_pYzore) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBulbus);
|
|
*_pPortName = "Bulbus";
|
|
calcFuel(1.2);
|
|
} else if (*_pCurPos == *_pDingle) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBulbus);
|
|
*_pPortName = "Bulbus";
|
|
calcFuel(1.9);
|
|
} else if (*_pCurPos == *_pFruufnia) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBulbus);
|
|
*_pPortName = "Bulbus";
|
|
calcFuel(3.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onDingle() {
|
|
if (*_pCurPos == *_pDingle) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Dingle";
|
|
_pCurPos = new CBofRect(*_pDingle);
|
|
} else if (*_pCurPos == *_pHpoctyl) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pDingle);
|
|
*_pPortName = "Dingle";
|
|
calcFuel(2.4);
|
|
} else if (*_pCurPos == *_pBulbus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pDingle);
|
|
*_pPortName = "Dingle";
|
|
calcFuel(1.9);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onKarkas() {
|
|
if (*_pCurPos == *_pKarkas) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Karkas";
|
|
_pCurPos = new CBofRect(*_pKarkas);
|
|
} else if (*_pCurPos == *_pArmpit) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pKarkas);
|
|
*_pPortName = "Karkas";
|
|
calcFuel(2.3);
|
|
} else if (*_pCurPos == *_pYzore) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pKarkas);
|
|
*_pPortName = "Karkas";
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pFruufnia) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pKarkas);
|
|
*_pPortName = "Karkas";
|
|
calcFuel(1.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onFruufnia() {
|
|
if (*_pCurPos == *_pFruufnia) {
|
|
delete _pCurPos;
|
|
*_pPortName = "Fruufnia";
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFruufnia);
|
|
if (g_level[7].cargo._pszCargo != nullptr && g_level[7].cargo._bUsed) {
|
|
g_level[7].cargo._bUsed = false;
|
|
_cargo -= 86;
|
|
}
|
|
} else if (*_pCurPos == *_pKarkas) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFruufnia);
|
|
*_pPortName = "Fruufnia";
|
|
if (g_level[7].cargo._pszCargo != nullptr && g_level[7].cargo._bUsed) {
|
|
g_level[7].cargo._bUsed = false;
|
|
_cargo -= 86;
|
|
}
|
|
calcFuel(1.7);
|
|
} else if (*_pCurPos == *_pYzore) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFruufnia);
|
|
*_pPortName = "Fruufnia";
|
|
if (g_level[7].cargo._pszCargo != nullptr && g_level[7].cargo._bUsed) {
|
|
g_level[7].cargo._bUsed = false;
|
|
_cargo -= 86;
|
|
}
|
|
calcFuel(4.0);
|
|
} else if (*_pCurPos == *_pBulbus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFruufnia);
|
|
*_pPortName = "Fruufnia";
|
|
if (g_level[7].cargo._pszCargo != nullptr && g_level[7].cargo._bUsed) {
|
|
g_level[7].cargo._bUsed = false;
|
|
_cargo -= 86;
|
|
}
|
|
calcFuel(3.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onWilbur() {
|
|
if (*_pCurPos == *_pWilbur) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Wilbur";
|
|
_pCurPos = new CBofRect(*_pWilbur);
|
|
} else if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWilbur);
|
|
*_pPortName = "Wilbur";
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pMcKelvey) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWilbur);
|
|
*_pPortName = "Wilbur";
|
|
calcFuel(3.6);
|
|
} else if (*_pCurPos == *_pMedge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWilbur);
|
|
*_pPortName = "Wilbur";
|
|
calcFuel(2.1);
|
|
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onMcKelvey() {
|
|
if (*_pCurPos == *_pMcKelvey) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "McKelvey";
|
|
_pCurPos = new CBofRect(*_pMcKelvey);
|
|
} else if (*_pCurPos == *_pWilbur) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMcKelvey);
|
|
*_pPortName = "McKelvey";
|
|
calcFuel(3.6);
|
|
} else if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMcKelvey);
|
|
*_pPortName = "McKelvey";
|
|
calcFuel(5.3);
|
|
} else if (*_pCurPos == *_pWeed) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMcKelvey);
|
|
*_pPortName = "McKelvey";
|
|
calcFuel(2.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onMedge() {
|
|
if (*_pCurPos == *_pMedge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMedge);
|
|
*_pPortName = "Medge";
|
|
if (g_levelOne[2].cargo._pszCargo != nullptr && g_levelOne[2].cargo._bUsed) {
|
|
g_levelOne[2].cargo._bUsed = false;
|
|
_cargo -= 127;
|
|
}
|
|
} else if (*_pCurPos == *_pWilbur) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMedge);
|
|
*_pPortName = "Medge";
|
|
if (g_levelOne[2].cargo._pszCargo != nullptr && g_levelOne[2].cargo._bUsed) {
|
|
g_levelOne[2].cargo._bUsed = false;
|
|
_cargo -= 127;
|
|
}
|
|
calcFuel(2.1);
|
|
} else if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMedge);
|
|
*_pPortName = "Medge";
|
|
if (g_levelOne[2].cargo._pszCargo != nullptr && g_levelOne[2].cargo._bUsed) {
|
|
g_levelOne[2].cargo._bUsed = false;
|
|
_cargo -= 127;
|
|
}
|
|
calcFuel(1.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onWall() {
|
|
if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Wall";
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
} else if (*_pCurPos == *_pMcKelvey) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
*_pPortName = "Wall";
|
|
calcFuel(5.3);
|
|
} else if (*_pCurPos == *_pWeed) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
*_pPortName = "Wall";
|
|
calcFuel(1.4);
|
|
} else if (*_pCurPos == *_pWilbur) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
*_pPortName = "Wall";
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pMedge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
*_pPortName = "Wall";
|
|
calcFuel(1.2);
|
|
} else if (*_pCurPos == *_pRoman) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Wall";
|
|
_pCurPos = new CBofRect(*_pWall);
|
|
calcFuel(1.9);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onWoo() {
|
|
if (*_pCurPos == *_pWoo) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Woo";
|
|
_pCurPos = new CBofRect(*_pWoo);
|
|
} else if (*_pCurPos == *_pRoman) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWoo);
|
|
*_pPortName = "Woo";
|
|
calcFuel(2.7);
|
|
} else if (*_pCurPos == *_pBok) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWoo);
|
|
*_pPortName = "Woo";
|
|
calcFuel(3.9);
|
|
} else if (*_pCurPos == *_pPizer) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWoo);
|
|
*_pPortName = "Woo";
|
|
calcFuel(1.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onRoman() {
|
|
if (*_pCurPos == *_pRoman) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Roman";
|
|
_pCurPos = new CBofRect(*_pRoman);
|
|
if (g_levelOne[5].cargo._pszCargo != nullptr && g_levelOne[5].cargo._bUsed) {
|
|
g_levelOne[5].cargo._bUsed = false;
|
|
_cargo -= 20;
|
|
}
|
|
} else if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pRoman);
|
|
*_pPortName = "Roman";
|
|
if (g_levelOne[5].cargo._pszCargo != nullptr && g_levelOne[5].cargo._bUsed) {
|
|
g_levelOne[5].cargo._bUsed = false;
|
|
_cargo -= 20;
|
|
}
|
|
calcFuel(1.9);
|
|
} else if (*_pCurPos == *_pWoo) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pRoman);
|
|
*_pPortName = "Roman";
|
|
if (g_levelOne[5].cargo._pszCargo != nullptr && g_levelOne[5].cargo._bUsed) {
|
|
g_levelOne[5].cargo._bUsed = false;
|
|
_cargo -= 20;
|
|
}
|
|
calcFuel(2.7);
|
|
} else if (*_pCurPos == *_pPizer) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pRoman);
|
|
*_pPortName = "Roman";
|
|
if (g_levelOne[5].cargo._pszCargo != nullptr && g_levelOne[5].cargo._bUsed) {
|
|
g_levelOne[5].cargo._bUsed = false;
|
|
_cargo -= 20;
|
|
}
|
|
calcFuel(4.6);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::pause() {
|
|
CursorMan.showMouse(false);
|
|
|
|
// Pause for four seconds
|
|
EventLoop eventLoop;
|
|
uint32 expiry = g_system->getMillis() + 4000;
|
|
|
|
while (g_system->getMillis() < expiry && !eventLoop.frame()) {
|
|
}
|
|
|
|
CursorMan.showMouse(true);
|
|
}
|
|
|
|
void CNavWindow::calcFuel(double hf) {
|
|
assert(isValidObject(this));
|
|
CBofRect cRect(0, 0, 439, 439);
|
|
|
|
_fuel -= (int)((_ship + _fuel + _cargo) * hf * .01);
|
|
|
|
if (_cargo == 0) {
|
|
_pCurLoc->eraseSprite(this);
|
|
refreshData();
|
|
killTimer(777);
|
|
_pCurLoc->setCel(0);
|
|
_pCurLoc->paintSprite(this, _pCurPos->left, _pCurPos->top);
|
|
|
|
// WORKAROUND: _pBackdrop shares it's palette with _pCurLoc,
|
|
// so as the backdrop is changed, don't free the palette
|
|
assert(_pBackdrop != nullptr);
|
|
_pBackdrop->setIsOwnPalette(false);
|
|
bool isDone = (_level == 3);
|
|
|
|
if (_level == 3) {
|
|
g_VarManager->getVariable("NPASSEDTEST")->setBoolValue(true);
|
|
g_VarManager->getVariable("NPLAYEDNAV")->setBoolValue(true);
|
|
close();
|
|
}
|
|
|
|
if (_level == 2) {
|
|
pause();
|
|
CBofString sNebDir(NEBSIM4_BMP);
|
|
fixPathName(sNebDir);
|
|
_bmpTwo = new CBofBitmap(sNebDir.getBuffer(), _pPal);
|
|
setBackground(_bmpTwo);
|
|
_cargo = 125 + 10 + 17 + 8 + 99 + 24;
|
|
_ship = 65;
|
|
_fuel = 45;
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
_level = 3;
|
|
_pLevel = g_levelThree;
|
|
*_pPortName = "Mankala";
|
|
}
|
|
|
|
if (_level == 1) {
|
|
pause();
|
|
CBofString sNebDir(NEBSIM3_BMP);
|
|
fixPathName(sNebDir);
|
|
_bmpTwo = new CBofBitmap(sNebDir.getBuffer(), _pPal);
|
|
setBackground(_bmpTwo);
|
|
_cargo = 100 + 75 + 28 + 45 + 14;
|
|
_ship = 99;
|
|
_fuel = 36;
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMaggotsNest);
|
|
_level = 2;
|
|
_pLevel = g_levelTwo;
|
|
*_pPortName = "Maggot's Nest";
|
|
}
|
|
|
|
if (_level == 0) {
|
|
pause();
|
|
CBofString sNebDir(NEBSIM2_BMP);
|
|
fixPathName(sNebDir);
|
|
assert(_pBackdrop != nullptr);
|
|
_bmpTwo = new CBofBitmap(sNebDir.getBuffer(), _pPal);
|
|
setBackground(_bmpTwo);
|
|
_cargo = 54 + 119 + 20 + 127;
|
|
_ship = 120;
|
|
_fuel = 75;
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMcKelvey);
|
|
_level = 1;
|
|
_pLevel = g_levelOne;
|
|
*_pPortName = "McKelvey";
|
|
}
|
|
|
|
invalidateRect(&cRect);
|
|
if (!isDone)
|
|
updateWindow();
|
|
|
|
// WORKAROUND: Restore owns palette flag back again
|
|
_pBackdrop->setIsOwnPalette(true);
|
|
}
|
|
|
|
if (_fuel <= 0) {
|
|
g_VarManager->getVariable("NPLAYEDNAV")->setBoolValue(true);
|
|
killTimer(777);
|
|
close();
|
|
}
|
|
|
|
_pCurLoc->eraseSprite(this);
|
|
refreshData();
|
|
_pCurLoc->paintSprite(this, _pCurPos->left, _pCurPos->top);
|
|
}
|
|
|
|
void CNavWindow::onWeed() {
|
|
if (*_pCurPos == *_pWeed) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Weed";
|
|
_pCurPos = new CBofRect(*_pWeed);
|
|
} else if (*_pCurPos == *_pMcKelvey) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWeed);
|
|
*_pPortName = "Weed";
|
|
calcFuel(2.7);
|
|
} else if (*_pCurPos == *_pWall) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWeed);
|
|
*_pPortName = "Weed";
|
|
calcFuel(1.4);
|
|
} else if (*_pCurPos == *_pPizer) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pWeed);
|
|
*_pPortName = "Weed";
|
|
calcFuel(2.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onBok() {
|
|
if (*_pCurPos == *_pBok) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBok);
|
|
*_pPortName = "Bok";
|
|
if (g_levelOne[7].cargo._pszCargo != nullptr && g_levelOne[7].cargo._bUsed) {
|
|
g_levelOne[7].cargo._bUsed = false;
|
|
_cargo -= 119;
|
|
}
|
|
} else if (*_pCurPos == *_pWoo) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBok);
|
|
*_pPortName = "Bok";
|
|
if (g_levelOne[7].cargo._pszCargo != nullptr && g_levelOne[7].cargo._bUsed) {
|
|
g_levelOne[7].cargo._bUsed = false;
|
|
_cargo -= 119;
|
|
}
|
|
calcFuel(3.9);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onPizer() {
|
|
if (*_pCurPos == *_pPizer) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPizer);
|
|
*_pPortName = "Pizer";
|
|
if (g_levelOne[8].cargo._pszCargo != nullptr && g_levelOne[8].cargo._bUsed) {
|
|
g_levelOne[8].cargo._bUsed = false;
|
|
_cargo -= 54;
|
|
}
|
|
} else if (*_pCurPos == *_pWoo) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPizer);
|
|
*_pPortName = "Pizer";
|
|
if (g_levelOne[8].cargo._pszCargo != nullptr && g_levelOne[8].cargo._bUsed) {
|
|
g_levelOne[8].cargo._bUsed = false;
|
|
_cargo -= 54;
|
|
}
|
|
calcFuel(1.7);
|
|
} else if (*_pCurPos == *_pRoman) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPizer);
|
|
*_pPortName = "Pizer";
|
|
if (g_levelOne[8].cargo._pszCargo != nullptr && g_levelOne[8].cargo._bUsed) {
|
|
g_levelOne[8].cargo._bUsed = false;
|
|
_cargo -= 54;
|
|
}
|
|
calcFuel(4.6);
|
|
} else if (*_pCurPos == *_pWeed) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPizer);
|
|
*_pPortName = "Pizer";
|
|
if (g_levelOne[8].cargo._pszCargo != nullptr && g_levelOne[8].cargo._bUsed) {
|
|
g_levelOne[8].cargo._bUsed = false;
|
|
_cargo -= 54;
|
|
}
|
|
calcFuel(2.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onBackwater() {
|
|
if (*_pCurPos == *_pBackwater) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBackwater);
|
|
*_pPortName = "Backwater";
|
|
if (g_levelTwo[0].cargo._pszCargo != nullptr && g_levelTwo[0].cargo._bUsed) {
|
|
g_levelTwo[0].cargo._bUsed = false;
|
|
_cargo -= 28;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pUranus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBackwater);
|
|
*_pPortName = "Backwater";
|
|
if (g_levelTwo[0].cargo._pszCargo != nullptr && g_levelTwo[0].cargo._bUsed) {
|
|
g_levelTwo[0].cargo._bUsed = false;
|
|
_cargo -= 28;
|
|
}
|
|
calcFuel(4.5);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onUranus() {
|
|
if (*_pCurPos == *_pUranus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pUranus);
|
|
*_pPortName = "Uranus";
|
|
if (g_levelTwo[1].cargo._pszCargo != nullptr && g_levelTwo[1].cargo._bUsed) {
|
|
g_levelTwo[1].cargo._bUsed = false;
|
|
_cargo -= 14;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pBackwater) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pUranus);
|
|
*_pPortName = "Uranus";
|
|
if (g_levelTwo[1].cargo._pszCargo != nullptr && g_levelTwo[1].cargo._bUsed) {
|
|
g_levelTwo[1].cargo._bUsed = false;
|
|
_cargo -= 14;
|
|
}
|
|
calcFuel(4.5);
|
|
} else if (*_pCurPos == *_pToejam) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pUranus);
|
|
*_pPortName = "Uranus";
|
|
if (g_levelTwo[1].cargo._pszCargo != nullptr && g_levelTwo[1].cargo._bUsed) {
|
|
g_levelTwo[1].cargo._bUsed = false;
|
|
_cargo -= 14;
|
|
}
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pPustule) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pUranus);
|
|
*_pPortName = "Uranus";
|
|
if (g_levelTwo[1].cargo._pszCargo != nullptr && g_levelTwo[1].cargo._bUsed) {
|
|
g_levelTwo[1].cargo._bUsed = false;
|
|
_cargo -= 14;
|
|
}
|
|
calcFuel(2.9);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onToejam() {
|
|
if (*_pCurPos == *_pToejam) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pToejam);
|
|
*_pPortName = "Toe Jam";
|
|
if (g_levelTwo[2].cargo._pszCargo != nullptr && g_levelTwo[2].cargo._bUsed) {
|
|
g_levelTwo[2].cargo._bUsed = false;
|
|
_cargo -= 45;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pUranus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pToejam);
|
|
*_pPortName = "Toe Jam";
|
|
if (g_levelTwo[2].cargo._pszCargo != nullptr && g_levelTwo[2].cargo._bUsed) {
|
|
g_levelTwo[2].cargo._bUsed = false;
|
|
_cargo -= 45;
|
|
}
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pHellhole) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pToejam);
|
|
*_pPortName = "Toe Jam";
|
|
if (g_levelTwo[2].cargo._pszCargo != nullptr && g_levelTwo[2].cargo._bUsed) {
|
|
g_levelTwo[2].cargo._bUsed = false;
|
|
_cargo -= 45;
|
|
}
|
|
calcFuel(2.0);
|
|
} else if (*_pCurPos == *_pPustule) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pToejam);
|
|
*_pPortName = "Toe Jam";
|
|
if (g_levelTwo[2].cargo._pszCargo != nullptr && g_levelTwo[2].cargo._bUsed) {
|
|
g_levelTwo[2].cargo._bUsed = false;
|
|
_cargo -= 45;
|
|
}
|
|
calcFuel(1.1);
|
|
} else if (*_pCurPos == *_pSwamprock) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pToejam);
|
|
*_pPortName = "Toe Jam";
|
|
if (g_levelTwo[2].cargo._pszCargo != nullptr && g_levelTwo[2].cargo._bUsed) {
|
|
g_levelTwo[2].cargo._bUsed = false;
|
|
_cargo -= 45;
|
|
}
|
|
calcFuel(1.8);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onHellhole() {
|
|
if (*_pCurPos == *_pHellhole) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHellhole);
|
|
*_pPortName = "Hellhole";
|
|
if (g_levelTwo[3].cargo._pszCargo != nullptr && g_levelTwo[3].cargo._bUsed) {
|
|
g_levelTwo[3].cargo._bUsed = false;
|
|
_cargo -= 100;
|
|
}
|
|
calcFuel(1.8);
|
|
} else if (*_pCurPos == *_pToejam) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHellhole);
|
|
*_pPortName = "Hellhole";
|
|
if (g_levelTwo[3].cargo._pszCargo != nullptr && g_levelTwo[3].cargo._bUsed) {
|
|
g_levelTwo[3].cargo._bUsed = false;
|
|
_cargo -= 100;
|
|
}
|
|
calcFuel(2.0);
|
|
} else if (*_pCurPos == *_pSwamprock) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pHellhole);
|
|
*_pPortName = "Hellhole";
|
|
if (g_levelTwo[3].cargo._pszCargo != nullptr && g_levelTwo[3].cargo._bUsed) {
|
|
g_levelTwo[3].cargo._bUsed = false;
|
|
_cargo -= 100;
|
|
}
|
|
calcFuel(1.3);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onPustule() {
|
|
if (*_pCurPos == *_pPustule) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPustule);
|
|
*_pPortName = "Pustule";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pUranus) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPustule);
|
|
*_pPortName = "Pustule";
|
|
calcFuel(2.9);
|
|
} else if (*_pCurPos == *_pToejam) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPustule);
|
|
*_pPortName = "Pustule";
|
|
calcFuel(1.1);
|
|
} else if (*_pCurPos == *_pSlug) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPustule);
|
|
*_pPortName = "Pustule";
|
|
calcFuel(3.4);
|
|
} else if (*_pCurPos == *_pMaggotsNest) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPustule);
|
|
*_pPortName = "Pustule";
|
|
calcFuel(2.3);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onSwamprock() {
|
|
if (*_pCurPos == *_pSwamprock) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSwamprock);
|
|
*_pPortName = "Swamp Rock";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pToejam) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSwamprock);
|
|
*_pPortName = "Swamp Rock";
|
|
calcFuel(1.8);
|
|
} else if (*_pCurPos == *_pHellhole) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
*_pPortName = "Swamp Rock";
|
|
_pCurPos = new CBofRect(*_pSwamprock);
|
|
calcFuel(1.3);
|
|
} else if (*_pCurPos == *_pMaggotsNest) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSwamprock);
|
|
*_pPortName = "Swamp Rock";
|
|
calcFuel(1.9);
|
|
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onSlug() {
|
|
if (*_pCurPos == *_pSlug) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSlug);
|
|
*_pPortName = "Slug";
|
|
if (g_levelTwo[6].cargo._pszCargo != nullptr && g_levelTwo[6].cargo._bUsed) {
|
|
g_levelTwo[6].cargo._bUsed = false;
|
|
_cargo -= 75;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pPustule) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSlug);
|
|
*_pPortName = "Slug";
|
|
if (g_levelTwo[6].cargo._pszCargo != nullptr && g_levelTwo[6].cargo._bUsed) {
|
|
g_levelTwo[6].cargo._bUsed = false;
|
|
_cargo -= 75;
|
|
}
|
|
calcFuel(3.4);
|
|
} else if (*_pCurPos == *_pMaggotsNest) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pSlug);
|
|
*_pPortName = "Slug";
|
|
if (g_levelTwo[6].cargo._pszCargo != nullptr && g_levelTwo[6].cargo._bUsed) {
|
|
g_levelTwo[6].cargo._bUsed = false;
|
|
_cargo -= 75;
|
|
}
|
|
calcFuel(1.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onMaggotsnest() {
|
|
if (*_pCurPos == *_pMaggotsNest) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMaggotsNest);
|
|
*_pPortName = "Maggot's Nest";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pPustule) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMaggotsNest);
|
|
*_pPortName = "Maggot's Nest";
|
|
calcFuel(2.3);
|
|
} else if (*_pCurPos == *_pSwamprock) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMaggotsNest);
|
|
*_pPortName = "Maggot's Nest";
|
|
calcFuel(1.9);
|
|
} else if (*_pCurPos == *_pSlug) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMaggotsNest);
|
|
*_pPortName = "Maggot's Nest";
|
|
calcFuel(1.7);
|
|
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onPeggleboz() {
|
|
if (*_pCurPos == *_pPeggleboz) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPeggleboz);
|
|
*_pPortName = "Peggleboz";
|
|
if (g_levelThree[0].cargo._pszCargo != nullptr && g_levelThree[0].cargo._bUsed) {
|
|
g_levelThree[0].cargo._bUsed = false;
|
|
_cargo -= 99;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pArcheroids) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPeggleboz);
|
|
*_pPortName = "Peggleboz";
|
|
if (g_levelThree[0].cargo._pszCargo != nullptr && g_levelThree[0].cargo._bUsed) {
|
|
g_levelThree[0].cargo._bUsed = false;
|
|
_cargo -= 99;
|
|
}
|
|
calcFuel(4.7);
|
|
} else if (*_pCurPos == *_pNoVacancy) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPeggleboz);
|
|
*_pPortName = "Peggleboz";
|
|
if (g_levelThree[0].cargo._pszCargo != nullptr && g_levelThree[0].cargo._bUsed) {
|
|
g_levelThree[0].cargo._bUsed = false;
|
|
_cargo -= 99;
|
|
}
|
|
calcFuel(2.4);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onArcheroids() {
|
|
if (*_pCurPos == *_pArcheroids) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArcheroids);
|
|
*_pPortName = "Archeroids";
|
|
if (g_levelThree[1].cargo._pszCargo != nullptr && g_levelThree[1].cargo._bUsed) {
|
|
g_levelThree[1].cargo._bUsed = false;
|
|
_cargo -= 8;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pPeggleboz) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArcheroids);
|
|
*_pPortName = "Archeroids";
|
|
if (g_levelThree[1].cargo._pszCargo != nullptr && g_levelThree[1].cargo._bUsed) {
|
|
g_levelThree[1].cargo._bUsed = false;
|
|
_cargo -= 8;
|
|
}
|
|
calcFuel(4.7);
|
|
} else if (*_pCurPos == *_pPackRat) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArcheroids);
|
|
*_pPortName = "Archeroids";
|
|
if (g_levelThree[1].cargo._pszCargo != nullptr && g_levelThree[1].cargo._bUsed) {
|
|
g_levelThree[1].cargo._bUsed = false;
|
|
_cargo -= 8;
|
|
}
|
|
calcFuel(3.3);
|
|
} else if (*_pCurPos == *_pMankala) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArcheroids);
|
|
*_pPortName = "Archeroids";
|
|
if (g_levelThree[1].cargo._pszCargo != nullptr && g_levelThree[1].cargo._bUsed) {
|
|
g_levelThree[1].cargo._bUsed = false;
|
|
_cargo -= 8;
|
|
}
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pArcheroids);
|
|
*_pPortName = "Archeroids";
|
|
if (g_levelThree[1].cargo._pszCargo != nullptr && g_levelThree[1].cargo._bUsed) {
|
|
g_levelThree[1].cargo._bUsed = false;
|
|
_cargo -= 8;
|
|
}
|
|
calcFuel(1.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onPackRat() {
|
|
if (*_pCurPos == *_pPackRat) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPackRat);
|
|
*_pPortName = "Pack-Rat";
|
|
if (g_levelThree[2].cargo._pszCargo != nullptr && g_levelThree[2].cargo._bUsed) {
|
|
g_levelThree[2].cargo._bUsed = false;
|
|
_cargo -= 24;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pArcheroids) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPackRat);
|
|
*_pPortName = "Pack-Rat";
|
|
if (g_levelThree[2].cargo._pszCargo != nullptr && g_levelThree[2].cargo._bUsed) {
|
|
g_levelThree[2].cargo._bUsed = false;
|
|
_cargo -= 24;
|
|
}
|
|
calcFuel(3.3);
|
|
} else if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pPackRat);
|
|
*_pPortName = "Pack-Rat";
|
|
if (g_levelThree[2].cargo._pszCargo != nullptr && g_levelThree[2].cargo._bUsed) {
|
|
g_levelThree[2].cargo._bUsed = false;
|
|
_cargo -= 24;
|
|
}
|
|
calcFuel(5.2);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onBeacon() {
|
|
if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pArcheroids) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(1.2);
|
|
} else if (*_pCurPos == *_pPackRat) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(5.2);
|
|
} else if (*_pCurPos == *_pMankala) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(3.8);
|
|
} else if (*_pCurPos == *_pLife) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(3.1);
|
|
} else if (*_pCurPos == *_pFuge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBeacon);
|
|
*_pPortName = "Beacon";
|
|
if (g_levelThree[3].cargo._pszCargo != nullptr && g_levelThree[3].cargo._bUsed) {
|
|
g_levelThree[3].cargo._bUsed = false;
|
|
_cargo -= 125;
|
|
}
|
|
calcFuel(1.8);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onMankala() {
|
|
if (*_pCurPos == *_pMankala) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
*_pPortName = "Mankala";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pArcheroids) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
*_pPortName = "Mankala";
|
|
calcFuel(2.6);
|
|
} else if (*_pCurPos == *_pNoVacancy) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
*_pPortName = "Mankala";
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
*_pPortName = "Mankala";
|
|
calcFuel(3.8);
|
|
} else if (*_pCurPos == *_pGarfunkel) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pMankala);
|
|
*_pPortName = "Mankala";
|
|
calcFuel(1.7);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onLife() {
|
|
if (*_pCurPos == *_pLife) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pLife);
|
|
*_pPortName = "Life";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pFuge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pLife);
|
|
*_pPortName = "Life";
|
|
calcFuel(2.9);
|
|
} else if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pLife);
|
|
*_pPortName = "Life";
|
|
calcFuel(3.1);
|
|
} else if (*_pCurPos == *_pBattleFish) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pLife);
|
|
*_pPortName = "Life";
|
|
calcFuel(1.1);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onFuge() {
|
|
if (*_pCurPos == *_pFuge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFuge);
|
|
*_pPortName = "Fuge";
|
|
if (g_levelThree[6].cargo._pszCargo != nullptr && g_levelThree[6].cargo._bUsed) {
|
|
g_levelThree[6].cargo._bUsed = false;
|
|
_cargo -= 10;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pGarfunkel) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFuge);
|
|
*_pPortName = "Fuge";
|
|
if (g_levelThree[6].cargo._pszCargo != nullptr && g_levelThree[6].cargo._bUsed) {
|
|
g_levelThree[6].cargo._bUsed = false;
|
|
_cargo -= 10;
|
|
}
|
|
calcFuel(1.5);
|
|
} else if (*_pCurPos == *_pBeacon) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFuge);
|
|
*_pPortName = "Fuge";
|
|
if (g_levelThree[6].cargo._pszCargo != nullptr && g_levelThree[6].cargo._bUsed) {
|
|
g_levelThree[6].cargo._bUsed = false;
|
|
_cargo -= 10;
|
|
}
|
|
calcFuel(1.8);
|
|
} else if (*_pCurPos == *_pLife) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFuge);
|
|
*_pPortName = "Fuge";
|
|
if (g_levelThree[6].cargo._pszCargo != nullptr && g_levelThree[6].cargo._bUsed) {
|
|
g_levelThree[6].cargo._bUsed = false;
|
|
_cargo -= 10;
|
|
}
|
|
calcFuel(2.9);
|
|
} else if (*_pCurPos == *_pBattleFish) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pFuge);
|
|
*_pPortName = "Fuge";
|
|
if (g_levelThree[6].cargo._pszCargo != nullptr && g_levelThree[6].cargo._bUsed) {
|
|
g_levelThree[6].cargo._bUsed = false;
|
|
_cargo -= 10;
|
|
}
|
|
calcFuel(2.0);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onGarfunkel() {
|
|
if (*_pCurPos == *_pGarfunkel) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pGarfunkel);
|
|
*_pPortName = "Garfunkel";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pMankala) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pGarfunkel);
|
|
*_pPortName = "Garfunkel";
|
|
calcFuel(1.7);
|
|
} else if (*_pCurPos == *_pFuge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pGarfunkel);
|
|
*_pPortName = "Garfunkel";
|
|
calcFuel(1.5);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onBattlefish() {
|
|
if (*_pCurPos == *_pBattleFish) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBattleFish);
|
|
*_pPortName = "Battlefish";
|
|
if (g_levelThree[8].cargo._pszCargo != nullptr && g_levelThree[8].cargo._bUsed) {
|
|
g_levelThree[8].cargo._bUsed = false;
|
|
_cargo -= 17;
|
|
}
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pFuge) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBattleFish);
|
|
*_pPortName = "Battlefish";
|
|
if (g_levelThree[8].cargo._pszCargo != nullptr && g_levelThree[8].cargo._bUsed) {
|
|
g_levelThree[8].cargo._bUsed = false;
|
|
_cargo -= 17;
|
|
}
|
|
calcFuel(2);
|
|
|
|
} else if (*_pCurPos == *_pLife) {
|
|
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pBattleFish);
|
|
*_pPortName = "Battlefish";
|
|
if (g_levelThree[8].cargo._pszCargo != nullptr && g_levelThree[8].cargo._bUsed) {
|
|
g_levelThree[8].cargo._bUsed = false;
|
|
_cargo -= 17;
|
|
}
|
|
calcFuel(1.1);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
void CNavWindow::onNoVacancy() {
|
|
if (*_pCurPos == *_pNoVacancy) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pNoVacancy);
|
|
*_pPortName = "No Vacancy";
|
|
calcFuel(0);
|
|
} else if (*_pCurPos == *_pMankala) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pNoVacancy);
|
|
*_pPortName = "No Vacancy";
|
|
calcFuel(1.6);
|
|
} else if (*_pCurPos == *_pPeggleboz) {
|
|
delete _pCurPos;
|
|
_pCurPos = nullptr;
|
|
_pCurPos = new CBofRect(*_pNoVacancy);
|
|
*_pPortName = "No Vacancy";
|
|
calcFuel(2.4);
|
|
} else {
|
|
bofMessageBox("Destination unavailable !!", "Test Warning");
|
|
}
|
|
}
|
|
|
|
} // namespace SpaceBar
|
|
} // namespace Bagel
|