diff options
| author | Paul Gilbert | 2015-02-15 14:20:35 -0500 | 
|---|---|---|
| committer | Paul Gilbert | 2015-02-15 14:20:35 -0500 | 
| commit | adde24a338eafc5aab0c3e51c439aea64bfdbfb7 (patch) | |
| tree | efb16b6afcedf78ee07c86017ce268a0167eb6c0 | |
| parent | 74b4d91f4a5b68b2aa0ec2a46f76131ccf897535 (diff) | |
| download | scummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.tar.gz scummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.tar.bz2 scummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.zip  | |
XEEN: Move more code from InterfaceMap that should be in Interface class
| -rw-r--r-- | engines/xeen/interface.cpp | 119 | ||||
| -rw-r--r-- | engines/xeen/interface.h | 8 | ||||
| -rw-r--r-- | engines/xeen/interface_map.cpp | 117 | ||||
| -rw-r--r-- | engines/xeen/interface_map.h | 8 | 
4 files changed, 125 insertions, 127 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp index 8a35563ba1..0d488d1645 100644 --- a/engines/xeen/interface.cpp +++ b/engines/xeen/interface.cpp @@ -153,7 +153,11 @@ void Interface::initDrawStructs() {  }  void Interface::setup() { -	InterfaceMap::setup(); +	_borderSprites.load("border.icn"); +	_spellFxSprites.load("spellfx.icn"); +	_fecpSprites.load("fecp.brd"); +	_blessSprites.load("bless.icn"); +	_charPowSprites.load("charpow.icn");  	_uiSprites.load("inn.icn");  	Party &party = *_vm->_party; @@ -1656,4 +1660,117 @@ void Interface::drawMiniMap() {  	party._wizardEyeActive = eyeActive;  } +/** + * Draw the display borders + */ +void Interface::assembleBorder() { +	Resources &res = *_vm->_resources; +	Screen &screen = *_vm->_screen; + +	// Draw the outer frame +	res._globalSprites.draw(screen._windows[0], 0, Common::Point(8, 8)); + +	// Draw the animating bat character used to show when levitate is active +	_borderSprites.draw(screen._windows[0], _vm->_party->_levitateActive ? _batUIFrame + 16 : 16, +		Common::Point(0, 82)); +	_batUIFrame = (_batUIFrame + 1) % 12; + +	// Draw UI element to indicate whether can spot hidden doors +	_borderSprites.draw(screen, +		(_thinWall && _vm->_party->checkSkill(SPOT_DOORS)) ? _spotDoorsUIFrame + 28 : 28, +		Common::Point(194, 91)); +	_spotDoorsUIFrame = (_spotDoorsUIFrame + 1) % 12; + +	// Draw UI element to indicate whether can sense danger +	_borderSprites.draw(screen, +		(_vm->_dangerSenseAllowed && _vm->_party->checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40, +		Common::Point(107, 9)); +	_dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12; + +	// Handle the face UI elements for indicating clairvoyance status +	_face1UIFrame = (_face1UIFrame + 1) % 4; +	if (_face1State == 0) +		_face1UIFrame += 4; +	else if (_face1State == 2) +		_face1UIFrame = 0; + +	_face2UIFrame = (_face2UIFrame + 1) % 4 + 12; +	if (_face2State == 0) +		_face2UIFrame += 252; +	else if (_face2State == 2) +		_face2UIFrame = 0; + +	if (!_vm->_party->_clairvoyanceActive) { +		_face1UIFrame = 0; +		_face2UIFrame = 8; +	} + +	_borderSprites.draw(screen, _face1UIFrame, Common::Point(0, 32)); +	_borderSprites.draw(screen, +		screen._windows[10]._enabled || screen._windows[2]._enabled ? +		52 : _face2UIFrame, +		Common::Point(215, 32)); + +	// Draw resistence indicators +	if (!screen._windows[10]._enabled && !screen._windows[2]._enabled +		&& screen._windows[38]._enabled) { +		_fecpSprites.draw(screen, _vm->_party->_fireResistence ? 1 : 0, +			Common::Point(2, 2)); +		_fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 3 : 2, +			Common::Point(219, 2)); +		_fecpSprites.draw(screen, _vm->_party->_coldResistence ? 5 : 4, +			Common::Point(2, 134)); +		_fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 7 : 6, +			Common::Point(219, 134)); +	} else { +		_fecpSprites.draw(screen, _vm->_party->_fireResistence ? 9 : 8, +			Common::Point(8, 8)); +		_fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 10 : 11, +			Common::Point(219, 8)); +		_fecpSprites.draw(screen, _vm->_party->_coldResistence ? 12 : 13, +			Common::Point(8, 134)); +		_fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 14 : 15, +			Common::Point(219, 134)); +	} + +	// Draw UI element for blessed +	_blessSprites.draw(screen, 16, Common::Point(33, 137)); +	if (_vm->_party->_blessed) { +		_blessedUIFrame = (_blessedUIFrame + 1) % 4; +		_blessSprites.draw(screen, _blessedUIFrame, Common::Point(33, 137)); +	} + +	// Draw UI element for power shield +	if (_vm->_party->_powerShield) { +		_powerShieldUIFrame = (_powerShieldUIFrame + 1) % 4; +		_blessSprites.draw(screen, _powerShieldUIFrame + 4, +			Common::Point(55, 137)); +	} + +	// Draw UI element for holy bonus +	if (_vm->_party->_holyBonus) { +		_holyBonusUIFrame = (_holyBonusUIFrame + 1) % 4; +		_blessSprites.draw(screen, _holyBonusUIFrame + 8, Common::Point(160, 137)); +	} + +	// Draw UI element for heroism +	if (_vm->_party->_heroism) { +		_heroismUIFrame = (_heroismUIFrame + 1) % 4; +		_blessSprites.draw(screen, _heroismUIFrame + 12, Common::Point(182, 137)); +	} + +	// Draw direction character if direction sense is active +	if (_vm->_party->checkSkill(DIRECTION_SENSE) && !_vm->_noDirectionSense) { +		const char *dirText = DIRECTION_TEXT_UPPER[_vm->_party->_mazeDirection]; +		Common::String msg = Common::String::format( +			"\002""08\003""c\013""139\011""116%c\014""d\001", *dirText); +		screen._windows[0].writeString(msg); +	} + +	// Draw view frame +	if (screen._windows[12]._enabled) +		screen._windows[12].frame(); +} + +  } // End of namespace Xeen diff --git a/engines/xeen/interface.h b/engines/xeen/interface.h index e4278459af..8d3044fd72 100644 --- a/engines/xeen/interface.h +++ b/engines/xeen/interface.h @@ -64,6 +64,10 @@ private:  	XeenEngine *_vm;  	SpriteResource _uiSprites;  	SpriteResource _iconSprites; +	SpriteResource _borderSprites; +	SpriteResource _spellFxSprites; +	SpriteResource _fecpSprites; +	SpriteResource _blessSprites;  	DrawStruct _mainList[16];  	int _combatCharIds[8]; @@ -104,7 +108,7 @@ public:  	virtual ~Interface() {} -	virtual void setup(); +	void setup();  	void manageCharacters(bool soundPlayed); @@ -121,6 +125,8 @@ public:  	void bash(const Common::Point &pt, Direction direction);  	void draw3d(bool updateFlag); + +	void assembleBorder();  };  } // End of namespace Xeen diff --git a/engines/xeen/interface_map.cpp b/engines/xeen/interface_map.cpp index 4f408d18e2..837971b2fb 100644 --- a/engines/xeen/interface_map.cpp +++ b/engines/xeen/interface_map.cpp @@ -398,14 +398,6 @@ InterfaceMap::InterfaceMap(XeenEngine *vm): _vm(vm) {  	_face1State = _face2State = 0;  } -void InterfaceMap::setup() { -	_borderSprites.load("border.icn"); -	_spellFxSprites.load("spellfx.icn"); -	_fecpSprites.load("fecp.brd"); -	_blessSprites.load("bless.icn"); -	_charPowSprites.load("charpow.icn"); -} -  void InterfaceMap::drawMap() {  	Combat &combat = *_vm->_combat;  	Map &map = *_vm->_map; @@ -4447,113 +4439,4 @@ void InterfaceMap::moveMonsters() {  	// TODO  } -void InterfaceMap::assembleBorder() { -	Resources &res = *_vm->_resources; -	Screen &screen = *_vm->_screen; - -	// Draw the outer frame -	res._globalSprites.draw(screen._windows[0], 0, Common::Point(8, 8)); - -	// Draw the animating bat character used to show when levitate is active -	_borderSprites.draw(screen._windows[0], _vm->_party->_levitateActive ? _batUIFrame + 16 : 16, -		Common::Point(0, 82)); -	_batUIFrame = (_batUIFrame + 1) % 12; - -	// Draw UI element to indicate whether can spot hidden doors -	_borderSprites.draw(screen, -		(_thinWall && _vm->_party->checkSkill(SPOT_DOORS)) ? _spotDoorsUIFrame + 28 : 28, -		Common::Point(194, 91)); -	_spotDoorsUIFrame = (_spotDoorsUIFrame + 1) % 12; - -	// Draw UI element to indicate whether can sense danger -	_borderSprites.draw(screen, -		(_vm->_dangerSenseAllowed && _vm->_party->checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40, -		Common::Point(107, 9)); -	_dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12; - -	// Handle the face UI elements for indicating clairvoyance status -	_face1UIFrame = (_face1UIFrame + 1) % 4; -	if (_face1State == 0) -		_face1UIFrame += 4; -	else if (_face1State == 2) -		_face1UIFrame = 0; - -	_face2UIFrame = (_face2UIFrame + 1) % 4 + 12; -	if (_face2State == 0) -		_face2UIFrame += 252; -	else if (_face2State == 2) -		_face2UIFrame = 0; - -	if (!_vm->_party->_clairvoyanceActive) { -		_face1UIFrame = 0; -		_face2UIFrame = 8; -	} - -	_borderSprites.draw(screen, _face1UIFrame, Common::Point(0, 32)); -	_borderSprites.draw(screen, -		screen._windows[10]._enabled || screen._windows[2]._enabled ? -		52 : _face2UIFrame, -		Common::Point(215, 32)); - -	// Draw resistence indicators -	if (!screen._windows[10]._enabled && !screen._windows[2]._enabled -		&& screen._windows[38]._enabled) { -		_fecpSprites.draw(screen, _vm->_party->_fireResistence ? 1 : 0, -			Common::Point(2, 2)); -		_fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 3 : 2, -			Common::Point(219, 2)); -		_fecpSprites.draw(screen, _vm->_party->_coldResistence ? 5 : 4, -			Common::Point(2, 134)); -		_fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 7 : 6, -			Common::Point(219, 134)); -	} else { -		_fecpSprites.draw(screen, _vm->_party->_fireResistence ? 9 : 8, -			Common::Point(8, 8)); -		_fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 10 : 11, -			Common::Point(219, 8)); -		_fecpSprites.draw(screen, _vm->_party->_coldResistence ? 12 : 13, -			Common::Point(8, 134)); -		_fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 14 : 15, -			Common::Point(219, 134)); -	} - -	// Draw UI element for blessed -	_blessSprites.draw(screen, 16, Common::Point(33, 137)); -	if (_vm->_party->_blessed) { -		_blessedUIFrame = (_blessedUIFrame + 1) % 4; -		_blessSprites.draw(screen, _blessedUIFrame, Common::Point(33, 137)); -	} - -	// Draw UI element for power shield -	if (_vm->_party->_powerShield) { -		_powerShieldUIFrame = (_powerShieldUIFrame + 1) % 4; -		_blessSprites.draw(screen, _powerShieldUIFrame + 4, -			Common::Point(55, 137)); -	} - -	// Draw UI element for holy bonus -	if (_vm->_party->_holyBonus) { -		_holyBonusUIFrame = (_holyBonusUIFrame + 1) % 4; -		_blessSprites.draw(screen, _holyBonusUIFrame + 8, Common::Point(160, 137)); -	} - -	// Draw UI element for heroism -	if (_vm->_party->_heroism) { -		_heroismUIFrame = (_heroismUIFrame + 1) % 4; -		_blessSprites.draw(screen, _heroismUIFrame + 12, Common::Point(182, 137)); -	} - -	// Draw direction character if direction sense is active -	if (_vm->_party->checkSkill(DIRECTION_SENSE) && !_vm->_noDirectionSense) { -		const char *dirText = DIRECTION_TEXT_UPPER[_vm->_party->_mazeDirection]; -		Common::String msg = Common::String::format( -			"\002""08\003""c\013""139\011""116%c\014""d\001", *dirText); -		screen._windows[0].writeString(msg); -	} - -	// Draw view frame -	if (screen._windows[12]._enabled) -		screen._windows[12].frame(); -} -  } // End of namespace Xeen diff --git a/engines/xeen/interface_map.h b/engines/xeen/interface_map.h index a0626249de..9ac9222b67 100644 --- a/engines/xeen/interface_map.h +++ b/engines/xeen/interface_map.h @@ -92,10 +92,6 @@ public:  class InterfaceMap {  private:  	XeenEngine *_vm; -	SpriteResource _borderSprites; -	SpriteResource _spellFxSprites; -	SpriteResource _fecpSprites; -	SpriteResource _blessSprites;  	int _combatFloatCounter;  	void initDrawStructs(); @@ -123,8 +119,6 @@ protected:  	void animate3d(); -	virtual void setup(); -  	void drawMap();  public:  	OutdoorDrawList _outdoorList; @@ -160,8 +154,6 @@ public:  	void drawOutdoors(); -	void assembleBorder(); -  	void moveMonsters();  };  | 
