aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2017-05-30 20:01:49 -0400
committerPaul Gilbert2017-05-30 20:01:49 -0400
commit56474edca06e386948c7288d4f2a23cbf40f2767 (patch)
treea7eae123655291e0c2c20860172f04258285e4a0
parent6e46535c92fdfcc3a69b1dbec3f46dc5f818b6bf (diff)
downloadscummvm-rg350-56474edca06e386948c7288d4f2a23cbf40f2767.tar.gz
scummvm-rg350-56474edca06e386948c7288d4f2a23cbf40f2767.tar.bz2
scummvm-rg350-56474edca06e386948c7288d4f2a23cbf40f2767.zip
TITANIC: Cleanup & fixes for starfield viewpoint box
-rw-r--r--engines/titanic/star_control/star_closeup.cpp8
-rw-r--r--engines/titanic/star_control/star_control.cpp2
-rw-r--r--engines/titanic/star_control/star_crosshairs.cpp2
-rw-r--r--engines/titanic/star_control/star_field.cpp18
-rw-r--r--engines/titanic/star_control/star_field.h10
-rw-r--r--engines/titanic/star_control/star_markers.cpp14
-rw-r--r--engines/titanic/star_control/star_points1.cpp2
-rw-r--r--engines/titanic/star_control/star_points2.cpp2
-rw-r--r--engines/titanic/star_control/star_view.cpp8
-rw-r--r--engines/titanic/star_control/star_view.h4
-rw-r--r--engines/titanic/star_control/surface_area.cpp24
-rw-r--r--engines/titanic/star_control/surface_area.h6
12 files changed, 53 insertions, 47 deletions
diff --git a/engines/titanic/star_control/star_closeup.cpp b/engines/titanic/star_control/star_closeup.cpp
index c5e5e584db..3af7d556cc 100644
--- a/engines/titanic/star_control/star_closeup.cpp
+++ b/engines/titanic/star_control/star_closeup.cpp
@@ -291,7 +291,7 @@ void CStarCloseup::draw(const FPose &pose, const FVector &vector, const FVector
}
if (val2 <= 0) {
- surfaceArea->setMode(SA_NONE);
+ surfaceArea->setMode(SA_SOLID);
surfaceArea->_pixel = MKTAG_BE(entryP->_pixel1, entryP->_pixel2,
entryP->_pixel3, 0);
surfaceArea->setColorFromPixel();
@@ -314,7 +314,7 @@ void CStarCloseup::draw(const FPose &pose, const FVector &vector, const FVector
}
}
} else {
- surfaceArea->setMode(SA_NONE);
+ surfaceArea->setMode(SA_SOLID);
surfaceArea->_pixel = entryP->_pixel1;
surfaceArea->setColorFromPixel();
@@ -396,7 +396,7 @@ void CStarCloseup::draw(const FPose &pose, const FVector &vector, const FVector
}
if (val2 <= 0) {
- surfaceArea->setMode(SA_NONE);
+ surfaceArea->setMode(SA_SOLID);
surfaceArea->_pixel = pixel1;
surfaceArea->setColorFromPixel();
@@ -418,7 +418,7 @@ void CStarCloseup::draw(const FPose &pose, const FVector &vector, const FVector
}
}
} else {
- surfaceArea->setMode(SA_NONE);
+ surfaceArea->setMode(SA_SOLID);
surfaceArea->_pixel = pixel2;
surfaceArea->setColorFromPixel();
diff --git a/engines/titanic/star_control/star_control.cpp b/engines/titanic/star_control/star_control.cpp
index 05e37ca96f..06ab3d363a 100644
--- a/engines/titanic/star_control/star_control.cpp
+++ b/engines/titanic/star_control/star_control.cpp
@@ -215,7 +215,7 @@ void CStarControl::doAction(StarControlAction action) {
break;
case STAR_11:
- _view.toggleCrosshairs();
+ _view.toggleBox();
break;
case STAR_12:
diff --git a/engines/titanic/star_control/star_crosshairs.cpp b/engines/titanic/star_control/star_crosshairs.cpp
index 2f64505d32..4c8a1c8c69 100644
--- a/engines/titanic/star_control/star_crosshairs.cpp
+++ b/engines/titanic/star_control/star_crosshairs.cpp
@@ -161,7 +161,7 @@ void CStarCrosshairs::draw(CSurfaceArea *surfaceArea) {
uint savedPixel = surfaceArea->_pixel;
surfaceArea->_pixel = 0xff;
surfaceArea->setColorFromPixel();
- SurfaceAreaMode savedMode = surfaceArea->setMode(SA_NONE);
+ SurfaceAreaMode savedMode = surfaceArea->setMode(SA_SOLID);
for (int idx = 0; idx < _entryIndex; ++idx) {
const CStarPosition &src = _entries[idx];
diff --git a/engines/titanic/star_control/star_field.cpp b/engines/titanic/star_control/star_field.cpp
index 669423bc60..13afb59c49 100644
--- a/engines/titanic/star_control/star_field.cpp
+++ b/engines/titanic/star_control/star_field.cpp
@@ -28,7 +28,7 @@
namespace Titanic {
CStarField::CStarField() : _points1On(false), _points2On(false), _mode(MODE_STARFIELD),
- _showCrosshairs(true), _val5(0), _isSolved(false) {
+ _showBox(true), _val5(0), _isSolved(false) {
}
void CStarField::load(SimpleFile *file) {
@@ -37,7 +37,7 @@ void CStarField::load(SimpleFile *file) {
_points1On = file->readNumber();
_points2On = file->readNumber();
_mode = (StarMode)file->readNumber();
- _showCrosshairs = file->readNumber();
+ _showBox = file->readNumber();
_isSolved = file->readNumber();
}
@@ -47,7 +47,7 @@ void CStarField::save(SimpleFile *file, int indent) {
file->writeNumberLine(_points1On, indent);
file->writeNumberLine(_points2On, indent);
file->writeNumberLine(_mode, indent);
- file->writeNumberLine(_showCrosshairs, indent);
+ file->writeNumberLine(_showBox, indent);
file->writeNumberLine(_isSolved, indent);
}
@@ -66,7 +66,7 @@ bool CStarField::initDocument() {
void CStarField::render(CVideoSurface *surface, CStarCamera *camera) {
CSurfaceArea surfaceArea(surface);
draw(&surfaceArea, camera, &_starCloseup);
- if (_showCrosshairs)
+ if (_showBox)
drawBox(&surfaceArea);
_markers.draw(&surfaceArea, camera, nullptr);
@@ -112,13 +112,13 @@ void CStarField::setMode(StarMode mode) {
_mode = mode;
}
-void CStarField::toggleCrosshairs() {
- _showCrosshairs = !_showCrosshairs;
+void CStarField::toggleBox() {
+ _showBox = !_showBox;
}
-bool CStarField::setCrosshairs(bool isVisible) {
- bool oldVal = _showCrosshairs;
- _showCrosshairs = isVisible;
+bool CStarField::setBoxVisible(bool isVisible) {
+ bool oldVal = _showBox;
+ _showBox = isVisible;
return oldVal;
}
diff --git a/engines/titanic/star_control/star_field.h b/engines/titanic/star_control/star_field.h
index ecac23eac3..1cca40567b 100644
--- a/engines/titanic/star_control/star_field.h
+++ b/engines/titanic/star_control/star_field.h
@@ -42,7 +42,7 @@ private:
bool _points1On;
bool _points2On;
StarMode _mode;
- bool _showCrosshairs;
+ bool _showBox;
int _val5;
bool _isSolved;
private:
@@ -90,14 +90,14 @@ public:
void setMode(StarMode mode);
/**
- * Toggles whether the crosshairs box is visible
+ * Toggles whether the big box is visible
*/
- void toggleCrosshairs();
+ void toggleBox();
/**
- * Sets whether the crosshairs box is visible
+ * Sets whether the big box is visible
*/
- bool setCrosshairs(bool isVisible);
+ bool setBoxVisible(bool isVisible);
/**
* Returns the index for the number of star matches
diff --git a/engines/titanic/star_control/star_markers.cpp b/engines/titanic/star_control/star_markers.cpp
index fd64458f79..5fa059c6f0 100644
--- a/engines/titanic/star_control/star_markers.cpp
+++ b/engines/titanic/star_control/star_markers.cpp
@@ -34,7 +34,7 @@ void CStarMarkers::draw(CSurfaceArea *surfaceArea, CStarCamera *camera, CStarClo
FPoint center((double)surfaceArea->_width * 0.5,
surfaceArea->_height * 0.5);
FVector newV;
- int x1, x2, x3, y1, y2, y3;
+ double x1, x2, x3, y1, y2, y3;
uint savedPixel = surfaceArea->_pixel;
surfaceArea->_pixel = 0xffff;
@@ -54,14 +54,14 @@ void CStarMarkers::draw(CSurfaceArea *surfaceArea, CStarCamera *camera, CStarClo
x2 = center._x + vTemp._x;
y1 = center._y + vTemp._y;
- y2 = y1 - -4.0;
+ y2 = y1 + 4.0;
x1 = x2 - 4.0;
- x3 = x2 - -4.0;
+ x3 = x2 + 4.0;
y3 = y1 - 4.0;
- surfaceArea->drawLine(Common::Point(x1, y1), Common::Point(x2, y2));
- surfaceArea->drawLine(Common::Point(x2, y2), Common::Point(x3, y1));
- surfaceArea->drawLine(Common::Point(x3, y1), Common::Point(x2, y3));
- surfaceArea->drawLine(Common::Point(x2, y3), Common::Point(x1, y1));
+ surfaceArea->drawLine(FPoint(x1, y1), FPoint(x2, y2));
+ surfaceArea->drawLine(FPoint(x2, y2), FPoint(x3, y1));
+ surfaceArea->drawLine(FPoint(x3, y1), FPoint(x2, y3));
+ surfaceArea->drawLine(FPoint(x2, y3), FPoint(x1, y1));
}
}
diff --git a/engines/titanic/star_control/star_points1.cpp b/engines/titanic/star_control/star_points1.cpp
index 8b5bdd14ed..92f74bdefa 100644
--- a/engines/titanic/star_control/star_points1.cpp
+++ b/engines/titanic/star_control/star_points1.cpp
@@ -72,7 +72,7 @@ void CStarPoints1::draw(CSurfaceArea *surface, CStarCamera *camera) {
surface->_pixel = 0xff0000;
uint oldPixel = surface->_pixel;
surface->setColorFromPixel();
- SurfaceAreaMode oldMode = surface->setMode(SA_NONE);
+ SurfaceAreaMode oldMode = surface->setMode(SA_SOLID);
vector1._z = vTemp._x * pose._row1._z + vTemp._y * pose._row2._z + vTemp._z * pose._row3._z + pose._vector._z;
vector1._x = vTemp._x * pose._row1._x + vTemp._y * pose._row2._x + vTemp._z * pose._row3._x + pose._vector._x;
diff --git a/engines/titanic/star_control/star_points2.cpp b/engines/titanic/star_control/star_points2.cpp
index 8a2a3becb4..787ba8a90b 100644
--- a/engines/titanic/star_control/star_points2.cpp
+++ b/engines/titanic/star_control/star_points2.cpp
@@ -76,7 +76,7 @@ void CStarPoints2::draw(CSurfaceArea *surface, CStarCamera *camera) {
surface->_pixel = 0xffff00;
uint oldPixel = surface->_pixel;
surface->setColorFromPixel();
- SurfaceAreaMode oldMode = surface->setMode(SA_NONE);
+ SurfaceAreaMode oldMode = surface->setMode(SA_SOLID);
for (uint rootCtr = 0; rootCtr < _data.size(); ++rootCtr) {
const RootEntry &re = _data[rootCtr];
diff --git a/engines/titanic/star_control/star_view.cpp b/engines/titanic/star_control/star_view.cpp
index 1590855c14..d93e7aa22b 100644
--- a/engines/titanic/star_control/star_view.cpp
+++ b/engines/titanic/star_control/star_view.cpp
@@ -344,9 +344,9 @@ void CStarView::fn11() {
_starField->fn9();
}
-void CStarView::toggleCrosshairs() {
+void CStarView::toggleBox() {
if (_starField)
- _starField->toggleCrosshairs();
+ _starField->toggleBox();
}
void CStarView::fn13() {
@@ -425,7 +425,7 @@ void CStarView::fn18(CStarCamera *camera) {
if (_photoSurface) {
int oldVal = _starField->get54();
- bool oldCrosshairs = _starField->setCrosshairs(false);
+ bool oldCrosshairs = _starField->setBoxVisible(false);
// Render the starfield for the photograph view
_photoSurface->clear();
@@ -433,7 +433,7 @@ void CStarView::fn18(CStarCamera *camera) {
_starField->render(_photoSurface, camera);
// Render any previously set crosshairs
- _starField->setCrosshairs(oldCrosshairs);
+ _starField->setBoxVisible(oldCrosshairs);
_starField->set54(oldVal);
_starField->fn6(_photoSurface, camera);
_photoSurface->unlock();
diff --git a/engines/titanic/star_control/star_view.h b/engines/titanic/star_control/star_view.h
index 1a24293230..ce082a45a3 100644
--- a/engines/titanic/star_control/star_view.h
+++ b/engines/titanic/star_control/star_view.h
@@ -146,9 +146,9 @@ public:
void fn11();
/**
- * Toggles whether the crosshairs box is visible
+ * Toggles whether the viewpoint box is visible in the starfield
*/
- void toggleCrosshairs();
+ void toggleBox();
void fn13();
void fn14();
diff --git a/engines/titanic/star_control/surface_area.cpp b/engines/titanic/star_control/surface_area.cpp
index 2517461c37..be45f6bf75 100644
--- a/engines/titanic/star_control/surface_area.cpp
+++ b/engines/titanic/star_control/surface_area.cpp
@@ -31,7 +31,7 @@ CSurfaceArea::CSurfaceArea(CVideoSurface *surface) {
_pitch = surface->getPitch();
_field0 = 0;
_colorMask = _color = 0;
- _mode = SA_NONE;
+ _mode = SA_SOLID;
_surface = nullptr;
// Original supported other pixel depths
@@ -49,7 +49,7 @@ void CSurfaceArea::initialize() {
_field27 = _field26 = _field25 = 0;
_field24 = 0;
_rgb = _field2C = 0;
- _mode = SA_NONE;
+ _mode = SA_SOLID;
}
void CSurfaceArea::setColor(uint rgb) {
@@ -184,25 +184,31 @@ double CSurfaceArea::drawLine(const FRect &rect) {
switch (_bpp) {
case 0:
s.format = Graphics::PixelFormat::createFormatCLUT8();
- if (_mode != SA_NONE)
+ if (_mode != SA_SOLID) {
Graphics::drawLine(rr.left, rr.top, rr.right, rr.bottom, 0, plotPoint<byte>, this);
- return r.top;
+ return r.top;
+ }
+ break;
case 1:
case 2:
s.format = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0);
- if (_mode != SA_NONE)
+ if (_mode != SA_SOLID) {
Graphics::drawLine(rr.left, rr.top, rr.right, rr.bottom, 0, plotPoint<uint16>, this);
- return r.top;
+ return r.top;
+ }
+ break;
case 4:
s.format = Graphics::PixelFormat(4, 8, 8, 8, 8, 24, 16, 8, 0);
- if (_mode != SA_NONE)
+ if (_mode != SA_SOLID) {
Graphics::drawLine(rr.left, rr.top, rr.right, rr.bottom, 0, plotPoint<uint32>, this);
- return r.top;
+ return r.top;
+ }
+ break;
default:
error("Unknown bpp");
}
- s.drawLine(rr.left, rr.top, rr.right, rr.bottom, _color);
+ s.drawLine(rr.left, rr.top, rr.right, rr.bottom, _rgb);
return r.top;
}
diff --git a/engines/titanic/star_control/surface_area.h b/engines/titanic/star_control/surface_area.h
index 07aae36205..2605634357 100644
--- a/engines/titanic/star_control/surface_area.h
+++ b/engines/titanic/star_control/surface_area.h
@@ -31,7 +31,7 @@
namespace Titanic {
enum SurfaceAreaMode {
- SA_NONE = 0, SA_MODE1 = 1, SA_MODE2 = 2, SA_XOR = 3, SA_MODE4 = 4
+ SA_SOLID = 0, SA_MODE1 = 1, SA_MODE2 = 2, SA_XOR = 3, SA_MODE4 = 4
};
class CSurfaceArea {
@@ -96,8 +96,8 @@ public:
/**
* Draws a line on the surface
*/
- double drawLine(const Common::Point &pt1, const Common::Point &pt2) {
- return drawLine(FRect(pt1.x, pt1.y, pt2.x, pt2.y));
+ double drawLine(const FPoint &pt1, const FPoint &pt2) {
+ return drawLine(FRect(pt1._x, pt1._y, pt2._x, pt2._y));
}
};