diff options
Diffstat (limited to 'engines/titanic/star_control/star_control.cpp')
-rw-r--r-- | engines/titanic/star_control/star_control.cpp | 117 |
1 files changed, 114 insertions, 3 deletions
diff --git a/engines/titanic/star_control/star_control.cpp b/engines/titanic/star_control/star_control.cpp index 2aaf5d7640..5874d01760 100644 --- a/engines/titanic/star_control/star_control.cpp +++ b/engines/titanic/star_control/star_control.cpp @@ -21,11 +21,16 @@ */ #include "titanic/support/screen_manager.h" +#include "titanic/pet_control/pet_control.h" #include "titanic/star_control/star_control.h" #include "titanic/star_control/dmatrix.h" #include "titanic/star_control/error_code.h" #include "titanic/star_control/star_control_sub6.h" #include "titanic/star_control/star_control_sub12.h" +#include "titanic/game_manager.h" +#include "titanic/core/dont_save_file_item.h" +#include "titanic/core/project_item.h" +#include "titanic/core/view_item.h" namespace Titanic { @@ -36,7 +41,7 @@ BEGIN_MESSAGE_MAP(CStarControl, CGameObject) ON_MESSAGE(FrameMsg) END_MESSAGE_MAP() -CStarControl::CStarControl() : _fieldBC(0), +CStarControl::CStarControl() : _enabled(false), _starRect(20, 10, 620, 350) { CStarControlSub6::init(); CStarControlSub12::init(); @@ -72,7 +77,7 @@ void CStarControl::load(SimpleFile *file) { _view.setup(screenManager, &_starField, this); _view.reset(); - _fieldBC = 1; + _enabled = true; } CGameObject::load(file); @@ -129,7 +134,113 @@ void CStarControl::newFrame() { // TODO } -void CStarControl::doAction(int action) { +void CStarControl::doAction(StarControlAction action) { + if (!_enabled) + return; + + switch (action) { + case STAR_SHOW: { + CGameManager *gameManager = getGameManager(); + CViewItem *view = gameManager ? gameManager->getView() : nullptr; + if (view) { + detach(); + addUnder(view); + _view.fn2(); + _view.fn3(true); + _visible = true; + } + break; + } + + case STAR_HIDE: { + CProjectItem *root = getRoot(); + CDontSaveFileItem *fileItem = root ? root->getDontSaveFileItem() : nullptr; + if (fileItem) { + detach(); + addUnder(fileItem); + _visible = false; + } + break; + } + + case STAR_2: + _view.fn4(); + break; + + case STAR_RESET_POS: + _view.resetPosition(); + break; + + case STAR_4: + _view.fn5(); + break; + + case STAR_5: + _view.fn6(); + break; + + case STAR_6: + _view.fn7(); + break; + + case STAR_7: + _view.fn8(); + break; + + case STAR_8: + _view.fn9(); + break; + + case STAR_9: + _view.fn10(); + break; + + case STAR_10: + _view.fn11(); + break; + + case STAR_11: + _view.fn12(); + break; + + case STAR_12: + _view.fn13(); + break; + + case STAR_13: + _view.fn14(); + break; + + case STAR_SET_REFERENCE: { + _view.fn15(); + CPetControl *pet = getPetControl(); + if (pet) + pet->starsSetReference(); + break; + } + + case STAR_FADE_IN: + _view.fn3(true); + break; + + case STAR_FADE_OUT: + _view.fn3(false); + break; + + case STAR_17: + _view.fn16(); + break; + + case STAR_18: + _view.fn17(); + break; + + case STAR_19: + _view.petDestinationSet(); + break; + + } + // TODO } |