diff options
author | Joost Peters | 2003-06-09 18:15:02 +0000 |
---|---|---|
committer | Joost Peters | 2003-06-09 18:15:02 +0000 |
commit | d398b818f82c3d8d6e467c6e1ffbf13edc3e8d9c (patch) | |
tree | 4595c8fa5259a36710c7e488daf6b665082edf07 | |
parent | 839cb1c4f76502352f56fe102116f2d8625df32b (diff) | |
download | scummvm-rg350-d398b818f82c3d8d6e467c6e1ffbf13edc3e8d9c.tar.gz scummvm-rg350-d398b818f82c3d8d6e467c6e1ffbf13edc3e8d9c.tar.bz2 scummvm-rg350-d398b818f82c3d8d6e467c6e1ffbf13edc3e8d9c.zip |
added fnLookAt()
svn-id: r8418
-rw-r--r-- | sky/logic.cpp | 23 | ||||
-rw-r--r-- | sky/mouse.cpp | 6 | ||||
-rw-r--r-- | sky/mouse.h | 2 |
3 files changed, 30 insertions, 1 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp index 9f8b247e69..1f32ef5dc9 100644 --- a/sky/logic.cpp +++ b/sky/logic.cpp @@ -2206,7 +2206,28 @@ bool SkyLogic::fnPrintCredit(uint32 a, uint32 b, uint32 c) { } bool SkyLogic::fnLookAt(uint32 a, uint32 b, uint32 c) { - error("Stub: fnLookAt"); + + struct lowTextManager_t textInfo = _skyText->lowTextManager(a, 240, 0, 248, true); + Compact *textCpt = SkyState::fetchCompact(textInfo.compactNum); + textCpt->xcood = 168; + textCpt->ycood = (uint16)c; + + _skyScreen->recreate(); + _skyScreen->spriteEngine(); + _skyScreen->flip(); + + fnNoHuman(0, 0, 0); + _skyMouse->lockMouse(); + + //waitRelative(0); + _skyMouse->waitMouseNotPressed(); + //waitRelative(40); + + _skyMouse->unlockMouse(); + fnAddHuman(0, 0, 0); + textCpt->status = 0; + + return true; } bool SkyLogic::fnLincTextModule(uint32 a, uint32 b, uint32 c) { diff --git a/sky/mouse.cpp b/sky/mouse.cpp index dc82773561..88dc5260e8 100644 --- a/sky/mouse.cpp +++ b/sky/mouse.cpp @@ -85,6 +85,7 @@ SkyMouse::SkyMouse(OSystem *system, SkyDisk *skyDisk) { _mouseHeight = 6; _maskWidth = 6; _maskHeight = 6; + _mouseB = 0; _miceData = _skyDisk->loadFile(MICE_FILE, NULL); fixMouseTransparency(_miceData, _skyDisk->_lastLoadedFileSize); @@ -170,6 +171,11 @@ void SkyMouse::drawNewMouse() { //drawMouse(); } +void SkyMouse::waitMouseNotPressed(void) { + while (_mouseB != 0) ; + _bMouseB = 0; +} + //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, uint32 size) { diff --git a/sky/mouse.h b/sky/mouse.h index 22fa5bf81a..534df1c94e 100644 --- a/sky/mouse.h +++ b/sky/mouse.h @@ -47,6 +47,7 @@ public: void spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY); void useLogicInstance(SkyLogic *skyLogic) { _skyLogic = skyLogic; }; void buttonPressed(uint8 button) { _bMouseB = button; }; + void waitMouseNotPressed(void); uint16 giveMouseX(void) { return _aMouseX; }; uint16 giveMouseY(void) { return _aMouseY; }; @@ -56,6 +57,7 @@ protected: void buttonEngine1(void); void fixMouseTransparency(byte *mouseData, uint32 size); + uint16 _mouseB; //used to check for repeat presses uint16 _eMouseB; uint16 _bMouseB; |