aboutsummaryrefslogtreecommitdiff
path: root/mac
diff options
context:
space:
mode:
authorMutwin Kraus2002-04-09 18:24:08 +0000
committerMutwin Kraus2002-04-09 18:24:08 +0000
commit71b7c6d3fea9ed541dce6b7a156e6ceedd10839e (patch)
tree84feb1bbde5bfd0797cd97acd9811264199b5ce1 /mac
parent38451f101854176191c59c29bf333942c7b4126f (diff)
downloadscummvm-rg350-71b7c6d3fea9ed541dce6b7a156e6ceedd10839e.tar.gz
scummvm-rg350-71b7c6d3fea9ed541dce6b7a156e6ceedd10839e.tar.bz2
scummvm-rg350-71b7c6d3fea9ed541dce6b7a156e6ceedd10839e.zip
Fixed the bug that Keydowns weren't recoginzed, added MapKey and changed some accesses3 to the scumm class...
svn-id: r3898
Diffstat (limited to 'mac')
-rw-r--r--mac/mac.cpp75
1 files changed, 50 insertions, 25 deletions
diff --git a/mac/mac.cpp b/mac/mac.cpp
index be795fc259..ffb1e2877e 100644
--- a/mac/mac.cpp
+++ b/mac/mac.cpp
@@ -113,7 +113,6 @@ class WndMan
{
bool terminated;
public:
- Scumm *_scumm;
byte *_vgabuf;
GWorldPtr screenBuf;
WindowRef wPtr;
@@ -198,11 +197,16 @@ static pascal OSStatus WindowEventHandler( EventHandlerCallRef inCallRef, EventR
break;
case kEventWindowHandleContentClick:
- //debug(1, "Sending MouseDown");
if(CommandKeyDown())
- wm->_scumm->_rightBtnPressed |= msClicked|msDown;
+ scumm->_rightBtnPressed |= msClicked|msDown;
else
- wm->_scumm->_leftBtnPressed |= msClicked|msDown;
+ scumm->_leftBtnPressed |= msClicked|msDown;
+
+ if(wm->wPtr != FrontWindow())
+ {
+ ActivateWindow(wm->wPtr, true);
+ BringToFront(wm->wPtr);
+ }
break;
case kEventWindowClose:
@@ -213,6 +217,24 @@ static pascal OSStatus WindowEventHandler( EventHandlerCallRef inCallRef, EventR
return result;
}
+char mapKey(char key, char code, byte mod)
+{
+ switch(code)
+ {
+ case 0x35:
+ key = 27;
+ break;
+
+ case 0x31:
+ key = 32;
+ break;
+
+ case 0x60:
+ key = 601;
+ }
+ return key;
+}
+
static pascal OSStatus EventHandler( EventHandlerCallRef inCallRef, EventRef inEvent, void* userData )
{
OSStatus result = eventNotHandledErr;
@@ -232,14 +254,14 @@ static pascal OSStatus EventHandler( EventHandlerCallRef inCallRef, EventRef inE
break;
case kOpenGameCmd:
- wm->_scumm->_saveLoadSlot = 0;
- wm->_scumm->_saveLoadFlag = 2;
+ scumm->_saveLoadSlot = 0;
+ scumm->_saveLoadFlag = 2;
break;
case kSaveGameCmd:
- wm->_scumm->_saveLoadSlot = 0;
- sprintf(wm->_scumm->_saveLoadName, "Quicksave %d", wm->_scumm->_saveLoadSlot);
- wm->_scumm->_saveLoadFlag = 1;
+ scumm->_saveLoadSlot = 0;
+ sprintf(scumm->_saveLoadName, "Quicksave %d", scumm->_saveLoadSlot);
+ scumm->_saveLoadFlag = 1;
break;
case kQuitCmd:
@@ -260,10 +282,13 @@ static pascal OSStatus EventHandler( EventHandlerCallRef inCallRef, EventRef inE
case kEventClassKeyboard:
if(GetEventKind(inEvent) == kEventRawKeyDown)
{
- char key;
+ char key;
+ UInt32 mod, code;
+ GetEventParameter(inEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &code);
GetEventParameter(inEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &key);
- wm->_scumm->_keyPressed = (int)key;
+ GetEventParameter(inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &mod);
+ scumm->_keyPressed = (int)mapKey(key, code, mod);
}
break;
@@ -278,12 +303,13 @@ static pascal OSStatus EventHandler( EventHandlerCallRef inCallRef, EventRef inE
if(theWin != FrontWindow())
{
ActivateWindow(theWin, true);
+ BringToFront(theWin);
}
break;
case kEventMouseUp:
- wm->_scumm->_rightBtnPressed &= ~msDown;
- wm->_scumm->_leftBtnPressed &= ~msDown;
+ scumm->_rightBtnPressed &= ~msDown;
+ scumm->_leftBtnPressed &= ~msDown;
break;
case kEventMouseMoved:
@@ -320,10 +346,10 @@ void WndMan::init()
{
Rect rectWin;
- _scumm->_scale = scale;
+ scumm->_scale = scale;
- DEST_WIDTH = 320 * _scumm->_scale;
- DEST_HEIGHT = 200 * _scumm->_scale;
+ DEST_WIDTH = 320 * scumm->_scale;
+ DEST_HEIGHT = 200 * scumm->_scale;
MenuRef AppleMenu = GetMenu(1000);
InsertMenu(AppleMenu, 0);
@@ -378,13 +404,13 @@ void WndMan::init()
void WndMan::ChangeScaling(short scaling)
{
- _scumm->_scale = scaling;
+ scumm->_scale = scaling;
scale = scaling;
Rect rectWin;
- DEST_WIDTH = 320 * _scumm->_scale;
- DEST_HEIGHT = 200 * _scumm->_scale;
+ DEST_WIDTH = 320 * scumm->_scale;
+ DEST_HEIGHT = 200 * scumm->_scale;
SetRect(&rectWin, 0, 0, DEST_WIDTH, DEST_HEIGHT);
@@ -794,9 +820,9 @@ OSStatus prefsEventHandler(EventHandlerCallRef eventHandlerCallRef,EventRef even
GetControlID(controlRef,&controlID);
if(controlID.id == 'okay')
{
- wm->_scumm->_noSubtitles = (Boolean)!GetControlValue(checkBoxControlRef);
+ scumm->_noSubtitles = (Boolean)!GetControlValue(checkBoxControlRef);
short scale = GetControlValue(radioGroupRef);
- if(scale != wm->_scumm->_scale)
+ if(scale != scumm->_scale)
wm->ChangeScaling(scale);
short music_vol = GetControlValue(musicVolumeSlider);
if(music_vol != sound.get_music_volume())
@@ -846,7 +872,7 @@ void Preferences()
CreateCheckBoxControl(prefsWin,&rect, CFSTR("Subtitles"), 1, true, &checkBoxControlRef);
AutoEmbedControl(checkBoxControlRef, prefsWin);
- if(wm->_scumm->_noSubtitles)
+ if(scumm->_noSubtitles)
SetControlValue(checkBoxControlRef, false);
OffsetRect(&rect, 0, 20);
@@ -875,7 +901,7 @@ void Preferences()
CreateRadioButtonControl(prefsWin, &RadioButtonRect, CFSTR("Scaling 3x"), 0, true, &radioButton);
AutoEmbedControl(radioButton, prefsWin);
- SetControlValue(radioGroupRef, wm->_scumm->_scale);
+ SetControlValue(radioGroupRef, scumm->_scale);
SetRect(&rect, 5, 110, 175, 146);
@@ -997,7 +1023,6 @@ void main(void)
// initGraphics(&scumm, wm->fullscreen, wm->scale);
wm->_vgabuf = (byte*)calloc(320,200);
- wm->_scumm = scumm;
InitScummStuff();
@@ -1005,7 +1030,7 @@ void main(void)
gui.init(scumm);
- setWindowName(wm->_scumm);
+ setWindowName(scumm);
RunApplicationEventLoop();