diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/titanic/pet_control/pet_glyphs.cpp | 8 | ||||
| -rw-r--r-- | engines/titanic/pet_control/pet_glyphs.h | 7 | ||||
| -rw-r--r-- | engines/titanic/pet_control/pet_rooms_glyphs.cpp | 51 | ||||
| -rw-r--r-- | engines/titanic/pet_control/pet_rooms_glyphs.h | 37 | ||||
| -rw-r--r-- | engines/titanic/pet_control/pet_sound.h | 5 | 
5 files changed, 86 insertions, 22 deletions
diff --git a/engines/titanic/pet_control/pet_glyphs.cpp b/engines/titanic/pet_control/pet_glyphs.cpp index 914ddbbe0b..8ed8fcf47c 100644 --- a/engines/titanic/pet_control/pet_glyphs.cpp +++ b/engines/titanic/pet_control/pet_glyphs.cpp @@ -32,7 +32,7 @@ bool CPetGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) {  	return true;  } -void CPetGlyph::drawAt(CScreenManager *screenManager, const Point &pt) { +void CPetGlyph::drawAt(CScreenManager *screenManager, const Point &pt, bool isHighlighted) {  	_element.translate(pt.x, pt.y);  	_element.draw(screenManager);  	_element.translate(-pt.x, -pt.y); @@ -151,10 +151,8 @@ void CPetGlyphs::draw(CScreenManager *screenManager) {  			Point pt = getPosition(itemIndex);  			CPetGlyph *glyph = getGlyph(itemIndex); -			if (glyph) { -				// TODO: Comparison with highlighted index, and a redundant push? -				glyph->drawAt(screenManager, pt); -			} +			if (glyph) +				glyph->drawAt(screenManager, pt, index == _highlightIndex);  		}  	} diff --git a/engines/titanic/pet_control/pet_glyphs.h b/engines/titanic/pet_control/pet_glyphs.h index 883c7992a3..9216a42c74 100644 --- a/engines/titanic/pet_control/pet_glyphs.h +++ b/engines/titanic/pet_control/pet_glyphs.h @@ -74,6 +74,11 @@ public:  	void translateBack(const Point &pt) { _element.translate(-pt.x, -pt.y); }  	/** +	 * Get the parent RealLife area +	 */ +	CPetGlyphs *getOwner() { return _owner; } + +	/**  	 * Get the PET control  	 */  	CPetControl *getPetControl() const; @@ -106,7 +111,7 @@ public:  	/**  	 * Draw the glyph at a specified position  	 */ -	virtual void drawAt(CScreenManager *screenManager, const Point &pt); +	virtual void drawAt(CScreenManager *screenManager, const Point &pt, bool isHighlighted);  	/**  	 * Handles any secondary drawing of the glyph diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.cpp b/engines/titanic/pet_control/pet_rooms_glyphs.cpp index c853273873..6c032e7daf 100644 --- a/engines/titanic/pet_control/pet_rooms_glyphs.cpp +++ b/engines/titanic/pet_control/pet_rooms_glyphs.cpp @@ -21,13 +21,15 @@   */  #include "titanic/pet_control/pet_rooms_glyphs.h" +#include "titanic/pet_control/pet_section.h" +#include "titanic/support/screen_manager.h"  namespace Titanic {  CPetRoomsGlyph::CPetRoomsGlyph() : CPetGlyph(), -	_field34(0), _field38(0), _field3C(0), _field40(0), -	_field44(0), _field48(0), _field4C(0), _field50(0), -	_field54(0), _field58(0), _field5C(0) { +	_field34(0), _field38(0), _field3C(0), +	_field40(nullptr), _field44(nullptr), _field48(nullptr), _field4C(nullptr), +	_field50(nullptr), _field54(nullptr), _field58(nullptr), _field5C(nullptr) {  }  void CPetRoomsGlyph::set34(int val) { @@ -38,4 +40,47 @@ void CPetRoomsGlyph::set38(int val) {  	_field38 = val;  } +bool CPetRoomsGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) { +	if (!CPetGlyph::setup(petControl, owner)) +		return false; + +	CPetSection *section = owner->getOwner(); +	_field40 = section->getBackground(9); +	_field44 = section->getBackground(12); +	_field50 = section->getBackground(13); +	_field54 = section->getBackground(10); +	_field48 = section->getBackground(11); +	_field4C = section->getBackground(14); +	_field58 = section->getBackground(15); +	_field5C = _field58; +	return true; +} + +void CPetRoomsGlyph::drawAt(CScreenManager *screenManager, const Point &pt) { +	// Clear background +	Rect rect(pt.x, pt.y, pt.x + 52, pt.y + 52); +	screenManager->fillRect(SURFACE_BACKBUFFER, &rect, 0, 0, 0); + +	warning("TODO: CPetRoomsGlyph::drawAt"); +} + +void CPetRoomsGlyph::proc28(const Point &pt) { + +} +int CPetRoomsGlyph::proc29(const Point &pt) { +	return 0;  +} + +void CPetRoomsGlyph::proc32() { + +} + +int CPetRoomsGlyph::proc33() { +	return 1; +} + +void CPetRoomsGlyph::proc39() { + +} +  } // End of namespace Titanic diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.h b/engines/titanic/pet_control/pet_rooms_glyphs.h index ee79917b57..80c3d36ad8 100644 --- a/engines/titanic/pet_control/pet_rooms_glyphs.h +++ b/engines/titanic/pet_control/pet_rooms_glyphs.h @@ -32,20 +32,41 @@ protected:  	int _field34;  	int _field38;  	int _field3C; -	int _field40; -	int _field44; -	int _field48; -	int _field4C; -	int _field50; -	int _field54; -	int _field58; -	int _field5C; +	CGameObject *_field40; +	CGameObject *_field44; +	CGameObject *_field48; +	CGameObject *_field4C; +	CGameObject *_field50; +	CGameObject *_field54; +	CGameObject *_field58; +	CGameObject *_field5C;  public:  	CPetRoomsGlyph();  	void set34(int val);  	void set38(int val); + +	/** +	 * Setup the glyph +	 */ +	virtual bool setup(CPetControl *petControl, CPetGlyphs *owner); + +	/** +	 * Draw the glyph at a specified position +	 */ +	virtual void drawAt(CScreenManager *screenManager, const Point &pt); + +	/** +	 * Handles any secondary drawing of the glyph +	 */ +	virtual void draw2(CScreenManager *screenManager) {} + +	virtual void proc28(const Point &pt); +	virtual int proc29(const Point &pt); +	virtual void proc32(); +	virtual int proc33(); +	virtual void proc39();  };  class CPetRoomsGlyphs : public CPetGlyphs { diff --git a/engines/titanic/pet_control/pet_sound.h b/engines/titanic/pet_control/pet_sound.h index 3727780c4b..267bd03309 100644 --- a/engines/titanic/pet_control/pet_sound.h +++ b/engines/titanic/pet_control/pet_sound.h @@ -98,11 +98,6 @@ public:  	 * Returns the tooltip text for when the glyph is selected  	 */  	virtual void getTooltip(CPetText *text); - -	/** -	 * Get the parent RealLife area -	 */ -	CPetGlyphs *getOwner() { return _owner; }  };  } // End of namespace Titanic  | 
