[Scummvm-git-logs] scummvm master -> 24f67bb1b05595e8568b78e2eea9d6843718adcb
dreammaster
dreammaster at scummvm.org
Sat Mar 18 21:05:47 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:
24f67bb1b0 TITANIC: Finished CStarControlSub7 class
Commit: 24f67bb1b05595e8568b78e2eea9d6843718adcb
https://github.com/scummvm/scummvm/commit/24f67bb1b05595e8568b78e2eea9d6843718adcb
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-03-18T16:05:43-04:00
Commit Message:
TITANIC: Finished CStarControlSub7 class
Changed paths:
engines/titanic/star_control/star_control_sub7.cpp
diff --git a/engines/titanic/star_control/star_control_sub7.cpp b/engines/titanic/star_control/star_control_sub7.cpp
index c2c9030..8386e73 100644
--- a/engines/titanic/star_control/star_control_sub7.cpp
+++ b/engines/titanic/star_control/star_control_sub7.cpp
@@ -21,11 +21,55 @@
*/
#include "titanic/star_control/star_control_sub7.h"
+#include "titanic/star_control/star_control_sub12.h"
namespace Titanic {
void CStarControlSub7::draw(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStarControlSub5 *sub5) {
- // TODO
+ if (_data.empty())
+ return;
+
+ CStarControlSub6 sub6 = sub12->proc23();
+ double threshold = sub12->proc25();
+ FPoint center((double)surfaceArea->_width * 0.5,
+ surfaceArea->_height * 0.5);
+ FVector newV;
+
+ uint savedPixel = surfaceArea->_pixel;
+ surfaceArea->_pixel = 0xffff;
+ surfaceArea->setColorFromPixel();
+
+ for (uint idx = 0; idx < _data.size(); ++idx) {
+ const CBaseStarEntry &star = _data[idx];
+
+ newV._x = sub6._row1._x * star._position._x + sub6._row3._x * star._position._z
+ + sub6._row2._x * star._position._y + sub6._vector._x;
+ newV._y = sub6._row1._y * star._position._x + sub6._row3._y * star._position._z
+ + sub6._row2._y * star._position._x + sub6._vector._y;
+ newV._z = sub6._row1._z * star._position._x + sub6._row3._z * star._position._z
+ + sub6._row2._z * star._position._y + sub6._vector._z;
+
+ if (newV._z > threshold) {
+ FVector vTemp;
+ sub12->proc28(2, newV, vTemp);
+
+ FRect r1(center._x + vTemp._x, center._y + vTemp._y,
+ center._x + vTemp._x + 4.0, center._y + vTemp._y + 4.0);
+ surfaceArea->fn1(r1);
+
+ FRect r2(r1.right, r1.bottom, r1.right + 4.0, r1.top);
+ surfaceArea->fn1(r2);
+
+ FRect r3(r2.right, r1.top, r1.right, r1.top - 4.0);
+ surfaceArea->fn1(r3);
+
+ FRect r4(r1.right, r1.top - 4.0, r1.left, r1.top);
+ surfaceArea->fn1(r4);
+ }
+ }
+
+ surfaceArea->_pixel = savedPixel;
+ surfaceArea->setColorFromPixel();
}
bool CStarControlSub7::addStar(const CBaseStarEntry *entry) {
More information about the Scummvm-git-logs
mailing list