diff options
| -rw-r--r-- | engines/titanic/star_control/base_star.h | 2 | ||||
| -rw-r--r-- | engines/titanic/star_control/star_control.cpp | 21 | ||||
| -rw-r--r-- | engines/titanic/star_control/star_control.h | 5 | ||||
| -rw-r--r-- | engines/titanic/star_control/star_field.h | 4 | 
4 files changed, 24 insertions, 8 deletions
diff --git a/engines/titanic/star_control/base_star.h b/engines/titanic/star_control/base_star.h index cf5cbc72d2..7e6329f78a 100644 --- a/engines/titanic/star_control/base_star.h +++ b/engines/titanic/star_control/base_star.h @@ -103,6 +103,8 @@ public:  	void clear();  	void initialize(); + +	int size() const { return _data.size(); }  };  } // End of namespace Titanic diff --git a/engines/titanic/star_control/star_control.cpp b/engines/titanic/star_control/star_control.cpp index 5874d01760..dcde81e253 100644 --- a/engines/titanic/star_control/star_control.cpp +++ b/engines/titanic/star_control/star_control.cpp @@ -72,7 +72,7 @@ void CStarControl::load(SimpleFile *file) {  		_view.load(file, 0);  		CScreenManager *screenManager = CScreenManager::setCurrent();  		if (!screenManager) -			error("There's no screen  manager during loading"); +			error("There's no screen manager during loading");  		_view.setup(screenManager, &_starField, this);  		_view.reset(); @@ -131,7 +131,21 @@ bool CStarControl::FrameMsg(CFrameMsg *msg) {  }  void CStarControl::newFrame() { -	// TODO +	if (!_petControl) +		_petControl = getPetControl(); + +	if (_petControl) { +		int val1 = _starField.get88(); +		int val2 = 0; + +		if (!_starField.get3()) { +			val2 = _starField.get5(); +			if ((val1 + 2) == _starField.get7Count()) +				val2 = 0; +		} + +		_petControl->starsSetButtons(val1, val2); +	}  }  void CStarControl::doAction(StarControlAction action) { @@ -238,10 +252,7 @@ void CStarControl::doAction(StarControlAction action) {  	case STAR_19:  		_view.petDestinationSet();  		break; -  	} - -	// TODO  }  bool CStarControl::isSolved() const { diff --git a/engines/titanic/star_control/star_control.h b/engines/titanic/star_control/star_control.h index 830d586db1..11e6053702 100644 --- a/engines/titanic/star_control/star_control.h +++ b/engines/titanic/star_control/star_control.h @@ -26,6 +26,7 @@  #include "titanic/core/game_object.h"  #include "titanic/star_control/star_field.h"  #include "titanic/star_control/star_view.h" +#include "titanic/pet_control/pet_control.h"  namespace Titanic { @@ -40,9 +41,7 @@ private:  	CStarField _starField;  	CStarView _view;  	Rect _starRect; -#if 0 -	int _field80B0; -#endif +	CPetControl *_petControl;  private:  	/**  	 * Called for ever new game frame diff --git a/engines/titanic/star_control/star_field.h b/engines/titanic/star_control/star_field.h index 41f01894f4..6c186f9937 100644 --- a/engines/titanic/star_control/star_field.h +++ b/engines/titanic/star_control/star_field.h @@ -87,6 +87,10 @@ public:  	 * Returns true if the starfield puzzle has been solved  	 */  	bool isSolved() const; + +	int get7Count() const { +		return _sub7.size(); +	}  };  } // End of namespace Titanic  | 
