aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNipun Garg2019-07-30 03:50:28 +0530
committerEugene Sandulenko2019-09-03 17:17:30 +0200
commitb8bbc32a89e53f6eb271d848cdb4935494c0f43f (patch)
tree2ee92e4dd65ef50716b8ebe63eca4cab93571b0a
parent3acb70c759586faef9a5f9f5131c6da6e17e5f89 (diff)
downloadscummvm-rg350-b8bbc32a89e53f6eb271d848cdb4935494c0f43f.tar.gz
scummvm-rg350-b8bbc32a89e53f6eb271d848cdb4935494c0f43f.tar.bz2
scummvm-rg350-b8bbc32a89e53f6eb271d848cdb4935494c0f43f.zip
HDB: Add support for the PPC version
-rw-r--r--engines/hdb/ai-inventory.cpp5
-rw-r--r--engines/hdb/hdb.cpp4
-rw-r--r--engines/hdb/menu.cpp30
-rw-r--r--engines/hdb/sound.cpp2
-rw-r--r--engines/hdb/window.cpp9
5 files changed, 44 insertions, 6 deletions
diff --git a/engines/hdb/ai-inventory.cpp b/engines/hdb/ai-inventory.cpp
index dbb7f3dab3..9eb91ebd7c 100644
--- a/engines/hdb/ai-inventory.cpp
+++ b/engines/hdb/ai-inventory.cpp
@@ -305,7 +305,10 @@ bool AI::completeDelivery(const char *id) {
for (; i < _numDeliveries; i++)
memcpy(&_deliveries[i], &_deliveries[i + 1], sizeof(_deliveries[0]));
_numDeliveries--;
- g_hdb->_sound->playVoice(GUY_COMPLETED, 1);
+ if (g_hdb->isPPC())
+ g_hdb->_sound->playSound(SND_QUEST_COMPLETE);
+ else
+ g_hdb->_sound->playVoice(GUY_COMPLETED, 1);
return true;
}
return false;
diff --git a/engines/hdb/hdb.cpp b/engines/hdb/hdb.cpp
index 900709ff8b..12d0871768 100644
--- a/engines/hdb/hdb.cpp
+++ b/engines/hdb/hdb.cpp
@@ -379,6 +379,10 @@ void HDBGame::setTargetXY(int x, int y) {
if (p->touchpWait)
return;
+ // Double-Clicking on the player to open inventory?
+ if (g_hdb->isPPC())
+ warning("STUB: Add double-click to inventory functionality for PPC version");
+
// If we're attacking...don't do anything else
AIState stateList[] = {
STATE_ATK_CLUB_UP, STATE_ATK_CLUB_DOWN, STATE_ATK_CLUB_LEFT, STATE_ATK_CLUB_RIGHT,
diff --git a/engines/hdb/menu.cpp b/engines/hdb/menu.cpp
index 9c36c9bd02..3158e789d6 100644
--- a/engines/hdb/menu.cpp
+++ b/engines/hdb/menu.cpp
@@ -619,10 +619,16 @@ void Menu::drawMenu() {
_modeLoadGfx->drawMasked(centerPic(_modeLoadGfx), _oBannerY);
_menuBackoutGfx->drawMasked(kBackoutX, kBackoutY);
-
- if (_saveGames[0].seconds) {
+ if (_saveGames[kAutoSaveSlot].seconds)
_vortexian[anim]->drawMasked(kVortSaveX, kVortSaveY);
+
+ if (g_hdb->isPPC()) {
+ g_hdb->_gfx->setCursor(kVortSaveTextX, kVortSaveY);
+ g_hdb->_gfx->drawText("Last Vortexian");
+ g_hdb->_gfx->setCursor(kVortSaveTextX, kVortSaveY + 12);
+ g_hdb->_gfx->drawText("Saved Game");
}
+
if (anim_time < g_hdb->getTimeSlice()) {
anim_time = g_hdb->getTimeSlice() + 50;
anim++;
@@ -760,6 +766,10 @@ void Menu::freeMenu() {
delete _demoPlaqueGfx;
_demoPlaqueGfx = NULL;
+ if (g_hdb->isPPC()) {
+ warning("FIXME: When handangoGfx is added, free it here");
+ }
+
if (_nebulaGfx[0]) {
for (int i = 0; i < kNebulaCount; i++) {
delete _nebulaGfx[i];
@@ -1279,6 +1289,22 @@ void Menu::processInput(int x, int y) {
g_hdb->_sound->playSound(SND_MENU_BACKOUT);
}
+ // Vortexian Load only exists on PocketPC!
+ if (g_hdb->isPPC()) {
+ // 5 Slots screen
+ // Vortexian autosave LOAD?
+ if (y > kVortSaveY && (y < kVortSaveY + 32) && (x >= kVortSaveX) && (x < kVortSaveX + 96) && _saveGames[kAutoSaveSlot].seconds) {
+ g_hdb->_sound->playSound(SND_VORTEX_SAVE);
+ if (g_hdb->loadGameState(kAutoSaveSlot).getCode() == Common::kNoError) {
+ _gamefilesActive = false;
+ freeMenu();
+ g_hdb->setGameState(GAME_PLAY);
+ return;
+ }
+ }
+
+ }
+
int i = 0;
for (; i < kNumSaveSlots; i++)
if (y >= (i * 32 + kSaveSlotY - 4) && y <= (i * 32 + kSaveSlotY + 24))
diff --git a/engines/hdb/sound.cpp b/engines/hdb/sound.cpp
index 5e488460a9..620fd4ae9a 100644
--- a/engines/hdb/sound.cpp
+++ b/engines/hdb/sound.cpp
@@ -1567,7 +1567,7 @@ bool Sound::playSoundEx(int index, int channel, bool loop) {
}
bool Sound::playVoice(int index, int actor) {
- if (!_voicesOn)
+ if (!_voicesOn || g_hdb->isPPC())
return false;
// make sure we aren't playing a line more than once this time (only on CHANNEL 0)
diff --git a/engines/hdb/window.cpp b/engines/hdb/window.cpp
index 06332246ab..57bf9cc730 100644
--- a/engines/hdb/window.cpp
+++ b/engines/hdb/window.cpp
@@ -131,12 +131,17 @@ bool Window::init() {
_invWinInfo.width = kInvItemSpaceX * 3;
_invWinInfo.height = kInvItemSpaceY * 4;
- _invWinInfo.x = kScreenWidth - _gfxInfobar->_width + 16;
+
+ warning("FIXME: Fully separate the PC and PPC versions of Window");
+
+ if (!g_hdb->isPPC())
+ _invWinInfo.x = kScreenWidth - _gfxInfobar->_width + 16;
_invWinInfo.y = 40;
_dlvsInfo.width = kInvItemSpaceX * 3;
_dlvsInfo.height = kInvItemSpaceY * 4;
- _dlvsInfo.x = (kScreenWidth - _gfxInfobar->_width) + 16;
+ if (!g_hdb->isPPC())
+ _dlvsInfo.x = (kScreenWidth - _gfxInfobar->_width) + 16;
_dlvsInfo.y = 272;
_gemGfx = NULL;