aboutsummaryrefslogtreecommitdiff
path: root/sword1/mouse.h
diff options
context:
space:
mode:
Diffstat (limited to 'sword1/mouse.h')
-rw-r--r--sword1/mouse.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/sword1/mouse.h b/sword1/mouse.h
new file mode 100644
index 0000000000..a37b9ef0db
--- /dev/null
+++ b/sword1/mouse.h
@@ -0,0 +1,99 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ *
+ */
+
+#ifndef BSMOUSE_H
+#define BSMOUSE_H
+
+#include "scummsys.h"
+#include "sworddefs.h"
+#include "object.h"
+
+#define MAX_MOUSE 30
+
+#define BS1L_BUTTON_DOWN 2
+#define BS1L_BUTTON_UP 4
+#define BS1R_BUTTON_DOWN 8
+#define BS1R_BUTTON_UP 16
+#define MOUSE_BOTH_BUTTONS (BS1L_BUTTON_DOWN | BS1R_BUTTON_DOWN)
+
+struct MouseObj {
+ int id;
+ BsObject *compact;
+};
+
+#if !defined(__GNUC__)
+ #pragma START_PACK_STRUCTS
+#endif
+
+struct MousePtr {
+ uint16 numFrames;
+ uint16 sizeX;
+ uint16 sizeY;
+ uint16 hotSpotX;
+ uint16 hotSpotY;
+ uint8 data[2]; // arbitrary number.
+} GCC_PACK;
+
+#if !defined(__GNUC__)
+ #pragma END_PACK_STRUCTS
+#endif
+
+class SwordLogic;
+class ResMan;
+class ObjectMan;
+class OSystem;
+
+class SwordMouse {
+public:
+ SwordMouse(OSystem *system, ResMan *pResMan, ObjectMan *pObjMan);
+ void addToList(int id, BsObject *compact);
+ void useLogic(SwordLogic *pLogic);
+ void setLuggage(uint32 resID, uint32 rate);
+ void setPointer(uint32 resID, uint32 rate);
+ void animate(void);
+ void engine(uint16 x, uint16 y, uint16 eventFlags);
+ uint16 testEvent(void);
+ void flushEvents(void);
+ void giveCoords(uint16 *x, uint16 *y);
+ void fnNoHuman(void);
+ void fnAddHuman(void);
+ void fnBlankMouse(void);
+ void fnNormalMouse(void);
+ void fnLockMouse(void);
+ void fnUnlockMouse(void);
+private:
+ void fixTransparency(uint8 *data, uint32 size);
+ MousePtr *_pointers[17];
+ uint32 _currentPtrId, _rate, _rateCnt, _frame;
+ OSystem *_system;
+ SwordLogic *_logic;
+ MouseObj _objList[MAX_MOUSE];
+ ResMan *_resMan;
+ ObjectMan *_objMan;
+ uint16 _mouseX, _mouseY;
+
+ uint8 _mouseStatus, _mouseCount;
+ uint16 _numObjs;
+ uint16 _lastState, _state;
+ uint32 _getOff;
+};
+
+#endif //BSMOUSE_H