aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2017-03-11 15:16:51 -0500
committerPaul Gilbert2017-03-11 15:16:51 -0500
commitac16b6ebd28a504a4d3302aee70e5d8c5253fa02 (patch)
treeba818721c8cb2cf910c78540b422c15b790f7311
parentf757ad51c1f56ed18e8f4e4afcbabd577be89a36 (diff)
downloadscummvm-rg350-ac16b6ebd28a504a4d3302aee70e5d8c5253fa02.tar.gz
scummvm-rg350-ac16b6ebd28a504a4d3302aee70e5d8c5253fa02.tar.bz2
scummvm-rg350-ac16b6ebd28a504a4d3302aee70e5d8c5253fa02.zip
TITANIC: Finish CStarControlSub20 class
-rw-r--r--engines/titanic/star_control/star_control_sub20.cpp32
-rw-r--r--engines/titanic/star_control/star_control_sub20.h2
2 files changed, 19 insertions, 15 deletions
diff --git a/engines/titanic/star_control/star_control_sub20.cpp b/engines/titanic/star_control/star_control_sub20.cpp
index cc1029896a..ca60cc9948 100644
--- a/engines/titanic/star_control/star_control_sub20.cpp
+++ b/engines/titanic/star_control/star_control_sub20.cpp
@@ -32,7 +32,7 @@ CStarControlSub20::CStarControlSub20(const CStar20Data *src) {
if (src) {
copyFrom(src);
} else {
- _field0 = 0.0;
+ _size = 0.0;
_field4 = 0.0;
_field8 = 20.0;
_fieldC = 0.0;
@@ -56,22 +56,22 @@ void CStarControlSub20::copyTo(CStar20Data *dest) {
}
void CStarControlSub20::proc4() {
- if (!isLocked() && _field0 < _field10) {
- _field4 += _field0;
+ if (!isLocked() && _size < _field10) {
+ _field4 += _size;
if (_field8 == _field4)
- _field0 -= _field4;
+ _size -= _field4;
else
- _field0 += _field4;
+ _size += _field4;
}
}
void CStarControlSub20::proc5() {
if (!isLocked()) {
_field4 -= _field8;
- if (_field4 == _field0)
- _field0 += _field4;
+ if (_field4 == _size)
+ _size += _field4;
else
- _field0 -= _field4;
+ _size -= _field4;
if (_field4 < 0.0)
_field4 = 0.0;
@@ -80,19 +80,23 @@ void CStarControlSub20::proc5() {
void CStarControlSub20::proc6() {
if (!isLocked())
- _field0 = _field10;
+ _size = _field10;
}
void CStarControlSub20::proc7() {
if (!isLocked()) {
- _field0 = 0.0;
+ _size = 0.0;
_field4 = 0.0;
}
}
void CStarControlSub20::proc11(CErrorCode &errorCode, FVector &v, const FMatrix &m) {
- if (_field0 > 0.0) {
- warning("TODO: CStarControlSub20::proc11");
+ if (_size > 0.0) {
+ v._x += m._row3._x * _size;
+ v._y += m._row3._y * _size;
+ v._z += m._row3._z * _size;
+
+ errorCode.set();
}
}
@@ -110,7 +114,7 @@ void CStarControlSub20::clear() {
void CStarControlSub20::load(SimpleFile *file, int val) {
if (!val) {
- _field0 = file->readFloat();
+ _size = file->readFloat();
_field4 = file->readFloat();
_field8 = file->readFloat();
_fieldC = file->readFloat();
@@ -122,7 +126,7 @@ void CStarControlSub20::load(SimpleFile *file, int val) {
}
void CStarControlSub20::save(SimpleFile *file, int indent) {
- file->writeFloatLine(_field0, indent);
+ file->writeFloatLine(_size, indent);
file->writeFloatLine(_field4, indent);
file->writeFloatLine(_field8, indent);
file->writeFloatLine(_fieldC, indent);
diff --git a/engines/titanic/star_control/star_control_sub20.h b/engines/titanic/star_control/star_control_sub20.h
index 9dbabbb7f1..687f7d7320 100644
--- a/engines/titanic/star_control/star_control_sub20.h
+++ b/engines/titanic/star_control/star_control_sub20.h
@@ -30,7 +30,7 @@
namespace Titanic {
struct CStar20Data {
- double _field0;
+ double _size;
double _field4;
double _field8;
double _fieldC;