HOPKINS: Move inventory dialog display to DialogsManager, set _inventWin1 as private

This commit is contained in:
Strangerke 2013-03-24 12:31:28 +01:00
parent b91c952729
commit f782ca1c10
5 changed files with 28 additions and 17 deletions

View File

@ -84,18 +84,16 @@ private:
void displayLives();
void displayBricks();
void displayGamesSubMenu();
void displayScore();
int displayHiscores();
void displayHiscoreLine(byte *objectData, int x, int y, int curChar);
void playBreakout();
void saveScore();
int moveBall();
void checkBallCollisions();
void getScoreName();
void displayMessage(int xp, int yp, int textIdx);
void displayScore();
void displayScoreChar(int charPos, int charDisp);
void getScoreName();
void playBreakout();
int moveBall();
void saveScore();
void checkBallCollisions();
public:
ComputerManager(HopkinsEngine *vm);

View File

@ -51,9 +51,23 @@ DialogsManager::DialogsManager(HopkinsEngine *vm) {
DialogsManager::~DialogsManager() {
_vm->_globals->freeMemory(_inventWin1);
_vm->_globals->freeMemory(_inventBuf2);
_vm->_globals->freeMemory(_inventoryIcons);
}
void DialogsManager::clearAll() {
_inventWin1 = g_PTRNUL;
_inventBuf2 = g_PTRNUL;
}
void DialogsManager::drawInvent(Common::Point oldBorder, int oldBorderSpriteIndex, Common::Point newBorder, int newBorderSpriteIndex) {
_vm->_graphicsManager->restoreSurfaceRect(_vm->_graphicsManager->_vesaBuffer, _inventWin1, _inventX, _inventY, _inventWidth, _inventHeight);
if (oldBorder.x && oldBorder.y)
_vm->_graphicsManager->Sprite_Vesa(_vm->_graphicsManager->_vesaBuffer, _vm->_dialogsManager->_inventBuf2, oldBorder.x + 300, oldBorder.y + 300, oldBorderSpriteIndex + 1);
if (newBorder.x && newBorder.y)
_vm->_graphicsManager->Sprite_Vesa(_vm->_graphicsManager->_vesaBuffer, _vm->_dialogsManager->_inventBuf2, newBorder.x + 300, newBorder.y + 300, newBorderSpriteIndex);
_vm->_graphicsManager->addDirtyRect(_vm->_dialogsManager->_inventX, _vm->_dialogsManager->_inventY, _vm->_dialogsManager->_inventX + _vm->_dialogsManager->_inventWidth, _vm->_dialogsManager->_inventY + _vm->_dialogsManager->_inventHeight);
}
void DialogsManager::showOptionsDialog() {
_vm->_eventsManager->changeMouseCursor(0);
_vm->_eventsManager->refreshScreenAndEvents();

View File

@ -26,6 +26,7 @@
#include "common/scummsys.h"
#include "common/system.h"
#include "common/error.h"
#include "common/rect.h"
namespace Hopkins {
@ -38,12 +39,13 @@ enum SaveLoadMode { MODE_SAVE = 1, MODE_LOAD = 2 };
*/
class DialogsManager {
private:
byte *_inventWin1;
HopkinsEngine *_vm;
void showSaveLoad(SaveLoadMode mode);
int searchSavegames();
public:
byte *_inventWin1;
byte *_inventBuf2;
bool _removeInventFl;
bool _inventDisplayedFl;
@ -60,6 +62,9 @@ public:
void showSaveGame();
void showOptionsDialog();
void testDialogOpening();
void clearAll();
void drawInvent(Common::Point oldBorder, int oldBorderSpriteIndex, Common::Point newBorder, int newBorderSpriteIndex);
};
} // End of namespace Hopkins

View File

@ -239,8 +239,7 @@ void Globals::clearAll() {
_objectDataBuf = g_PTRNUL;
_curObjectFileNum = 0;
_vm->_eventsManager->_objectBuf = g_PTRNUL;
_vm->_dialogsManager->_inventWin1 = g_PTRNUL;
_vm->_dialogsManager->_inventBuf2 = g_PTRNUL;
_vm->_dialogsManager->clearAll();
_answerBuffer = g_PTRNUL;
SPRITE_ECRAN = g_PTRNUL;
_saveData = (Savegame *)g_PTRNUL;

View File

@ -409,12 +409,7 @@ void ObjectsManager::displaySprite() {
_vm->_globals->_sortedDisplayCount = 0;
if (_vm->_dialogsManager->_inventDisplayedFl) {
_vm->_graphicsManager->restoreSurfaceRect(_vm->_graphicsManager->_vesaBuffer, _vm->_dialogsManager->_inventWin1, _vm->_dialogsManager->_inventX, _vm->_dialogsManager->_inventY, _vm->_dialogsManager->_inventWidth, _vm->_dialogsManager->_inventHeight);
if (_oldBorderPos.x && _oldBorderPos.y)
_vm->_graphicsManager->Sprite_Vesa(_vm->_graphicsManager->_vesaBuffer, _vm->_dialogsManager->_inventBuf2, _oldBorderPos.x + 300, _oldBorderPos.y + 300, _oldBorderSpriteIndex + 1);
if (_borderPos.x && _borderPos.y)
_vm->_graphicsManager->Sprite_Vesa(_vm->_graphicsManager->_vesaBuffer, _vm->_dialogsManager->_inventBuf2, _borderPos.x + 300, _borderPos.y + 300, _borderSpriteIndex);
_vm->_graphicsManager->addDirtyRect(_vm->_dialogsManager->_inventX, _vm->_dialogsManager->_inventY, _vm->_dialogsManager->_inventX + _vm->_dialogsManager->_inventWidth, _vm->_dialogsManager->_inventY + _vm->_dialogsManager->_inventHeight);
_vm->_dialogsManager->drawInvent(_oldBorderPos, _oldBorderSpriteIndex, _borderPos, _borderSpriteIndex);
}
if (_saveLoadFl) {