scummvm/sky/mouse.cpp
Joost Peters f762c5dbba some mouse stuff + fnEnterSection
svn-id: r7347
2003-05-05 13:19:59 +00:00

173 lines
3.2 KiB
C++

/* 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$
*
*/
#include "stdafx.h"
#include "sky/sky.h"
#define MICE_FILE 60300
#define NO_MAIN_OBJECTS 24
#define NO_LINC_OBJECTS 21
uint32 _mouseObjectList[] = {
65,
9,
66,
64,
8,
63,
10,
11,
71,
76,
37,
36,
42,
75,
79,
6,
74,
39,
49,
43,
34,
35,
77,
38,
//Link cursors
24625,
24649,
24827,
24651,
24583,
24581,
24582,
24628,
24650,
24629,
24732,
24631,
24584,
24630,
24626,
24627,
24632,
24643,
24828,
24830,
24829
};
SkyMouse::SkyMouse(SkyDisk *skyDisk) {
_skyDisk = skyDisk;
_mouseWidth = 6;
_mouseHeight = 6;
_maskWidth = 6;
_maskHeight = 6;
_miceData = _skyDisk->loadFile(MICE_FILE, NULL);
_mouseData2 = _miceData;
uint16 width = FROM_LE_16(((struct dataFileHeader *)_miceData)->s_width);
uint16 height = FROM_LE_16(((struct dataFileHeader *)_miceData)->s_height);
_savedData = (byte *)malloc((width * height) + sizeof(struct dataFileHeader));
//load in the object mouse file
_objectMouseData = _skyDisk->loadFile(MICE_FILE + 1, NULL);
_mouseWidth = 1;
_mouseHeight = 1;
//_systemFlags |= SF_MOUSE;;
}
SkyMouse::~SkyMouse( ){
free (_miceData);
free (_savedData);
free (_objectMouseData);
}
void SkyMouse::replaceMouseCursors(uint16 fileNo) {
_skyDisk->loadFile(fileNo, _objectMouseData);
}
uint32 SkyMouse::fnBlankMouse(void) {
_mouseXOff = 0; //re-align mouse
spriteMouse(MOUSE_BLANK, 0, 0);
return 1;
}
void SkyMouse::lockMouse(void) {
_lockMouseX = _aMouseX;
_lockMouseY = _aMouseY;
}
void SkyMouse::unlockMouse(void) {
_aMouseX = _lockMouseX;
_aMouseY = _lockMouseY;
}
void SkyMouse::restoreMouseData(uint16 frameNum) {
warning("Stub: SkyMouse::restoreMouseData");
}
void SkyMouse::drawNewMouse() {
warning("Stub: SkyMouse::drawNewMouse");
//calculateMouseValues();
//saveMouseData();
//drawMouse();
}
void SkyMouse::spriteMouse(uint16 frameNum, uint16 mouseX, uint16 mouseY) {
//_mouseFlag |= MF_IN_INT;
_mouseType2 = frameNum;
_mouseOffsetX = mouseX;
_mouseOffsetY = mouseY;
restoreMouseData(frameNum);
byte *mouseData = _miceData;
uint32 pos = ((struct dataFileHeader *)mouseData)->s_sp_size * ((struct dataFileHeader *)mouseData)->s_sp_size;
pos += sizeof(struct dataFileHeader);
_mouseData2 = mouseData + pos;
_mouseWidth = ((struct dataFileHeader *)mouseData)->s_width;
_mouseHeight = ((struct dataFileHeader *)mouseData)->s_height;
drawNewMouse();
//_mouseFlag ^= (~_mouseFlag | MF_IN_INT);
}