aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control/star_control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/star_control/star_control.cpp')
-rw-r--r--engines/titanic/star_control/star_control.cpp117
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
}