[Scummvm-git-logs] scummvm master -> 0aaa6c415fc14229d0bd82fa3cfb175444a5c47a
dreammaster
dreammaster at scummvm.org
Tue Mar 21 01:19:51 CET 2017
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0aaa6c415f TITANIC: Implemented CStarControlSub12 fn2
Commit: 0aaa6c415fc14229d0bd82fa3cfb175444a5c47a
https://github.com/scummvm/scummvm/commit/0aaa6c415fc14229d0bd82fa3cfb175444a5c47a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-03-20T20:19:41-04:00
Commit Message:
TITANIC: Implemented CStarControlSub12 fn2
Changed paths:
engines/titanic/star_control/base_star.cpp
engines/titanic/star_control/base_star.h
engines/titanic/star_control/star_control_sub12.cpp
engines/titanic/star_control/star_control_sub20.cpp
engines/titanic/star_control/star_control_sub20.h
diff --git a/engines/titanic/star_control/base_star.cpp b/engines/titanic/star_control/base_star.cpp
index ffe5fd0..c1564e1 100644
--- a/engines/titanic/star_control/base_star.cpp
+++ b/engines/titanic/star_control/base_star.cpp
@@ -214,4 +214,10 @@ int CBaseStar::baseFn2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12) {
return ref._index;
}
+/*------------------------------------------------------------------------*/
+
+void CStarVector::proc1() {
+ _owner->setArrayVector(_vector);
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/star_control/base_star.h b/engines/titanic/star_control/base_star.h
index 8fc36ba..7dd3fb5 100644
--- a/engines/titanic/star_control/base_star.h
+++ b/engines/titanic/star_control/base_star.h
@@ -146,6 +146,16 @@ public:
int baseFn2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12);
};
+class CStarVector {
+private:
+ CStarControlSub12 *_owner;
+ FVector _vector;
+public:
+ CStarVector(CStarControlSub12 *owner, const FVector &v) : _owner(owner), _vector(v) {}
+
+ virtual void proc1();
+};
+
} // End of namespace Titanic
#endif /* TITANIC_STAR_CONTROL_SUB3_H */
diff --git a/engines/titanic/star_control/star_control_sub12.cpp b/engines/titanic/star_control/star_control_sub12.cpp
index 254b2a8..5e8cf5a 100644
--- a/engines/titanic/star_control/star_control_sub12.cpp
+++ b/engines/titanic/star_control/star_control_sub12.cpp
@@ -456,7 +456,26 @@ void CStarControlSub12::fn1(CStarControlSub13 *sub13, const FVector &v) {
}
void CStarControlSub12::fn2(FVector v1, FVector v2, FVector v3) {
- // TODO
+ if (_currentIndex == -1) {
+ FVector tempV;
+ tempV._z = _sub13._field10;
+ v3._z = v1._z;
+ tempV._x = _sub13._fieldD0 * v1._y * v1._z / _sub13._fieldC8;
+ v3._y = _sub13._fieldCC * tempV._z * v3._x / _sub13._fieldC8;
+ v3._x = _sub13._fieldCC * v1._x * v1._z / _sub13._fieldC8 - _sub13._valArray[2];
+ tempV._y = _sub13._fieldD0 * tempV._z * v3._y / _sub13._fieldC8;
+ tempV._x = tempV._x - _sub13._valArray[2];
+
+ v3.normalize();
+ tempV.normalize();
+
+ FMatrix matrix = _sub13.getMatrix();
+ const FVector &pos = _sub13._position;
+ _handlerP->proc10(v3, tempV, pos, matrix);
+
+ CStarVector *sv = new CStarVector(this, v2);
+ _handlerP->setVector(sv);
+ }
}
void CStarControlSub12::fn3(CStarControlSub13 *sub13, const FVector &v) {
diff --git a/engines/titanic/star_control/star_control_sub20.cpp b/engines/titanic/star_control/star_control_sub20.cpp
index ca60cc9..955a855 100644
--- a/engines/titanic/star_control/star_control_sub20.cpp
+++ b/engines/titanic/star_control/star_control_sub20.cpp
@@ -27,7 +27,7 @@ namespace Titanic {
CStarControlSub20::CStarControlSub20(const CStar20Data *src) {
_lockCounter = 0;
- _dataP = nullptr;
+ _starVector = nullptr;
if (src) {
copyFrom(src);
@@ -100,15 +100,15 @@ void CStarControlSub20::proc11(CErrorCode &errorCode, FVector &v, const FMatrix
}
}
-void CStarControlSub20::setData(void *data) {
+void CStarControlSub20::setVector(CStarVector *sv) {
clear();
- _dataP = (byte *)data;
+ _starVector = sv;
}
void CStarControlSub20::clear() {
- if (_dataP) {
- delete _dataP;
- _dataP = nullptr;
+ if (_starVector) {
+ delete _starVector;
+ _starVector = nullptr;
}
}
diff --git a/engines/titanic/star_control/star_control_sub20.h b/engines/titanic/star_control/star_control_sub20.h
index 49b63d5..5d7e8c0 100644
--- a/engines/titanic/star_control/star_control_sub20.h
+++ b/engines/titanic/star_control/star_control_sub20.h
@@ -24,6 +24,7 @@
#define TITANIC_STAR_CONTROL_SUB20_H
#include "titanic/support/simple_file.h"
+#include "titanic/star_control/base_star.h"
#include "titanic/star_control/error_code.h"
#include "titanic/star_control/fmatrix.h"
@@ -43,7 +44,7 @@ struct CStar20Data {
class CStarControlSub20 : public CStar20Data {
public:
int _lockCounter;
- byte *_dataP;
+ CStarVector *_starVector;
public:
CStarControlSub20(const CStar20Data *src);
virtual ~CStarControlSub20();
@@ -58,11 +59,7 @@ public:
virtual void proc9(FVector &v1, FVector &v2, FMatrix &matrix) {}
virtual void proc10(const FVector &v1, const FVector &v2, const FVector &v3, const FMatrix &m) {}
virtual void proc11(CErrorCode &errorCode, FVector &v, const FMatrix &m);
-
- /**
- * Set the data
- */
- virtual void setData(void *data);
+ virtual void setVector(CStarVector *sv);
/**
* Clear the class
More information about the Scummvm-git-logs
mailing list