TITANIC: Implement CPetFrame::setArea

This commit is contained in:
Paul Gilbert 2016-03-31 22:31:13 -04:00
parent 7d819f71f7
commit 5923ee5001
10 changed files with 38 additions and 26 deletions

View File

@ -76,7 +76,7 @@ void CFilesManager::debug(CScreenManager *screenManager) {
void CFilesManager::resetView() {
if (_gameManager) {
_gameManager->_gameState.setMode(GSMODE_1);
_gameManager->_gameState.setMode(GSMODE_SELECTED);
_gameManager->initBounds();
}
}

View File

@ -45,7 +45,7 @@ bool CGameStateMovieList::clear() {
CGameState::CGameState(CGameManager *gameManager) :
_gameManager(gameManager), _gameLocation(this),
_field8(0), _fieldC(0), _mode(GSMODE_0), _field14(0), _petActive(false),
_field8(0), _fieldC(0), _mode(GSMODE_UNSELECTED), _field14(0), _petActive(false),
_field1C(0), _field20(0), _field24(0), _nodeChangeCtr(0),
_nodeEnterTicks(0), _field38(0) {
}
@ -157,7 +157,7 @@ void CGameState::changeView(CViewItem *newView, CMovieClip *clip) {
void CGameState::checkForViewChange() {
if (_mode == GSMODE_2 && _movieList.clear()) {
setMode(GSMODE_1);
setMode(GSMODE_SELECTED);
if (_movieList._view)
enterView();
}

View File

@ -33,7 +33,7 @@ namespace Titanic {
class CGameManager;
enum GameStateMode { GSMODE_0 = 0, GSMODE_1 = 1, GSMODE_2 = 2, GSMODE_3 = 3, GSMODE_4 = 4, GSMODE_5 = 5 };
enum GameStateMode { GSMODE_UNSELECTED = 0, GSMODE_SELECTED = 1, GSMODE_2 = 2, GSMODE_3 = 3, GSMODE_4 = 4, GSMODE_5 = 5 };
PTR_LIST_ITEM(CMovie);
class CGameStateMovieList : public List<CMovieListItem> {

View File

@ -50,7 +50,7 @@ void CInputHandler::decLockCount() {
void CInputHandler::handleMessage(CMessage &msg, bool respectLock) {
if (!respectLock || _lockCount <= 0) {
if (_gameManager->_gameState._mode == GSMODE_1) {
if (_gameManager->_gameState._mode == GSMODE_SELECTED) {
processMessage(&msg);
} else if (!msg.isMouseMsg()) {
g_vm->_filesManager.loadDrive();

View File

@ -68,7 +68,7 @@ void CMainGameWindow::applicationStarting() {
// Load either a new game or selected existing save
_project->loadGame(saveSlot);
_inputAllowed = true;
_gameManager->_gameState.setMode(GSMODE_1);
_gameManager->_gameState.setMode(GSMODE_SELECTED);
// TODO: Cursor/image
@ -123,7 +123,7 @@ void CMainGameWindow::draw() {
scrManager->clearSurface(SURFACE_BACKBUFFER, &_gameManager->_bounds);
switch (_gameManager->_gameState._mode) {
case GSMODE_1:
case GSMODE_SELECTED:
case GSMODE_2:
if (_gameManager->_gameState._petActive)
drawPet(scrManager);

View File

@ -26,7 +26,7 @@
namespace Titanic {
CPetElement::CPetElement() : _mode(MODE_0) {}
CPetElement::CPetElement() : _mode(MODE_UNSELECTED) {}
void CPetElement::getBounds(Rect *rect) {
if (rect)
@ -36,14 +36,14 @@ void CPetElement::getBounds(Rect *rect) {
bool CPetElement::proc6(const Common::Point &pt) {
bool result = _bounds.contains(pt);
if (result)
setMode(MODE_1);
setMode(MODE_SELECTED);
return result;
}
bool CPetElement::proc7(const Common::Point &pt) {
bool result = _bounds.contains(pt);
if (result)
setMode(MODE_0);
setMode(MODE_UNSELECTED);
return result;
}
@ -93,7 +93,7 @@ int CPetElement::proc15() {
}
void CPetElement::setMode(PetElementMode newMode) {
if (newMode >= MODE_0 && newMode <= MODE_2)
if (newMode >= MODE_UNSELECTED && newMode <= MODE_2)
changeMode(newMode);
}

View File

@ -29,7 +29,7 @@
namespace Titanic {
enum PetElementMode { MODE_0 = 0, MODE_1 = 1, MODE_2 = 2 };
enum PetElementMode { MODE_UNSELECTED = 0, MODE_SELECTED = 1, MODE_2 = 2 };
class CGameObject;
class CPetControl;

View File

@ -42,22 +42,22 @@ bool CPetFrame::setup(CPetControl *petControl) {
bool CPetFrame::setup() {
if (_petControl) {
_background.setup("PetBackground", _petControl, MODE_0);
_modeBackground.setup("PetModeBackground", _petControl, MODE_0);
_background.setup("PetBackground", _petControl, MODE_UNSELECTED);
_modeBackground.setup("PetModeBackground", _petControl, MODE_UNSELECTED);
for (int idx = 0; idx < 5; ++idx) {
CString resName = Common::String::format("PetMode%d", idx);
_modeButtons[idx].setup(resName, _petControl, MODE_0);
_modeButtons[idx].setup(resName, _petControl, MODE_UNSELECTED);
}
for (int idx = 0; idx < 6; ++idx) {
CString resName = Common::String::format("3Pettitle%d", idx);
_titles[idx].setup(resName, _petControl, MODE_0);
_titles[idx].setup(resName, _petControl, MODE_UNSELECTED);
}
for (int idx = 0; idx < 7; ++idx) {
CString resName = Common::String::format("PetIndent%d", idx);
_titles[idx].setup(resName, _petControl, MODE_0);
_indent[idx].setup(resName, _petControl, MODE_UNSELECTED);
}
}
@ -67,8 +67,8 @@ bool CPetFrame::setup() {
bool CPetFrame::isValid(CPetControl *petControl) {
bool result = setPetControl(petControl);
if (result) {
_modeButtons[_indexes[0]].setMode(MODE_0);
_modeButtons[_indexes[4]].setMode(MODE_1);
_modeButtons[_indexes[0]].setMode(MODE_UNSELECTED);
_modeButtons[_indexes[4]].setMode(MODE_SELECTED);
}
return result;
@ -98,12 +98,12 @@ bool CPetFrame::setPetControl(CPetControl *petControl) {
_modeButtons[idx].setBounds(r);
_modeButtons[idx].translate(0, YLIST[idx]);
}
_modeButtons[_indexes[0]].setMode(MODE_1);
_modeButtons[_indexes[0]].setMode(MODE_SELECTED);
const int XLIST[] = { 73, 54, 85, 109, 38, 71 };
for (int idx = 0; idx < 6; ++idx) {
_titles[idx].setBounds(Rect(0, 0, 110, 11));
_titles[idx].translate(XLIST[idx], 471);
_titles[idx].translate(600 - XLIST[idx], 471);
}
}
@ -111,7 +111,14 @@ bool CPetFrame::setPetControl(CPetControl *petControl) {
}
void CPetFrame::setArea(PetArea newArea) {
warning("TODO: CPetFrame::setArea");
resetArea();
if (newArea < PET_6)
_modeButtons[_indexes[newArea]].setMode(MODE_SELECTED);
}
void CPetFrame::resetArea() {
for (int idx = 0; idx < 6; ++idx)
_modeButtons[idx].setMode(MODE_UNSELECTED);
}
void CPetFrame::drawFrame(CScreenManager *screenManager) {

View File

@ -76,6 +76,11 @@ public:
*/
void setArea(PetArea newArea);
/**
* Reset the currently selected area
*/
void resetArea();
/**
* Draws the PET frame
*/

View File

@ -30,10 +30,10 @@ namespace Titanic {
void CPetGfxElement::setup(PetElementMode mode, const CString &name,
CPetControl *petControl) {
switch (mode) {
case MODE_0:
case MODE_UNSELECTED:
_object0 = petControl->getHiddenObject(name);
break;
case MODE_1:
case MODE_SELECTED:
_object1 = petControl->getHiddenObject(name);
break;
case MODE_2:
@ -91,9 +91,9 @@ void CPetGfxElement::getBounds(Rect *rect) {
CGameObject *CPetGfxElement::getObject() const {
switch (_mode) {
case MODE_0:
case MODE_UNSELECTED:
return _object0;
case MODE_1:
case MODE_SELECTED:
return _object1;
case MODE_2:
return _object2;