From f819d7332d84e250145d5f93843142d73bf53dd4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 27 Feb 2017 21:11:16 -0500 Subject: TITANIC: Implementing CBaseStar methods --- engines/titanic/star_control/base_star.cpp | 64 +++++++++++++++++++++++++++-- engines/titanic/star_control/base_star.h | 8 ++++ engines/titanic/star_control/star_field.cpp | 4 ++ engines/titanic/star_control/star_field.h | 2 + 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/engines/titanic/star_control/base_star.cpp b/engines/titanic/star_control/base_star.cpp index a6ef6d8907..24d3e02b78 100644 --- a/engines/titanic/star_control/base_star.cpp +++ b/engines/titanic/star_control/base_star.cpp @@ -21,6 +21,7 @@ */ #include "titanic/star_control/base_star.h" +#include "titanic/star_control/star_control_sub12.h" #include "titanic/titanic.h" namespace Titanic { @@ -48,10 +49,6 @@ void CBaseStarEntry::load(Common::SeekableReadStream &s) { CBaseStar::CBaseStar() : _minVal(0.0), _maxVal(1.0), _range(0.0) { } -void CBaseStar::draw(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { - // TODO -} - void CBaseStar::clear() { _data.clear(); } @@ -115,4 +112,63 @@ void CBaseStar::resetEntry(CBaseStarEntry &entry) { entry._data[idx] = 0; } +void CBaseStar::draw(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { + if (!_data.empty()) { + switch (sub12->proc27()) { + case 0: + switch (surfaceArea->_bpp) { + case 1: + draw1(surfaceArea, sub12, sub5); + break; + case 2: + draw2(surfaceArea, sub12, sub5); + break; + default: + break; + } + break; + + case 2: + switch (surfaceArea->_bpp) { + case 1: + draw3(surfaceArea, sub12, sub5); + break; + case 2: + draw4(surfaceArea, sub12, sub5); + break; + default: + break; + } + break; + + default: + break; + } + } +} + +void CBaseStar::draw1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { + // TODO +} + +void CBaseStar::draw2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { + // TODO +} + +void CBaseStar::draw3(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { + // TODO +} + +void CBaseStar::draw4(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) { + // TODO +} + +void CBaseStar::baseFn1(int v1, int v2, int v3, int v4) { + // TODO +} + +void CBaseStar::baseFn2(int v1, int v2) { + // TODO +} + } // End of namespace Titanic diff --git a/engines/titanic/star_control/base_star.h b/engines/titanic/star_control/base_star.h index 7e6329f78a..2c1c389e37 100644 --- a/engines/titanic/star_control/base_star.h +++ b/engines/titanic/star_control/base_star.h @@ -46,6 +46,11 @@ struct CBaseStarEntry { }; class CBaseStar { +private: + void draw1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5); + void draw2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5); + void draw3(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5); + void draw4(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5); protected: Common::Array _data; CStarControlSub4 _sub4; @@ -72,6 +77,9 @@ protected: * Reset the data for an entry */ void resetEntry(CBaseStarEntry &entry); + + void baseFn1(int v1, int v2, int v3, int v4); + void baseFn2(int v1, int v2); public: CBaseStar(); virtual ~CBaseStar() {} diff --git a/engines/titanic/star_control/star_field.cpp b/engines/titanic/star_control/star_field.cpp index 7502f84d3d..31e75f3c13 100644 --- a/engines/titanic/star_control/star_field.cpp +++ b/engines/titanic/star_control/star_field.cpp @@ -127,4 +127,8 @@ bool CStarField::isSolved() const { return _isSolved; } +void CStarField::fn1(CErrorCode *errorCode) { + _sub5.proc3(errorCode); +} + } // End of namespace Titanic diff --git a/engines/titanic/star_control/star_field.h b/engines/titanic/star_control/star_field.h index 6c186f9937..9e8b732f45 100644 --- a/engines/titanic/star_control/star_field.h +++ b/engines/titanic/star_control/star_field.h @@ -91,6 +91,8 @@ public: int get7Count() const { return _sub7.size(); } + + void fn1(CErrorCode *errorCode); }; } // End of namespace Titanic -- cgit v1.2.3