aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control/star_field.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/star_control/star_field.cpp')
-rw-r--r--engines/titanic/star_control/star_field.cpp65
1 files changed, 55 insertions, 10 deletions
diff --git a/engines/titanic/star_control/star_field.cpp b/engines/titanic/star_control/star_field.cpp
index 24b30bfc9b..43748ea0f8 100644
--- a/engines/titanic/star_control/star_field.cpp
+++ b/engines/titanic/star_control/star_field.cpp
@@ -25,15 +25,15 @@
namespace Titanic {
-CStarField::CStarField() : _val1(0), _val2(0), _mode(MODE_STARFIELD),
+CStarField::CStarField() : _points1On(false), _points2On(false), _mode(MODE_STARFIELD),
_val4(true), _val5(0), _isSolved(false) {
}
void CStarField::load(SimpleFile *file) {
_sub7.load(file);
_sub8.load(file);
- _val1 = file->readNumber();
- _val2 = file->readNumber();
+ _points1On = file->readNumber();
+ _points2On = file->readNumber();
_mode = (StarMode)file->readNumber();
_val4 = file->readNumber();
_isSolved = file->readNumber();
@@ -42,8 +42,8 @@ void CStarField::load(SimpleFile *file) {
void CStarField::save(SimpleFile *file, int indent) {
_sub7.save(file, indent);
_sub8.save(file, indent);
- file->writeNumberLine(_val1, indent);
- file->writeNumberLine(_val2, indent);
+ file->writeNumberLine(_points1On, indent);
+ file->writeNumberLine(_points2On, indent);
file->writeNumberLine(_mode, indent);
file->writeNumberLine(_val4, indent);
file->writeNumberLine(_isSolved, indent);
@@ -64,25 +64,34 @@ bool CStarField::initDocument() {
void CStarField::render(CVideoSurface *surface, CStarControlSub12 *sub12) {
CSurfaceArea surfaceArea(surface);
draw(&surfaceArea, sub12, &_sub5);
+ if (_val4)
+ fn3(&surfaceArea);
+ _sub7.draw(&surfaceArea, sub12, nullptr);
+ _sub8.draw(&surfaceArea);
- // TODO
+ if (_points2On)
+ _points2.draw(&surfaceArea, sub12);
+ if (_points1On)
+ _points1.draw(&surfaceArea, sub12);
+
+ fn4(&surfaceArea, sub12);
}
int CStarField::get1() const {
- return _val1;
+ return _points1On;
}
void CStarField::set1(int val) {
- _val1 = val;
+ _points1On = val;
}
int CStarField::get2() const {
- return _val2;
+ return _points2On;
}
void CStarField::set2(int val) {
- _val2 = val;
+ _points2On = val;
}
int CStarField::get54() const {
@@ -131,11 +140,47 @@ void CStarField::fn1(CErrorCode *errorCode) {
_sub5.proc3(errorCode);
}
+void CStarField::fn3(CSurfaceArea *surfaceArea) {
+ surfaceArea->_pixel = 0x323232;
+ surfaceArea->setColorFromPixel();
+
+ surfaceArea->fn1(FRect(202.60417, 63.75, 397.39584, 63.75));
+ surfaceArea->fn1(FRect(202.60417, 276.25, 397.39584, 276.25));
+ surfaceArea->fn1(FRect(193.75, 72.604164, 193.75, 267.39584));
+ surfaceArea->fn1(FRect(406.25, 72.604164, 406.25, 267.39584));
+ surfaceArea->fn1(FRect(202.60417, 63.75, 202.60417, 68.177086));
+ surfaceArea->fn1(FRect(397.39584, 63.75, 397.39584, 68.177086));
+ surfaceArea->fn1(FRect(202.60417, 276.25, 202.60417, 271.82291));
+ surfaceArea->fn1(FRect(397.39584, 276.25, 397.39584, 271.82291));
+ surfaceArea->fn1(FRect(193.75, 72.604164, 198.17708, 72.604164));
+ surfaceArea->fn1(FRect(193.75, 267.39584, 198.17708, 267.39584));
+ surfaceArea->fn1(FRect(406.25, 72.604164, 401.82291, 72.604164));
+ surfaceArea->fn1(FRect(406.25, 267.39584, 401.82291, 267.39584));
+ surfaceArea->fn1(FRect(300.0, 63.75, 300.0, 54.895832));
+ surfaceArea->fn1(FRect(300.0, 276.25, 300.0, 285.10416));
+ surfaceArea->fn1(FRect(193.75, 170.0, 184.89583, 170.0));
+ surfaceArea->fn1(FRect(406.25, 170.0, 415.10416, 170.0));
+}
+
+void CStarField::fn4(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12) {
+ // TODO
+}
+
void CStarField::fn6(CVideoSurface *surface, CStarControlSub12 *sub12) {
CSurfaceArea surfaceArea(surface);
}
+void CStarField::fn7() {
+ _sub8.fn3();
+ setSolved();
+}
+
+void CStarField::fn8(CVideoSurface *surface) {
+ _sub8.fn2(surface, this, &_sub7);
+ setSolved();
+}
+
bool CStarField::mouseButtonDown(CVideoSurface *surface, CStarControlSub12 *sub12,
int flags, const Common::Point &pt) {
if (_mode == MODE_STARFIELD) {