[Scummvm-git-logs] scummvm master -> 2edbc730a26abbcf5d7b31105bf3500bfe4b6094

dreammaster dreammaster at scummvm.org
Tue Mar 14 02:43:39 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:
2edbc730a2 TITANIC: Implemented CStarControlSub2 class


Commit: 2edbc730a26abbcf5d7b31105bf3500bfe4b6094
    https://github.com/scummvm/scummvm/commit/2edbc730a26abbcf5d7b31105bf3500bfe4b6094
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-03-13T21:43:28-04:00

Commit Message:
TITANIC: Implemented CStarControlSub2 class

Changed paths:
    engines/titanic/star_control/base_star.cpp
    engines/titanic/star_control/base_star.h
    engines/titanic/star_control/star_control_sub2.cpp
    engines/titanic/star_control/star_control_sub2.h
    engines/titanic/star_control/star_ref.cpp
    engines/titanic/star_control/star_ref.h


diff --git a/engines/titanic/star_control/base_star.cpp b/engines/titanic/star_control/base_star.cpp
index bce8d7c..97ed683 100644
--- a/engines/titanic/star_control/base_star.cpp
+++ b/engines/titanic/star_control/base_star.cpp
@@ -201,14 +201,17 @@ void CBaseStar::draw4(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12, CStar
 	// TODO
 }
 
-void CBaseStar::baseFn1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
+int CBaseStar::baseFn1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
 		const Common::Point &pt) {
 	CStarRef1 ref(this, pt);
+	ref.process(surfaceArea, sub12);
+	return ref._index;
 }
 
 int CBaseStar::baseFn2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12) {
-	// TODO
-	return 0;
+	CStarRef3 ref(this);
+	ref.process(surfaceArea, sub12);
+	return ref._index;
 }
 
 } // End of namespace Titanic
diff --git a/engines/titanic/star_control/base_star.h b/engines/titanic/star_control/base_star.h
index 1335980..57be804 100644
--- a/engines/titanic/star_control/base_star.h
+++ b/engines/titanic/star_control/base_star.h
@@ -104,7 +104,7 @@ public:
 	 * Selects a star
 	 */
 	virtual bool selectStar(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
-		const Common::Point &pt, int flags = 0) { return false; }
+		const Common::Point &pt, void *handler = nullptr) { return false; }
 
 	/**
 	 * Adds a new star, or removes one if already present at the given co-ordinates
@@ -137,7 +137,7 @@ public:
 	 */
 	const CBaseStarEntry *getDataPtr(int index) const;
 
-	void baseFn1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
+	int baseFn1(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
 		const Common::Point &pt);
 
 	int baseFn2(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12);
diff --git a/engines/titanic/star_control/star_control_sub2.cpp b/engines/titanic/star_control/star_control_sub2.cpp
index 16830c2..ebeb9bf 100644
--- a/engines/titanic/star_control/star_control_sub2.cpp
+++ b/engines/titanic/star_control/star_control_sub2.cpp
@@ -21,9 +21,15 @@
  */
 
 #include "titanic/star_control/star_control_sub2.h"
+#include "titanic/star_control/star_control_sub12.h"
 
 namespace Titanic {
 
+bool CStarControlSub2::setup() {
+	loadData("STARFIELD/132");
+	return true;
+}
+
 bool CStarControlSub2::loadYale(int v1) {
 	clear();
 	error("Original loadYale not supported");
@@ -31,19 +37,20 @@ bool CStarControlSub2::loadYale(int v1) {
 }
 
 bool CStarControlSub2::selectStar(CSurfaceArea *surfaceArea,
-		CStarControlSub12 *sub12, const Common::Point &pt, int flags) {
-	// TODO
-	return true;
+		CStarControlSub12 *sub12, const Common::Point &pt, void *handler) {
+	int index = baseFn1(surfaceArea, sub12, pt);
+	if (index == -1) {
+		return false;
+	} else if (!handler) {
+		sub12->proc14(_data[index]._position);
+		return true;
+	} else {
+		error("no handler ever passed in original");
+	}
 }
 
 bool CStarControlSub2::loadStar() {
-	// TODO
-	return true;
-}
-
-bool CStarControlSub2::setup() {
-	// TODO
-	return true;
+	error("loadStar not supported");
 }
 
 } // End of namespace Titanic
diff --git a/engines/titanic/star_control/star_control_sub2.h b/engines/titanic/star_control/star_control_sub2.h
index d4d343c..bcf7397 100644
--- a/engines/titanic/star_control/star_control_sub2.h
+++ b/engines/titanic/star_control/star_control_sub2.h
@@ -37,7 +37,7 @@ public:
 	 * Selects a star
 	 */
 	virtual bool selectStar(CSurfaceArea *surfaceArea, CStarControlSub12 *sub12,
-		const Common::Point &pt, int flags = 0);
+		const Common::Point &pt, void *handler = nullptr);
 
 	virtual bool loadStar();
 
diff --git a/engines/titanic/star_control/star_ref.cpp b/engines/titanic/star_control/star_ref.cpp
index f583d72..0b98980 100644
--- a/engines/titanic/star_control/star_ref.cpp
+++ b/engines/titanic/star_control/star_ref.cpp
@@ -55,7 +55,7 @@ bool CStarRef2::check(const Common::Point &pt, int index) {
 /*------------------------------------------------------------------------*/
 
 bool CStarRef3::check(const Common::Point &pt, int index) {
-	++_counter;
+	++_index;
 	return true;
 }
 
diff --git a/engines/titanic/star_control/star_ref.h b/engines/titanic/star_control/star_ref.h
index 2f5a4c8..c6fec90 100644
--- a/engines/titanic/star_control/star_ref.h
+++ b/engines/titanic/star_control/star_ref.h
@@ -46,6 +46,7 @@ public:
 class CStarRef1 : public CBaseStarRef {
 private:
 	Common::Point _position;
+public:
 	int _index;
 public:
 	CStarRef1(CBaseStar *star, const Common::Point &pt) :
@@ -58,6 +59,7 @@ public:
 class CStarRef2 : public CBaseStarRef {
 private:
 	Common::Array<CStarPosition> *_positions;
+public:
 	int _index;
 public:
 	CStarRef2(CBaseStar *star, Common::Array<CStarPosition> *positions) :
@@ -68,10 +70,10 @@ public:
 };
 
 class CStarRef3 : public CBaseStarRef {
-private:
-	int _counter;
 public:
-	CStarRef3(CBaseStar *star) :CBaseStarRef(star), _counter(0) {}
+	int _index;
+public:
+	CStarRef3(CBaseStar *star) :CBaseStarRef(star), _index(0) {}
 	virtual ~CStarRef3() {}
 
 	virtual bool check(const Common::Point &pt, int index);





More information about the Scummvm-git-logs mailing list