diff options
| -rw-r--r-- | sky/mouse.cpp | 13 | ||||
| -rw-r--r-- | sky/mouse.h | 3 | 
2 files changed, 15 insertions, 1 deletions
| diff --git a/sky/mouse.cpp b/sky/mouse.cpp index 57b2edfff1..3be31a37dd 100644 --- a/sky/mouse.cpp +++ b/sky/mouse.cpp @@ -168,6 +168,18 @@ void SkyMouse::drawNewMouse() {  	//drawMouse();  } +//original sky uses different colors for transparency than our backends do, +//so we simply swap our "transparent"-white with another one. +void SkyMouse::fixMouseTransparency(byte *mouseData) { +	for (int i = 0; i < (_mouseWidth * _mouseHeight); i++) { +		if (mouseData[i] == 255) +			mouseData[i] = 242; +		else +			if (mouseData[i] == 0) +				mouseData[i] = 255; +	} +} +  void SkyMouse::spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY) {  	SkyState::_systemVars.mouseFlag |= MF_IN_INT;  	_mouseType2 = frameNum; @@ -182,6 +194,7 @@ void SkyMouse::spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY) {  	//_system->set_mouse_cursor(_mouseData2, _mouseWidth, _mouseHeight, mouseX, mouseY);  	// there's something wrong about the mouse's hotspot. using 0/0 works fine. +	fixMouseTransparency(_mouseData2);  	_system->set_mouse_cursor(_mouseData2, _mouseWidth, _mouseHeight, 0, 0);  	if (frameNum == MOUSE_BLANK) _system->show_mouse(false);  	else _system->show_mouse(true); diff --git a/sky/mouse.h b/sky/mouse.h index 842d939324..5de4dc7dab 100644 --- a/sky/mouse.h +++ b/sky/mouse.h @@ -54,7 +54,8 @@ protected:  	void pointerEngine(void);  	void buttonEngine1(void); - +	void fixMouseTransparency(byte *mouseData); +	  	uint16 _eMouseB;  	uint16 _bMouseB; | 
