[Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.80,1.81 logic.h,1.24,1.25 mouse.cpp,1.5,1.6 mouse.h,1.5,1.6 sky.cpp,1.52,1.53
Joost Peters
joostp at users.sourceforge.net
Wed Jun 4 10:14:04 CEST 2003
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/smush smush_font.cpp,1.3,1.4 smush_font.h,1.3,1.4 smush_player.cpp,1.21,1.22
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.81,1.82 mouse.cpp,1.6,1.7 mouse.h,1.6,1.7 skydefs.h,1.19,1.20
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv24329/sky
Modified Files:
logic.cpp logic.h mouse.cpp mouse.h sky.cpp
Log Message:
some more mouse stuff..
Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.cpp,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- logic.cpp 2 Jun 2003 06:48:35 -0000 1.80
+++ logic.cpp 4 Jun 2003 17:13:24 -0000 1.81
@@ -1466,8 +1466,7 @@
}
bool SkyLogic::fnAddHuman(uint32 a, uint32 b, uint32 c) {
- warning("Stub: fnAddHuman");
- return true;
+ return _skyMouse->fnAddHuman();
}
bool SkyLogic::fnAddButtons(uint32 a, uint32 b, uint32 c) {
Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/logic.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- logic.h 2 Jun 2003 06:42:42 -0000 1.24
+++ logic.h 4 Jun 2003 17:13:24 -0000 1.25
@@ -34,10 +34,13 @@
RESULT = 0,
SCREEN = 1,
LOGIC_LIST_NO = 2,
+ MOUSE_LIST_NO = 6,
DRAW_LIST_NO = 8,
CUR_ID = 12,
MOUSE_STATUS = 13,
MOUSE_STOP = 14,
+ BUTTON = 15,
+ SPECIAL_ITEM = 17,
GET_OFF = 18,
PLAYER_X = 27,
PLAYER_Y = 28,
@@ -62,6 +65,7 @@
class SkyAutoRoute;
class SkyScreen;
+class SkyMouse;
class SkyLogic {
public:
@@ -85,7 +89,7 @@
void pause();
void waitSync();
void simpleAnim();
-
+ uint16 script(uint16 scriptNo, uint16 offset);
bool fnCacheChip(uint32 a, uint32 b, uint32 c);
bool fnCacheFast(uint32 a, uint32 b, uint32 c);
@@ -211,7 +215,6 @@
void push(uint32);
uint32 pop();
void checkModuleLoaded(uint16 moduleNo);
- uint16 script(uint16 scriptNo, uint16 offset);
bool collide(Compact *cpt);
void initScriptVariables();
void mainAnim();
Index: mouse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/mouse.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mouse.cpp 1 Jun 2003 13:20:55 -0000 1.5
+++ mouse.cpp 4 Jun 2003 17:13:24 -0000 1.6
@@ -77,15 +77,15 @@
24829
};
-SkyMouse::SkyMouse(OSystem *system, SkyDisk *skyDisk) {
+SkyMouse::SkyMouse(OSystem *system, SkyDisk *skyDisk, SkyLogic *skyLogic) {
_skyDisk = skyDisk;
+ _skyLogic = skyLogic;
_system = system;
_mouseWidth = 6;
_mouseHeight = 6;
_maskWidth = 6;
_maskHeight = 6;
-
_miceData = _skyDisk->loadFile(MICE_FILE, NULL);
_mouseData2 = _miceData;
@@ -129,6 +129,36 @@
return true;
}
+bool SkyMouse::fnAddHuman(void) {
+ //reintroduce the mouse so that the human can control the player
+ //could still be switched out at high-level
+
+ if (!SkyLogic::_scriptVariables[MOUSE_STOP]) {
+ SkyLogic::_scriptVariables[MOUSE_STATUS] |= 6; //cursor & mouse
+ _tMouseX = _newSafeX;
+ _tMouseY = _newSafeY;
+
+ if (_aMouseY < 2) //stop mouse activating top line
+ _aMouseY = 2;
+
+ //force the pointer engine into running a get-off
+ //even if it's over nothing
+
+ //KWIK-FIX
+ //get off may contain script to remove mouse pointer text
+ //surely this script should be run just in case
+ //I am going to try it anyway
+ uint32 getOff = SkyLogic::_scriptVariables[GET_OFF];
+ if (getOff)
+ _skyLogic->script((uint16)(getOff & 0xFFFF), (uint16)(getOff >> 16));
+
+ SkyLogic::_scriptVariables[SPECIAL_ITEM] = 0xFFFFFFFF; //0?
+ SkyLogic::_scriptVariables[GET_OFF] = RESET_MOUSE;
+ }
+
+ return true;
+}
+
void SkyMouse::lockMouse(void) {
_lockMouseX = _aMouseX;
_lockMouseY = _aMouseY;
@@ -151,7 +181,7 @@
}
void SkyMouse::spriteMouse(uint16 frameNum, uint16 mouseX, uint16 mouseY) {
- //_mouseFlag |= MF_IN_INT;
+ SkyState::_systemVars.mouseFlag |= MF_IN_INT;
_mouseType2 = frameNum;
_mouseOffsetX = mouseX;
_mouseOffsetY = mouseY;
@@ -172,5 +202,41 @@
_system->show_mouse(true);
//drawNewMouse();
- //_mouseFlag ^= (~_mouseFlag | MF_IN_INT);
+ SkyState::_systemVars.mouseFlag &= ~MF_IN_INT;
+}
+
+void SkyMouse::mouseEngine(void) {
+ _tMouseX = _aMouseX + TOP_LEFT_X;
+ _tMouseY = _aMouseY + TOP_LEFT_Y;
+
+ _eMouseB = _bMouseB;
+ _bMouseB = 0;
+
+ if (!SkyLogic::_scriptVariables[MOUSE_STOP]) {
+ if (SkyLogic::_scriptVariables[MOUSE_STATUS] & (1 << 1)) {
+ pointerEngine();
+ if (SkyLogic::_scriptVariables[MOUSE_STATUS] & (1 << 2)) //buttons enabled?
+ buttonEngine1();
+ }
+ }
+ _eMouseB = 0; //don't save up buttons
+}
+
+void SkyMouse::pointerEngine(void) {
+ warning("Stub: pointerEngine()");
+}
+
+void SkyMouse::buttonEngine1(void) {
+ //checks for clicking on special item
+ //"compare the size of this routine to S1 mouse_button"
+
+ if (_eMouseB) { //anything pressed?
+ SkyLogic::_scriptVariables[BUTTON] = _eMouseB;
+ _eMouseB = 0;
+ if (SkyLogic::_scriptVariables[SPECIAL_ITEM]) { //over anything?
+ Compact *item = SkyState::fetchCompact(SkyLogic::_scriptVariables[SPECIAL_ITEM]);
+ if (item->mouseClick)
+ _skyLogic->script(item->mouseClick, 0);
+ }
+ }
}
Index: mouse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/mouse.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mouse.h 1 Jun 2003 13:20:55 -0000 1.5
+++ mouse.h 4 Jun 2003 17:13:24 -0000 1.6
@@ -24,19 +24,23 @@
#include "stdafx.h"
#include "sky/disk.h"
+#include "sky/logic.h"
#include "sky/struc.h"
+class SkyLogic;
+
class SkyMouse {
public:
- SkyMouse(OSystem *system, SkyDisk *skyDisk);
+ SkyMouse(OSystem *system, SkyDisk *skyDisk, SkyLogic *skyLogic);
~SkyMouse(void);
void replaceMouseCursors(uint16 fileNo);
bool fnBlankMouse(void);
bool fnDiskMouse(void);
bool fnNormalMouse(void);
+ bool fnAddHuman(void);
void lockMouse(void);
void unlockMouse(void);
void restoreMouseData(uint16 frameNum);
@@ -45,9 +49,22 @@
protected:
+ void mouseEngine(void);
+ void pointerEngine(void);
+ void buttonEngine1(void);
+
+ uint16 _eMouseB;
+ uint16 _bMouseB;
+
uint16 _aMouseX; //actual mouse coordinates
uint16 _aMouseY;
+ uint16 _tMouseX;
+ uint16 _tMouseY;
+
+ uint16 _newSafeX;
+ uint16 _newSafeY;
+
uint16 _lockMouseX;
uint16 _lockMouseY;
@@ -73,15 +90,13 @@
byte *_miceData; //address of mouse sprites
byte *_objectMouseData; //address of object mouse sprites
- uint16 _tMouseX;
- uint16 _tMouseY;
-
uint16 _mouseXOff;
static uint32 _mouseObjectList[];
OSystem *_system;
SkyDisk *_skyDisk;
+ SkyLogic *_skyLogic;
};
#endif //SKYMOUSE_H
Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- sky.cpp 2 Jun 2003 06:42:42 -0000 1.52
+++ sky.cpp 4 Jun 2003 17:13:24 -0000 1.53
@@ -174,7 +174,7 @@
_systemVars.systemFlags |= SF_PLAY_VOCS;
_skyText = new SkyText(_skyDisk);
- _skyMouse = new SkyMouse(_system, _skyDisk);
+ _skyMouse = new SkyMouse(_system, _skyDisk, _skyLogic);
_skyScreen = new SkyScreen(_system, _skyDisk);
initVirgin();
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/smush smush_font.cpp,1.3,1.4 smush_font.h,1.3,1.4 smush_player.cpp,1.21,1.22
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sky logic.cpp,1.81,1.82 mouse.cpp,1.6,1.7 mouse.h,1.6,1.7 skydefs.h,1.19,1.20
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list