Whitespace changes

svn-id: r10390
This commit is contained in:
Torbjörn Andersson 2003-09-24 06:33:59 +00:00
parent 3854ce8f3d
commit 570e60a487
30 changed files with 1289 additions and 1356 deletions

View file

@ -82,59 +82,59 @@ bool EditTextWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
drawCaret(true);
switch (keycode) {
case '\n': // enter/return
case '\r':
_boss->releaseFocus();
dirty = true;
break;
case 27: // escape
_label = _backupString;
_pos = _label.size() - 1;
_labelOffset = (_boss->getGui()->getStringWidth(_label) - (_w-6));
if (_labelOffset < 0)
_labelOffset = 0;
_boss->releaseFocus();
dirty = true;
break;
case 8: // backspace
if (_pos > 0) {
_pos--;
_label.deleteChar(_pos);
}
dirty = true;
break;
case 127: // delete
case '\n': // enter/return
case '\r':
_boss->releaseFocus();
dirty = true;
break;
case 27: // escape
_label = _backupString;
_pos = _label.size() - 1;
_labelOffset = (_boss->getGui()->getStringWidth(_label) - (_w-6));
if (_labelOffset < 0)
_labelOffset = 0;
_boss->releaseFocus();
dirty = true;
break;
case 8: // backspace
if (_pos > 0) {
_pos--;
_label.deleteChar(_pos);
}
dirty = true;
break;
case 127: // delete
_label.deleteChar(_pos);
dirty = true;
break;
case 256 + 20: // left arrow
if (_pos > 0) {
_pos--;
dirty = adjustOffset();
}
break;
case 256 + 19: // right arrow
if (_pos < _label.size()) {
_pos++;
dirty = adjustOffset();
}
break;
case 256 + 22: // home
_pos = 0;
dirty = adjustOffset();
break;
case 256 + 23: // end
_pos = _label.size();
dirty = adjustOffset();
break;
default:
if (isprint((char)ascii)) {
_label.insertChar((char)ascii, _pos++);
//_label += (char)ascii;
dirty = true;
break;
case 256 + 20: // left arrow
if (_pos > 0) {
_pos--;
dirty = adjustOffset();
}
break;
case 256 + 19: // right arrow
if (_pos < _label.size()) {
_pos++;
dirty = adjustOffset();
}
break;
case 256 + 22: // home
_pos = 0;
dirty = adjustOffset();
break;
case 256 + 23: // end
_pos = _label.size();
dirty = adjustOffset();
break;
default:
if (isprint((char)ascii)) {
_label.insertChar((char)ascii, _pos++);
//_label += (char)ascii;
dirty = true;
} else {
handled = false;
}
} else {
handled = false;
}
}
if (dirty)

View file

@ -167,23 +167,23 @@ void PopUpDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
return;
switch (keycode) {
case '\n': // enter/return
case '\r':
setResult(_selection);
close();
break;
case 256+17: // up arrow
moveUp();
break;
case 256+18: // down arrow
moveDown();
break;
case 256+22: // home
setSelection(0);
break;
case 256+23: // end
setSelection(_popUpBoss->_entries.size()-1);
break;
case '\n': // enter/return
case '\r':
setResult(_selection);
close();
break;
case 256+17: // up arrow
moveUp();
break;
case 256+18: // down arrow
moveDown();
break;
case 256+22: // home
setSelection(0);
break;
case 256+23: // end
setSelection(_popUpBoss->_entries.size()-1);
break;
}
}

View file

@ -141,146 +141,143 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
int i;
switch (keycode) {
case '\n': // enter/return
case '\r': {
if (_caretVisible)
drawCaret(true);
case '\n': // enter/return
case '\r': {
if (_caretVisible)
drawCaret(true);
nextLine();
nextLine();
int len = _promptEndPos - _promptStartPos;
bool keepRunning = true;
int len = _promptEndPos - _promptStartPos;
bool keepRunning = true;
// FIXME - len should NEVER be negative. If anything makes it negative,
// then the code doing that is buggy and needs to be fixed.
assert(len >= 0);
// FIXME - len should NEVER be negative. If anything makes it negative,
// then the code doing that is buggy and needs to be fixed.
assert(len >= 0);
if (len > 0) {
if (len > 0) {
// We have to allocate the string buffer with new, since VC++ sadly does not
// comply to the C++ standard, so we can't use a dynamic sized stack array.
char *str = new char[len + 1];
// We have to allocate the string buffer with new, since VC++ sadly does not
// comply to the C++ standard, so we can't use a dynamic sized stack array.
char *str = new char[len + 1];
// Copy the user input to str
for (i = 0; i < len; i++)
str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
str[len] = '\0';
// Copy the user input to str
for (i = 0; i < len; i++)
str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
str[len] = '\0';
// Add the input to the history
addToHistory(str);
// Add the input to the history
addToHistory(str);
// Pass it to the input callback, if any
if (_callbackProc)
keepRunning = (*_callbackProc)(this, str, _callbackRefCon);
// Pass it to the input callback, if any
if (_callbackProc)
keepRunning = (*_callbackProc)(this, str, _callbackRefCon);
// Get rid of the string buffer
delete [] str;
}
print(PROMPT);
_promptStartPos = _promptEndPos = _currentPos;
draw();
if (!keepRunning)
close();
break;
}
case 27: // escape
close();
break;
case 8: // backspace
if (_caretVisible)
drawCaret(true);
if (_currentPos > _promptStartPos) {
_currentPos--;
killChar();
}
scrollToCurrent();
draw(); // FIXME - not nice to redraw the full console just for one char!
break;
case 9: // tab
{
if (_completionCallbackProc) {
int len = _currentPos - _promptStartPos;
assert(len >= 0);
char *str = new char[len + 1];
// Copy the user input to str
for (i = 0; i < len; i++)
str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
str[len] = '\0';
char *completion = 0;
if ((*_completionCallbackProc)(this, str, completion,
_callbackRefCon))
{
if (_caretVisible)
drawCaret(true);
insertIntoPrompt(completion);
scrollToCurrent();
draw();
delete[] completion;
}
delete[] str;
}
break;
// Get rid of the string buffer
delete [] str;
}
case 127:
killChar();
draw();
break;
/*
case 256 + 24: // pageup
_selectedItem -= _entriesPerPage - 1;
if (_selectedItem < 0)
_selectedItem = 0;
break;
case 256 + 25: // pagedown
_selectedItem += _entriesPerPage - 1;
if (_selectedItem >= _list.size() )
_selectedItem = _list.size() - 1;
break;
*/
case 256 + 22: // home
_scrollLine = _linesPerPage - 1; // FIXME - this is not correct after a wrap around
updateScrollBar();
draw();
break;
case 256 + 23: // end
_scrollLine = _currentPos / _lineWidth;
updateScrollBar();
draw();
break;
case 273: // cursor up
historyScroll(+1);
break;
case 274: // cursor down
historyScroll(-1);
break;
case 275: // cursor right
if (_currentPos < _promptEndPos)
_currentPos++;
draw();
break;
case 276: // cursor left
if (_currentPos > _promptStartPos)
_currentPos--;
draw();
break;
default:
if (ascii == '~' || ascii == '#') {
close();
} else if (modifiers == OSystem::KBD_CTRL) {
specialKeys(keycode);
} else if (isprint((char)ascii)) {
for (i = _promptEndPos-1; i >= _currentPos; i--)
_buffer[(i + 1) % kBufferSize] = _buffer[i % kBufferSize];
_promptEndPos++;
putchar((char)ascii);
print(PROMPT);
_promptStartPos = _promptEndPos = _currentPos;
draw();
if (!keepRunning)
close();
break;
}
case 27: // escape
close();
break;
case 8: // backspace
if (_caretVisible)
drawCaret(true);
if (_currentPos > _promptStartPos) {
_currentPos--;
killChar();
}
scrollToCurrent();
draw(); // FIXME - not nice to redraw the full console just for one char!
break;
case 9: // tab
{
if (_completionCallbackProc) {
int len = _currentPos - _promptStartPos;
assert(len >= 0);
char *str = new char[len + 1];
// Copy the user input to str
for (i = 0; i < len; i++)
str[i] = _buffer[(_promptStartPos + i) % kBufferSize];
str[len] = '\0';
char *completion = 0;
if ((*_completionCallbackProc)(this, str, completion, _callbackRefCon)) {
if (_caretVisible)
drawCaret(true);
insertIntoPrompt(completion);
scrollToCurrent();
draw();
delete[] completion;
}
delete[] str;
}
break;
}
case 127:
killChar();
draw();
break;
/*
case 256 + 24: // pageup
_selectedItem -= _entriesPerPage - 1;
if (_selectedItem < 0)
_selectedItem = 0;
break;
case 256 + 25: // pagedown
_selectedItem += _entriesPerPage - 1;
if (_selectedItem >= _list.size() )
_selectedItem = _list.size() - 1;
break;
*/
case 256 + 22: // home
_scrollLine = _linesPerPage - 1; // FIXME - this is not correct after a wrap around
updateScrollBar();
draw();
break;
case 256 + 23: // end
_scrollLine = _currentPos / _lineWidth;
updateScrollBar();
draw();
break;
case 273: // cursor up
historyScroll(+1);
break;
case 274: // cursor down
historyScroll(-1);
break;
case 275: // cursor right
if (_currentPos < _promptEndPos)
_currentPos++;
draw();
break;
case 276: // cursor left
if (_currentPos > _promptStartPos)
_currentPos--;
draw();
break;
default:
if (ascii == '~' || ascii == '#') {
close();
} else if (modifiers == OSystem::KBD_CTRL) {
specialKeys(keycode);
} else if (isprint((char)ascii)) {
for (i = _promptEndPos-1; i >= _currentPos; i--)
_buffer[(i + 1) % kBufferSize] = _buffer[i % kBufferSize];
_promptEndPos++;
putchar((char)ascii);
scrollToCurrent();
}
}
}
@ -310,28 +307,28 @@ void ConsoleDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
void ConsoleDialog::specialKeys(int keycode) {
switch (keycode) {
case 'a':
_currentPos = _promptStartPos;
case 'a':
_currentPos = _promptStartPos;
draw();
break;
case 'd':
if (_currentPos < _promptEndPos) {
killChar();
draw();
break;
case 'd':
if (_currentPos < _promptEndPos) {
killChar();
draw();
}
break;
case 'e':
_currentPos = _promptEndPos;
draw();
break;
case 'k':
killLine();
draw();
break;
case 'w':
killLastWord();
draw();
break;
}
break;
case 'e':
_currentPos = _promptEndPos;
draw();
break;
case 'k':
killLine();
draw();
break;
case 'w':
killLastWord();
draw();
break;
}
}

View file

@ -147,60 +147,60 @@ void NewGui::runLoop() {
uint32 time = get_time();
while (_system->poll_event(&event)) {
switch(event.event_code) {
case OSystem::EVENT_KEYDOWN:
switch (event.event_code) {
case OSystem::EVENT_KEYDOWN:
#if !defined(_WIN32_WCE) && !defined(__PALM_OS__)
// init continuous event stream
// not done on WinCE because keyboard is emulated and
// keyup is not generated
_currentKeyDown.ascii = event.kbd.ascii;
_currentKeyDown.keycode = event.kbd.keycode;
_currentKeyDown.flags = event.kbd.flags;
_keyRepeatTime = time + kKeyRepeatInitialDelay;
// init continuous event stream
// not done on WinCE because keyboard is emulated and
// keyup is not generated
_currentKeyDown.ascii = event.kbd.ascii;
_currentKeyDown.keycode = event.kbd.keycode;
_currentKeyDown.flags = event.kbd.flags;
_keyRepeatTime = time + kKeyRepeatInitialDelay;
#endif
activeDialog->handleKeyDown(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
break;
case OSystem::EVENT_KEYUP:
activeDialog->handleKeyUp(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
if (event.kbd.keycode == _currentKeyDown.keycode)
// only stop firing events if it's the current key
_currentKeyDown.keycode = 0;
break;
case OSystem::EVENT_MOUSEMOVE:
activeDialog->handleMouseMoved(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 0);
break;
// We don't distinguish between mousebuttons (for now at least)
case OSystem::EVENT_LBUTTONDOWN:
case OSystem::EVENT_RBUTTONDOWN: {
if (_lastClick.count && (time < _lastClick.time + kDoubleClickDelay)
&& ABS(_lastClick.x - event.mouse.x) < 3
&& ABS(_lastClick.y - event.mouse.y) < 3) {
_lastClick.count++;
} else {
_lastClick.x = event.mouse.x;
_lastClick.y = event.mouse.y;
_lastClick.count = 1;
}
_lastClick.time = time;
}
activeDialog->handleMouseDown(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1, _lastClick.count);
break;
case OSystem::EVENT_LBUTTONUP:
case OSystem::EVENT_RBUTTONUP:
activeDialog->handleMouseUp(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1, _lastClick.count);
break;
case OSystem::EVENT_WHEELUP:
activeDialog->handleMouseWheel(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, -1);
break;
case OSystem::EVENT_WHEELDOWN:
activeDialog->handleMouseWheel(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1);
break;
case OSystem::EVENT_QUIT:
_system->quit();
return;
case OSystem::EVENT_SCREEN_CHANGED:
updateColors();
break;
activeDialog->handleKeyDown(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
break;
case OSystem::EVENT_KEYUP:
activeDialog->handleKeyUp(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
if (event.kbd.keycode == _currentKeyDown.keycode)
// only stop firing events if it's the current key
_currentKeyDown.keycode = 0;
break;
case OSystem::EVENT_MOUSEMOVE:
activeDialog->handleMouseMoved(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 0);
break;
// We don't distinguish between mousebuttons (for now at least)
case OSystem::EVENT_LBUTTONDOWN:
case OSystem::EVENT_RBUTTONDOWN: {
if (_lastClick.count && (time < _lastClick.time + kDoubleClickDelay)
&& ABS(_lastClick.x - event.mouse.x) < 3
&& ABS(_lastClick.y - event.mouse.y) < 3) {
_lastClick.count++;
} else {
_lastClick.x = event.mouse.x;
_lastClick.y = event.mouse.y;
_lastClick.count = 1;
}
_lastClick.time = time;
}
activeDialog->handleMouseDown(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1, _lastClick.count);
break;
case OSystem::EVENT_LBUTTONUP:
case OSystem::EVENT_RBUTTONUP:
activeDialog->handleMouseUp(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1, _lastClick.count);
break;
case OSystem::EVENT_WHEELUP:
activeDialog->handleMouseWheel(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, -1);
break;
case OSystem::EVENT_WHEELDOWN:
activeDialog->handleMouseWheel(event.mouse.x - activeDialog->_x, event.mouse.y - activeDialog->_y, 1);
break;
case OSystem::EVENT_QUIT:
_system->quit();
return;
case OSystem::EVENT_SCREEN_CHANGED:
updateColors();
break;
}
}

View file

@ -278,68 +278,61 @@ bool ScummDebugger::RunCommand(const char *inputOrig) {
if (num_params > 1) {
// Alright, we need to check the TYPE of the variable to deref and stuff... the array stuff is a bit ugly :)
switch(_dvars[i].type) {
// Integer
case DVAR_INT:
*(int *)_dvars[i].variable = atoi(param[1]);
Debug_Printf("(int)%s = %d\n", param[0], *(int *)_dvars[i].variable);
break;
// Integer Array
case DVAR_INTARRAY: {
char *chr = strchr(param[0], '[');
if (!chr) {
Debug_Printf("You must access this array as %s[element]\n", param[0]);
// Integer
case DVAR_INT:
*(int *)_dvars[i].variable = atoi(param[1]);
Debug_Printf("(int)%s = %d\n", param[0], *(int *)_dvars[i].variable);
break;
// Integer Array
case DVAR_INTARRAY: {
char *chr = strchr(param[0], '[');
if (!chr) {
Debug_Printf("You must access this array as %s[element]\n", param[0]);
} else {
int element = atoi(chr+1);
int32 *var = *(int32 **)_dvars[i].variable;
if (element > _dvars[i].optional) {
Debug_Printf("%s is out of range (array is %d elements big)\n", param[0], _dvars[i].optional);
} else {
int element = atoi(chr+1);
int32 *var = *(int32 **)_dvars[i].variable;
if (element > _dvars[i].optional) {
Debug_Printf("%s is out of range (array is %d elements big)\n", param[0], _dvars[i].optional);
} else {
var[element] = atoi(param[1]);
Debug_Printf("(int)%s = %d\n", param[0], var[element]);
}
var[element] = atoi(param[1]);
Debug_Printf("(int)%s = %d\n", param[0], var[element]);
}
}
break;
default:
Debug_Printf("Failed to set variable %s to %s - unknown type\n", _dvars[i].name, param[1]);
}
break;
default:
Debug_Printf("Failed to set variable %s to %s - unknown type\n", _dvars[i].name, param[1]);
break;
}
} else {
// And again, type-dependent prints/defrefs. The array one is still ugly.
switch(_dvars[i].type) {
// Integer
case DVAR_INT:
Debug_Printf("(int)%s = %d\n", param[0], *(int *)_dvars[i].variable);
break;
// Integer array
case DVAR_INTARRAY: {
char *chr = strchr(param[0], '[');
if (!chr) {
Debug_Printf("You must access this array as %s[element]\n", param[0]);
// Integer
case DVAR_INT:
Debug_Printf("(int)%s = %d\n", param[0], *(int *)_dvars[i].variable);
break;
// Integer array
case DVAR_INTARRAY: {
char *chr = strchr(param[0], '[');
if (!chr) {
Debug_Printf("You must access this array as %s[element]\n", param[0]);
} else {
int element = atoi(chr+1);
int16 *var = *(int16 **)_dvars[i].variable;
if (element > _dvars[i].optional) {
Debug_Printf("%s is out of range (array is %d elements big)\n", param[0], _dvars[i].optional);
} else {
int element = atoi(chr+1);
int16 *var = *(int16 **)_dvars[i].variable;
if (element > _dvars[i].optional) {
Debug_Printf("%s is out of range (array is %d elements big)\n", param[0], _dvars[i].optional);
} else {
Debug_Printf("(int)%s = %d\n", param[0], var[element]);
}
Debug_Printf("(int)%s = %d\n", param[0], var[element]);
}
}
}
break;
// String
case DVAR_STRING:
Debug_Printf("(string)%s = %s\n", param[0], *(char **)_dvars[i].variable);
break;
// String
case DVAR_STRING:
Debug_Printf("(string)%s = %s\n", param[0], *(char **)_dvars[i].variable);
break;
default:
Debug_Printf("%s = (unknown type)\n", param[0]);
default:
Debug_Printf("%s = (unknown type)\n", param[0]);
break;
}
}

View file

@ -653,34 +653,34 @@ static byte *readCreativeVocFile(byte *ptr, int32 &size, int &rate) {
code = len & 0xFF;
len >>= 8;
switch(code) {
case 0: quit = 1; break;
case 1: {
int time_constant = ptr[offset++];
int packing = ptr[offset++];
len -= 2;
rate = getSampleRateFromVOCRate(time_constant);
debug(9, "VOC Data Bloc : %d, %d, %d", rate, packing, len);
if (packing == 0) {
if (size) {
ret_sound = (byte *)realloc(ret_sound, size + len);
} else {
ret_sound = (byte *)malloc(len);
}
memcpy(ret_sound + size, ptr + offset, len);
size += len;
case 0: quit = 1; break;
case 1: {
int time_constant = ptr[offset++];
int packing = ptr[offset++];
len -= 2;
rate = getSampleRateFromVOCRate(time_constant);
debug(9, "VOC Data Bloc : %d, %d, %d", rate, packing, len);
if (packing == 0) {
if (size) {
ret_sound = (byte *)realloc(ret_sound, size + len);
} else {
warning("VOC file packing %d unsupported", packing);
ret_sound = (byte *)malloc(len);
}
} break;
case 6: // begin of loop
loops = len + 1;
break;
case 7: // end of loop
break;
default:
warning("Invalid code in VOC file : %d", code);
quit = 1;
break;
memcpy(ret_sound + size, ptr + offset, len);
size += len;
} else {
warning("VOC file packing %d unsupported", packing);
}
} break;
case 6: // begin of loop
loops = len + 1;
break;
case 7: // end of loop
break;
default:
warning("Invalid code in VOC file : %d", code);
quit = 1;
break;
}
// FIXME some FT samples (ex. 362) has bad length, 2 bytes too short
offset += len;
@ -848,30 +848,30 @@ void IMuseDigital::startSound(int sound) {
for (;;) {
tag = READ_BE_UINT32(ptr); ptr += 4;
switch(tag) {
case MKID_BE('FRMT'):
ptr += 12;
_channel[l]._bits = READ_BE_UINT32(ptr); ptr += 4;
_channel[l]._freq = READ_BE_UINT32(ptr); ptr += 4;
_channel[l]._channels = READ_BE_UINT32(ptr); ptr += 4;
case MKID_BE('FRMT'):
ptr += 12;
_channel[l]._bits = READ_BE_UINT32(ptr); ptr += 4;
_channel[l]._freq = READ_BE_UINT32(ptr); ptr += 4;
_channel[l]._channels = READ_BE_UINT32(ptr); ptr += 4;
break;
case MKID_BE('TEXT'):
size = READ_BE_UINT32(ptr); ptr += size + 4;
break;
case MKID_BE('TEXT'):
size = READ_BE_UINT32(ptr); ptr += size + 4;
case MKID_BE('REGN'):
ptr += 12;
break;
case MKID_BE('REGN'):
ptr += 12;
case MKID_BE('STOP'):
ptr += 4;
_channel[l]._offsetStop = READ_BE_UINT32(ptr); ptr += 4;
break;
case MKID_BE('STOP'):
ptr += 4;
_channel[l]._offsetStop = READ_BE_UINT32(ptr); ptr += 4;
case MKID_BE('JUMP'):
ptr += 20;
break;
case MKID_BE('JUMP'):
ptr += 20;
case MKID_BE('DATA'):
size = READ_BE_UINT32(ptr); ptr += 4;
break;
case MKID_BE('DATA'):
size = READ_BE_UINT32(ptr); ptr += 4;
break;
default:
error("IMuseDigital::startSound(%d) Unknown sfx header %c%c%c%c", sound, (byte)(tag >> 24), (byte)(tag >> 16), (byte)(tag >> 8), (byte)tag);
default:
error("IMuseDigital::startSound(%d) Unknown sfx header %c%c%c%c", sound, (byte)(tag >> 24), (byte)(tag >> 16), (byte)(tag >> 8), (byte)tag);
}
if (tag == MKID_BE('DATA')) break;
}

View file

@ -59,18 +59,18 @@ bool Scumm::getClass(int obj, int cls) const {
// Translate the new (V5) object classes to the old classes
// (for those which differ).
switch (cls) {
case kObjectClassUntouchable:
cls = 24;
break;
case kObjectClassPlayer:
cls = 23;
break;
case kObjectClassXFlip:
cls = 19;
break;
case kObjectClassYFlip:
cls = 18;
break;
case kObjectClassUntouchable:
cls = 24;
break;
case kObjectClassPlayer:
cls = 23;
break;
case kObjectClassXFlip:
cls = 19;
break;
case kObjectClassYFlip:
cls = 18;
break;
}
}
@ -86,18 +86,18 @@ void Scumm::putClass(int obj, int cls, bool set) {
// Translate the new (V5) object classes to the old classes
// (for those which differ).
switch (cls) {
case kObjectClassUntouchable:
cls = 24;
break;
case kObjectClassPlayer:
cls = 23;
break;
case kObjectClassXFlip:
cls = 19;
break;
case kObjectClassYFlip:
cls = 18;
break;
case kObjectClassUntouchable:
cls = 24;
break;
case kObjectClassPlayer:
cls = 23;
break;
case kObjectClassXFlip:
cls = 19;
break;
case kObjectClassYFlip:
cls = 18;
break;
}
}

View file

@ -907,7 +907,7 @@ void Scumm::runInputScript(int a, int cmd, int mode) {
if (_version <= 2) {
verbScript = 4;
_scummVars[VAR_CLICK_AREA] = a;
switch(a) {
switch (a) {
case 1: // Verb clicked
_scummVars[33] = cmd;
break;

View file

@ -692,36 +692,32 @@ void Scumm_v2::o2_actorSet() {
a = derefActor(act, "actorSet");
switch (_opcode) {
case 1: // Actor Sound
a->sound[0] = arg;
break;
case 1: // Actor Sound
a->sound[0] = arg;
break;
case 2: // Actor Set Color
if (_version == 1)
i = act;
else
i = fetchScriptByte();
case 2: // Actor Set Color
if (_version == 1)
i = act;
else
i = fetchScriptByte();
a->palette[i] = arg;
a->needRedraw = true;
break;
case 3: // Actor Name
loadPtrToResource(rtActorName, a->number, NULL);
break;
case 4: // Actor Costume
a->setActorCostume(arg);
break;
case 5: // Talk Color
if ((_gameId == GID_MANIAC) && (_version == 1))
v1_mm_actor_speech_color[act] = arg;
else
a->talkColor = arg;
break;
default:
warning("o2_actorSet: opcode %d not yet supported", _opcode);
a->palette[i] = arg;
a->needRedraw = true;
break;
case 3: // Actor Name
loadPtrToResource(rtActorName, a->number, NULL);
break;
case 4: // Actor Costume
a->setActorCostume(arg);
break;
case 5: // Talk Color
if ((_gameId == GID_MANIAC) && (_version == 1))
v1_mm_actor_speech_color[act] = arg;
else
a->talkColor = arg;
break;
default:
warning("o2_actorSet: opcode %d not yet supported", _opcode);
}
}

View file

@ -874,33 +874,31 @@ void Scumm_v5::saveVars() {
while ((_opcode = fetchScriptByte()) != 0) {
switch (_opcode & 0x1F) {
case 0x01: // write a range of variables
getResultPos();
a = _resultVarNumber;
getResultPos();
b = _resultVarNumber;
warning("stub saveVars: vars %d -> %d", a, b);
break;
case 0x02: // write a range of string variables
a = getVarOrDirectByte(0x80);
b = getVarOrDirectByte(0x40);
warning("stub saveVars: strings %d -> %d", a, b);
break;
case 0x03: // open file
a = resStrLen(_scriptPointer);
warning("stub saveVars to %s", _scriptPointer);
_scriptPointer += a + 1;
break;
case 0x04:
return;
break;
case 0x1F: // close file
warning("stub saveVars close file");
return;
break;
case 0x01: // write a range of variables
getResultPos();
a = _resultVarNumber;
getResultPos();
b = _resultVarNumber;
warning("stub saveVars: vars %d -> %d", a, b);
break;
case 0x02: // write a range of string variables
a = getVarOrDirectByte(0x80);
b = getVarOrDirectByte(0x40);
warning("stub saveVars: strings %d -> %d", a, b);
break;
case 0x03: // open file
a = resStrLen(_scriptPointer);
warning("stub saveVars to %s", _scriptPointer);
_scriptPointer += a + 1;
break;
case 0x04:
return;
break;
case 0x1F: // close file
warning("stub saveVars close file");
return;
break;
}
}
}
@ -910,34 +908,32 @@ void Scumm_v5::loadVars() {
hexdump(_scriptPointer, 64);
while ((_opcode = fetchScriptByte()) != 0) {
switch (_opcode & 0x1F) {
case 0x01: // read a range of variables
getResultPos();
a = _resultVarNumber;
getResultPos();
b = _resultVarNumber;
warning("stub loadVars: vars %d -> %d", a, b);
break;
case 0x02: // read a range of string variables
a = getVarOrDirectByte(0x80);
b = getVarOrDirectByte(0x40);
warning("stub loadVars: strings %d -> %d", a, b);
break;
case 0x03: // open file
a = resStrLen(_scriptPointer);
warning("stub loadVars from %s", _scriptPointer);
_scriptPointer += a + 1;
break;
case 0x04:
return;
break;
case 0x1F: // close file
warning("stub loadVars close file");
return;
break;
case 0x01: // read a range of variables
getResultPos();
a = _resultVarNumber;
getResultPos();
b = _resultVarNumber;
warning("stub loadVars: vars %d -> %d", a, b);
break;
case 0x02: // read a range of string variables
a = getVarOrDirectByte(0x80);
b = getVarOrDirectByte(0x40);
warning("stub loadVars: strings %d -> %d", a, b);
break;
case 0x03: // open file
a = resStrLen(_scriptPointer);
warning("stub loadVars from %s", _scriptPointer);
_scriptPointer += a + 1;
break;
case 0x04:
return;
break;
case 0x1F: // close file
warning("stub loadVars close file");
return;
break;
}
}
}
void Scumm_v5::o5_expression() {
@ -1142,37 +1138,37 @@ void Scumm_v5::o5_saveLoadGame() {
_opcode = a & 0xE0;
switch (_opcode) {
case 0x00: // num slots available
result = 100;
break;
case 0x20: // drive
// 0 = hard drive
// 1 = disk drive
case 0x00: // num slots available
result = 100;
break;
case 0x20: // drive
// 0 = hard drive
// 1 = disk drive
result = 0;
break;
case 0x40: // load
if (loadState(slot, _saveLoadCompatible))
result = 3; // sucess
else
result = 5; // failed to load
break;
case 0x80: // save
if (saveState(slot, _saveLoadCompatible))
result = 0;
break;
case 0x40: // load
if (loadState(slot, _saveLoadCompatible))
result = 3; // sucess
else
result = 5; // failed to load
break;
case 0x80: // save
if (saveState(slot, _saveLoadCompatible))
result = 0;
else
result = 2;
break;
case 0xC0: // test if save exists
bool avail_saves[100];
char filename[256];
SaveFileManager *mgr = _system->get_savefile_manager();
listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr);
makeSavegameName(filename, slot, false);
if (avail_saves[slot] && (mgr->open_savefile(filename, getSavePath(), false)))
result = 6; // save file exists
else
result = 7; // save file does not exist
break;
else
result = 2;
break;
case 0xC0: // test if save exists
bool avail_saves[100];
char filename[256];
SaveFileManager *mgr = _system->get_savefile_manager();
listSavegames(avail_saves, ARRAYSIZE(avail_saves), mgr);
makeSavegameName(filename, slot, false);
if (avail_saves[slot] && (mgr->open_savefile(filename, getSavePath(), false)))
result = 6; // save file exists
else
result = 7; // save file does not exist
break;
}
setResult(result);
}

View file

@ -3116,14 +3116,14 @@ void Scumm_v6::o6_unknownEA() {
eax = fetchScriptByte();
switch (eax) {
case 197:
unknownEA_func(5, esi, edi, fetchScriptWord(), eax);
break;
case 202:
unknownEA_func(3, esi, edi, fetchScriptWord(), eax);
break;
default:
break;
case 197:
unknownEA_func(5, esi, edi, fetchScriptWord(), eax);
break;
case 202:
unknownEA_func(3, esi, edi, fetchScriptWord(), eax);
break;
default:
break;
}
}

View file

@ -1401,19 +1401,19 @@ void Scumm_v8::o8_kernelGetFunctions() {
break;
case 0xD3: // getKeyState
switch(args[1]) {
// Stub out a few specific cases, just to make things less noisy
// Stub out a few specific cases, just to make things less noisy
// To actually implement this, we may need a new OSystem call to do
// asyncronous keyboard state checking...
case 0x14B: // Left Arrow depressed?
case 0x14D: // Right Arrow depressed?
case 0x09: // Tab depressed (fire in ship combat)
push(0);
break;
default:
warning("getKeyState(0x%X)", args[1]);
push(0);
break;
// To actually implement this, we may need a new OSystem call to do
// asyncronous keyboard state checking...
case 0x14B: // Left Arrow depressed?
case 0x14D: // Right Arrow depressed?
case 0x09: // Tab depressed (fire in ship combat)
push(0);
break;
default:
warning("getKeyState(0x%X)", args[1]);
push(0);
break;
}
break;
case 0xCE: // getRGBSlot

View file

@ -87,21 +87,21 @@ uint32 BaseChunk::getSize() const {
bool BaseChunk::seek(int32 delta, seek_type dir) {
switch(dir) {
case seek_cur:
_curPos += delta;
break;
case seek_start:
if (delta < 0)
error("invalid seek request");
case seek_cur:
_curPos += delta;
break;
case seek_start:
if (delta < 0)
error("invalid seek request");
_curPos = (uint32)delta;
break;
case seek_end:
if (delta > 0 || _size < (uint32)-delta)
error("invalid seek request");
_curPos = (uint32)delta;
break;
case seek_end:
if (delta > 0 || _size < (uint32)-delta)
error("invalid seek request");
_curPos = (uint32)(_size + delta);
break;
_curPos = (uint32)(_size + delta);
break;
}
if (_curPos > _size) {
error("invalid seek request : %d > %d (delta == %d)", _curPos, _size, delta);

View file

@ -141,20 +141,20 @@ bool ImuseChannel::handleMap(Chunk &map) {
while (!map.eof()) {
Chunk *sub = map.subBlock();
switch(sub->getType()) {
case TYPE_FRMT:
handleFormat(*sub);
break;
case TYPE_TEXT:
handleText(*sub);
break;
case TYPE_REGN:
handleRegion(*sub);
break;
case TYPE_STOP:
handleStop(*sub);
break;
default:
error("Unknown iMUS subChunk found : %s, %d", Chunk::ChunkString(sub->getType()), sub->getSize());
case TYPE_FRMT:
handleFormat(*sub);
break;
case TYPE_TEXT:
handleText(*sub);
break;
case TYPE_REGN:
handleRegion(*sub);
break;
case TYPE_STOP:
handleStop(*sub);
break;
default:
error("Unknown iMUS subChunk found : %s, %d", Chunk::ChunkString(sub->getType()), sub->getSize());
}
delete sub;
}
@ -213,36 +213,36 @@ bool ImuseChannel::handleSubTags(int32 &offset) {
uint32 size = READ_BE_UINT32(_tbuffer + offset + 4);
uint32 available_size = _tbufferSize - offset;
switch(type) {
case TYPE_MAP_:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleMap(c);
case TYPE_MAP_:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleMap(c);
}
break;
case TYPE_DATA:
_inData = true;
_dataSize = size;
offset += 8;
{
int reqsize = 1;
if (_channels == 2)
reqsize *= 2;
if (_bitsize == 16)
reqsize *= 2;
else if (_bitsize == 12) {
if (reqsize > 1)
reqsize = reqsize * 3 / 2;
else reqsize = 3;
}
break;
case TYPE_DATA:
_inData = true;
_dataSize = size;
offset += 8;
{
int reqsize = 1;
if (_channels == 2)
reqsize *= 2;
if (_bitsize == 16)
reqsize *= 2;
else if (_bitsize == 12) {
if (reqsize > 1)
reqsize = reqsize * 3 / 2;
else reqsize = 3;
}
if ((size % reqsize) != 0) {
debug(2, "Invalid iMUS sound data size : (%d %% %d) != 0, correcting...", size, reqsize);
size += 3 - (size % reqsize);
}
if ((size % reqsize) != 0) {
debug(2, "Invalid iMUS sound data size : (%d %% %d) != 0, correcting...", size, reqsize);
size += 3 - (size % reqsize);
}
return false;
default:
error("unknown Chunk in iMUS track : %s ", Chunk::ChunkString(type));
}
return false;
default:
error("unknown Chunk in iMUS track : %s ", Chunk::ChunkString(type));
}
offset += size + 8;
return true;

View file

@ -49,40 +49,37 @@ bool SaudChannel::handleSubTags(int32 &offset) {
uint32 available_size = _tbufferSize - offset;
switch(type) {
case TYPE_STRK:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleStrk(c);
}
else
return false;
break;
case TYPE_SMRK:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleSmrk(c);
}
else
return false;
break;
case TYPE_SHDR:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleShdr(c);
}
else
return false;
break;
case TYPE_SDAT:
_inData = true;
_dataSize = size;
offset += 8;
case TYPE_STRK:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleStrk(c);
} else
return false;
default:
error("unknown Chunk in SAUD track : %s ", Chunk::ChunkString(type));
break;
case TYPE_SMRK:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleSmrk(c);
} else
return false;
break;
case TYPE_SHDR:
_inData = false;
if (available_size >= (size + 8)) {
MemoryChunk c((byte *)_tbuffer + offset);
handleShdr(c);
} else
return false;
break;
case TYPE_SDAT:
_inData = true;
_dataSize = size;
offset += 8;
return false;
default:
error("unknown Chunk in SAUD track : %s ", Chunk::ChunkString(type));
}
offset += size + 8;
return true;

View file

@ -542,7 +542,7 @@ void SmushPlayer::handleTextResource(Chunk &b) {
}
while (str[0] == '^') {
switch(str[1]) {
switch (str[1]) {
case 'f':
{
int id = str[3] - '0';
@ -574,31 +574,31 @@ void SmushPlayer::handleTextResource(Chunk &b) {
// bit 2 - ??? 4
// bit 3 - wrap around 8
switch (flags & 9) {
case 0:
sf->drawStringAbsolute(str, _dst, _width, pos_x, pos_y);
break;
case 1:
sf->drawStringCentered(str, _dst, _width, _height, pos_x, MAX(pos_y, top));
break;
case 8:
// FIXME: Is 'right' the maximum line width here, just
// as it is in the next case? It's used several times
// in The Dig's intro, where 'left' and 'right' are
// always 0 and 321 respectively, and apparently we
// handle that correctly.
sf->drawStringWrap(str, _dst, _width, _height, pos_x, MAX(pos_y, top), left, right);
break;
case 9:
// In this case, the 'right' parameter is actually the
// maximum line width. This explains why it's sometimes
// smaller than 'left'.
//
// Note that in The Dig's "Spacetime Six" movie it's
// 621. I have no idea what that means.
sf->drawStringWrapCentered(str, _dst, _width, _height, pos_x, MAX(pos_y, top), left, MIN(left + right, _width));
break;
default:
warning("SmushPlayer::handleTextResource. Not handled flags: %d", flags);
case 0:
sf->drawStringAbsolute(str, _dst, _width, pos_x, pos_y);
break;
case 1:
sf->drawStringCentered(str, _dst, _width, _height, pos_x, MAX(pos_y, top));
break;
case 8:
// FIXME: Is 'right' the maximum line width here, just
// as it is in the next case? It's used several times
// in The Dig's intro, where 'left' and 'right' are
// always 0 and 321 respectively, and apparently we
// handle that correctly.
sf->drawStringWrap(str, _dst, _width, _height, pos_x, MAX(pos_y, top), left, right);
break;
case 9:
// In this case, the 'right' parameter is actually the
// maximum line width. This explains why it's sometimes
// smaller than 'left'.
//
// Note that in The Dig's "Spacetime Six" movie it's
// 621. I have no idea what that means.
sf->drawStringWrapCentered(str, _dst, _width, _height, pos_x, MAX(pos_y, top), left, MIN(left + right, _width));
break;
default:
warning("SmushPlayer::handleTextResource. Not handled flags: %d", flags);
}
if (string != NULL) {
@ -753,39 +753,39 @@ void SmushPlayer::handleFrame(Chunk &b) {
while (!b.eof()) {
Chunk *sub = b.subBlock();
if (sub->getSize() & 1) b.seek(1);
switch(sub->getType()) {
case TYPE_NPAL:
handleNewPalette(*sub);
break;
case TYPE_FOBJ:
handleFrameObject(*sub);
break;
case TYPE_PSAD:
handleSoundFrame(*sub);
break;
case TYPE_TRES:
handleTextResource(*sub);
break;
case TYPE_XPAL:
handleDeltaPalette(*sub);
break;
case TYPE_IACT:
handleImuseAction(*sub);
break;
case TYPE_STOR:
handleStore(*sub);
break;
case TYPE_FTCH:
handleFetch(*sub);
break;
case TYPE_SKIP:
handleSkip(*sub);
break;
case TYPE_TEXT:
handleTextResource(*sub);
break;
default:
error("Unknown frame subChunk found : %s, %d", Chunk::ChunkString(sub->getType()), sub->getSize());
switch (sub->getType()) {
case TYPE_NPAL:
handleNewPalette(*sub);
break;
case TYPE_FOBJ:
handleFrameObject(*sub);
break;
case TYPE_PSAD:
handleSoundFrame(*sub);
break;
case TYPE_TRES:
handleTextResource(*sub);
break;
case TYPE_XPAL:
handleDeltaPalette(*sub);
break;
case TYPE_IACT:
handleImuseAction(*sub);
break;
case TYPE_STOR:
handleStore(*sub);
break;
case TYPE_FTCH:
handleFetch(*sub);
break;
case TYPE_SKIP:
handleSkip(*sub);
break;
case TYPE_TEXT:
handleTextResource(*sub);
break;
default:
error("Unknown frame subChunk found : %s, %d", Chunk::ChunkString(sub->getType()), sub->getSize());
}
delete sub;
}
@ -854,12 +854,12 @@ void SmushPlayer::parseNextFrame() {
}
Chunk *sub = _base->subBlock();
switch(sub->getType()) {
case TYPE_FRME:
handleFrame(*sub);
break;
default:
error("Unknown Chunk found : %d, %d", sub->getType(), sub->getSize());
switch (sub->getType()) {
case TYPE_FRME:
handleFrame(*sub);
break;
default:
error("Unknown Chunk found : %d, %d", sub->getType(), sub->getSize());
}
delete sub;
}

View file

@ -347,63 +347,65 @@ void Sound::playSound(int soundID) {
rate = 11025;
int type = *(ptr + 0x0D);
int numInstruments;
switch(type) {
case 0: { // Sound effect
int numInstruments = *(ptr + 0x14);
ptr += 0x16;
size -= 0x16;
while (numInstruments--) {
int waveSize = READ_LE_UINT32(ptr + 0x0C);
int loopStart = READ_LE_UINT32(ptr + 0x10);
int loopEnd = READ_LE_UINT32(ptr + 0x14);
// it's not exactly * 10, maybe it's not even linear, but * 10 sounds ok.
rate = READ_LE_UINT32(ptr + 0x18) * 10;
case 0: // Sound effect
numInstruments = *(ptr + 0x14);
ptr += 0x16;
size -= 0x16;
while (numInstruments--) {
int waveSize = READ_LE_UINT32(ptr + 0x0C);
int loopStart = READ_LE_UINT32(ptr + 0x10);
int loopEnd = READ_LE_UINT32(ptr + 0x14);
// it's not exactly * 10, maybe it's not even linear, but * 10 sounds ok.
rate = READ_LE_UINT32(ptr + 0x18) * 10;
ptr += 0x20;
size -= 0x20;
if (size < waveSize) {
warning("Wrong wave size in sound #%i: %i", soundID, waveSize);
waveSize = size;
}
sound = (char *)malloc(waveSize);
for (int x = 0; x < waveSize; x++) {
int bit = *ptr++;
if (bit < 0x80)
sound[x] = 0x7F - bit;
else
sound[x] = bit;
}
size -= waveSize;
if (loopEnd > 0)
flags |= SoundMixer::FLAG_LOOP;
_scumm->_mixer->playRaw(NULL, sound, waveSize, rate, flags, soundID, 255, 0, loopStart, loopEnd);
ptr += 0x20;
size -= 0x20;
if (size < waveSize) {
warning("Wrong wave size in sound #%i: %i", soundID, waveSize);
waveSize = size;
}
break;
}
sound = (char *)malloc(waveSize);
for (int x = 0; x < waveSize; x++) {
int bit = *ptr++;
if (bit < 0x80)
sound[x] = 0x7F - bit;
else
sound[x] = bit;
}
size -= waveSize;
case 1: { // Music (Euphony format)
if (_scumm->_musicEngine)
_scumm->_musicEngine->startSound (soundID);
break;
if (loopEnd > 0)
flags |= SoundMixer::FLAG_LOOP;
_scumm->_mixer->playRaw(NULL, sound, waveSize, rate, flags, soundID, 255, 0, loopStart, loopEnd);
}
case 2: { // CD track resource
ptr += 0x16;
break;
case 1:
// Music (Euphony format)
if (_scumm->_musicEngine)
_scumm->_musicEngine->startSound (soundID);
break;
case 2: // CD track resource
ptr += 0x16;
if (soundID == _currentCDSound)
if (pollCD() == 1)
return;
{
int track = ptr[0];
int loops = ptr[1];
int start = (ptr[2] * 60 + ptr[3]) * 75 + ptr[4];
int end = (ptr[5] * 60 + ptr[6]) * 75 + ptr[7];
if (soundID == _currentCDSound)
if (pollCD() == 1)
return;
playCDTrack(track, loops == 0xff ? -1 : loops, start, end - start);
_currentCDSound = soundID;
break;
}
}
_currentCDSound = soundID;
break;
}
}
else if ((_scumm->_gameId == GID_LOOM) && (_scumm->_features & GF_MACINTOSH)) {
@ -1277,30 +1279,28 @@ void Sound::playBundleSound(char *sound, PlayingSoundHandle *handle) {
while (tag != MKID_BE('DATA')) {
tag = READ_BE_UINT32(ptr); ptr += 4;
switch(tag) {
case MKID_BE('FRMT'):
ptr += 12;
bits = READ_BE_UINT32(ptr); ptr += 4;
rate = READ_BE_UINT32(ptr); ptr += 4;
channels = READ_BE_UINT32(ptr); ptr += 4;
case MKID_BE('FRMT'):
ptr += 12;
bits = READ_BE_UINT32(ptr); ptr += 4;
rate = READ_BE_UINT32(ptr); ptr += 4;
channels = READ_BE_UINT32(ptr); ptr += 4;
break;
case MKID_BE('TEXT'):
case MKID_BE('REGN'):
case MKID_BE('STOP'):
case MKID_BE('JUMP'):
case MKID_BE('SYNC'):
size = READ_BE_UINT32(ptr); ptr += size + 4;
case MKID_BE('TEXT'):
case MKID_BE('REGN'):
case MKID_BE('STOP'):
case MKID_BE('JUMP'):
case MKID_BE('SYNC'):
size = READ_BE_UINT32(ptr); ptr += size + 4;
break;
case MKID_BE('DATA'):
size = READ_BE_UINT32(ptr); ptr += 4;
case MKID_BE('DATA'):
size = READ_BE_UINT32(ptr); ptr += 4;
break;
default:
error("Unknown sound header %c%c%c%c",
(byte)(tag >> 24),
(byte)(tag >> 16),
(byte)(tag >> 8),
(byte)tag);
default:
error("Unknown sound header %c%c%c%c",
(byte)(tag >> 24),
(byte)(tag >> 16),
(byte)(tag >> 8),
(byte)tag);
}
}

View file

@ -49,7 +49,7 @@ static const byte mt32_to_gm[128] = {
MidiPlayer::MidiPlayer (OSystem *system) {
MidiPlayer::MidiPlayer(OSystem *system) {
// Since initialize() is called every time the music changes,
// this is where we'll initialize stuff that must persist
// between songs.
@ -72,10 +72,10 @@ MidiPlayer::MidiPlayer (OSystem *system) {
}
MidiPlayer::~MidiPlayer() {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
close();
_system->unlock_mutex (_mutex);
_system->delete_mutex (_mutex);
_system->unlock_mutex(_mutex);
_system->delete_mutex(_mutex);
}
int MidiPlayer::open() {
@ -86,7 +86,7 @@ int MidiPlayer::open() {
int ret = _driver->open();
if (ret)
return ret;
_driver->setTimerCallback (this, &onTimer);
_driver->setTimerCallback(this, &onTimer);
return 0;
}
@ -100,7 +100,7 @@ void MidiPlayer::close() {
// _system->unlock_mutex (_mutex);
}
void MidiPlayer::send (uint32 b) {
void MidiPlayer::send(uint32 b) {
if (!_current)
return;
@ -108,22 +108,22 @@ void MidiPlayer::send (uint32 b) {
if ((b & 0xFFF0) == 0x07B0) {
// Adjust volume changes by master volume.
byte volume = (byte) ((b >> 16) & 0x7F);
_current->volume [channel] = volume;
_current->volume[channel] = volume;
volume = volume * _masterVolume / 255;
b = (b & 0xFF00FFFF) | (volume << 16);
} else if ((b & 0xF0) == 0xC0 && _map_mt32_to_gm) {
b = (b & 0xFFFF00FF) | (mt32_to_gm [(b >> 8) & 0xFF] << 8);
b = (b & 0xFFFF00FF) | (mt32_to_gm[(b >> 8) & 0xFF] << 8);
} else if ((b & 0xFFF0) == 0x007BB0) {
// Only respond to an All Notes Off if this channel
// has already been allocated.
if (!_current->channel [b & 0x0F])
if (!_current->channel[b & 0x0F])
return;
}
if (!_current->channel [channel])
if (!_current->channel[channel])
_current->channel[channel] = (channel == 9) ? _driver->getPercussionChannel() : _driver->allocateChannel();
if (_current->channel [channel])
_current->channel[channel]->send (b);
if (_current->channel[channel])
_current->channel[channel]->send(b);
}
void MidiPlayer::metaEvent (byte type, byte *data, uint16 length) {
@ -131,9 +131,9 @@ void MidiPlayer::metaEvent (byte type, byte *data, uint16 length) {
if (!_current || type != 0x2F) {
return;
} else if (_current == &_sfx) {
clearConstructs (_sfx);
clearConstructs(_sfx);
} else if (_loopTrack) {
_current->parser->jumpToTick (0);
_current->parser->jumpToTick(0);
} else if (_queuedTrack != 255) {
_currentTrack = 255;
byte destination = _queuedTrack;
@ -145,9 +145,9 @@ void MidiPlayer::metaEvent (byte type, byte *data, uint16 length) {
// Have to unlock it before calling jump()
// (which locks it itself), and then relock it
// upon returning.
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
startTrack (destination);
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
} else {
stop();
}
@ -155,7 +155,7 @@ void MidiPlayer::metaEvent (byte type, byte *data, uint16 length) {
void MidiPlayer::onTimer (void *data) {
MidiPlayer *p = (MidiPlayer *) data;
p->_system->lock_mutex (p->_mutex);
p->_system->lock_mutex(p->_mutex);
if (!p->_paused) {
if (p->_music.parser && p->_currentTrack != 255) {
p->_current = &p->_music;
@ -167,7 +167,7 @@ void MidiPlayer::onTimer (void *data) {
p->_sfx.parser->onTimer();
}
p->_current = 0;
p->_system->unlock_mutex (p->_mutex);
p->_system->unlock_mutex(p->_mutex);
}
void MidiPlayer::startTrack (int track) {
@ -178,7 +178,7 @@ void MidiPlayer::startTrack (int track) {
if (track >= _music.num_songs)
return;
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
if (_music.parser) {
_current = &_music;
@ -200,29 +200,29 @@ void MidiPlayer::startTrack (int track) {
_currentTrack = (byte) track;
_music.parser = parser; // That plugs the power cord into the wall
} else if (_music.parser) {
_system->lock_mutex (_mutex);
if (!_music.parser->setTrack (track)) {
_system->unlock_mutex (_mutex);
_system->lock_mutex(_mutex);
if (!_music.parser->setTrack(track)) {
_system->unlock_mutex(_mutex);
return;
}
_currentTrack = (byte) track;
_current = &_music;
_music.parser->jumpToTick (0);
_music.parser->jumpToTick(0);
_current = 0;
}
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::stop() {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
if (_music.parser) {
_current = &_music;
_music.parser->jumpToTick(0);
}
_current = 0;
_currentTrack = 255;
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::pause (bool b) {
@ -230,14 +230,14 @@ void MidiPlayer::pause (bool b) {
return;
_paused = b;
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
for (int i = 0; i < 16; ++i) {
if (_music.channel[i])
_music.channel[i]->volume (_paused ? 0 : (_music.volume[i] * _masterVolume / 255));
if (_sfx.channel[i])
_sfx.channel[i]->volume (_paused ? 0 : (_sfx.volume[i] * _masterVolume / 255));
}
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::set_volume (int volume) {
@ -255,9 +255,9 @@ void MidiPlayer::set_volume (int volume) {
if (_driver && !_paused) {
for (int i = 0; i < 16; ++i) {
if (_music.channel[i])
_music.channel[i]->volume (_music.volume[i] * _masterVolume / 255);
_music.channel[i]->volume(_music.volume[i] * _masterVolume / 255);
if (_sfx.channel[i])
_sfx.channel[i]->volume (_sfx.volume[i] * _masterVolume / 255);
_sfx.channel[i]->volume(_sfx.volume[i] * _masterVolume / 255);
}
}
_system->unlock_mutex (_mutex);
@ -271,45 +271,45 @@ void MidiPlayer::set_driver(MidiDriver *md) {
}
void MidiPlayer::mapMT32toGM (bool map) {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
_map_mt32_to_gm = map;
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::setLoop (bool loop) {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
_loopTrack = loop;
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::queueTrack (int track, bool loop) {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
if (_currentTrack == 255) {
_system->unlock_mutex (_mutex);
setLoop (loop);
startTrack (track);
_system->unlock_mutex(_mutex);
setLoop(loop);
startTrack(track);
} else {
_queuedTrack = track;
_loopQueuedTrack = loop;
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
}
void MidiPlayer::clearConstructs() {
clearConstructs (_music);
clearConstructs (_sfx);
clearConstructs(_music);
clearConstructs(_sfx);
}
void MidiPlayer::clearConstructs (MusicInfo &info) {
void MidiPlayer::clearConstructs(MusicInfo &info) {
int i;
if (info.num_songs > 0) {
for (i = 0; i < info.num_songs; ++i)
free (info.songs [i]);
free (info.songs[i]);
info.num_songs = 0;
}
if (info.data) {
free (info.data);
free(info.data);
info.data = 0;
} // end if
@ -346,15 +346,15 @@ static int simon1_gmf_size[] = {
};
void MidiPlayer::loadSMF (File *in, int song, bool sfx) {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
MusicInfo *p = sfx ? &_sfx : &_music;
clearConstructs (*p);
uint32 startpos = in->pos();
byte header[4];
in->read (header, 4);
in->read(header, 4);
bool isGMF = !memcmp (header, "GMF\x1", 4);
in->seek (startpos, SEEK_SET);
in->seek(startpos, SEEK_SET);
uint32 size = in->size() - in->pos();
if (isGMF) {
@ -363,29 +363,29 @@ void MidiPlayer::loadSMF (File *in, int song, bool sfx) {
// but each one is referenced by a pointer at the
// beginning of the file. Those pointers can be used
// to determine file size.
in->seek (0, SEEK_SET);
in->seek(0, SEEK_SET);
uint16 value = in->readUint16LE() >> 2; // Number of resources
if (song != value - 1) {
in->seek (song * 2 + 2, SEEK_SET);
in->seek(song * 2 + 2, SEEK_SET);
value = in->readUint16LE();
size = value - startpos;
}
in->seek (startpos, SEEK_SET);
in->seek(startpos, SEEK_SET);
} else if (size >= 64000) {
// For GMF resources not in separate
// files, we're going to have to use
// hardcoded size tables.
size = simon1_gmf_size [song];
size = simon1_gmf_size[song];
}
}
// When allocating space, add 4 bytes in case
// this is a GMF and we have to tack on our own
// End of Track event.
p->data = (byte *) calloc (size + 4, 1);
in->read (p->data, size);
p->data = (byte *) calloc(size + 4, 1);
in->read(p->data, size);
if (!memcmp (p->data, "GMF\x1", 4)) {
if (!memcmp(p->data, "GMF\x1", 4)) {
// BTW, here's what we know about the GMF header,
// the 7 bytes preceding the actual MIDI events.
// 3 BYTES: 'GMF'
@ -394,15 +394,15 @@ void MidiPlayer::loadSMF (File *in, int song, bool sfx) {
// 1 BYTE : Ranges from 0x02 to 0x08 (always 0x02 for SFX, though)
// 1 BYTE : Loop control. 0 = no loop, 1 = loop
if (!sfx)
setLoop (p->data[6] != 0);
setLoop(p->data[6] != 0);
}
MidiParser *parser = MidiParser::createParser_SMF();
parser->property (MidiParser::mpMalformedPitchBends, 1);
parser->setMidiDriver (this);
parser->setTimerRate (_driver->getBaseTempo());
if (!parser->loadMusic (p->data, size)) {
parser->property(MidiParser::mpMalformedPitchBends, 1);
parser->setMidiDriver(this);
parser->setTimerRate(_driver->getBaseTempo());
if (!parser->loadMusic(p->data, size)) {
printf ("Error reading track!\n");
delete parser;
parser = 0;
@ -413,7 +413,7 @@ void MidiPlayer::loadSMF (File *in, int song, bool sfx) {
resetVolumeTable();
}
p->parser = parser; // That plugs the power cord into the wall
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::loadMultipleSMF (File *in, bool sfx) {
@ -426,14 +426,14 @@ void MidiPlayer::loadMultipleSMF (File *in, bool sfx) {
// We need to load ALL the songs and then
// treat them as separate tracks -- for the
// purpose of jumps, anyway.
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
MusicInfo *p = sfx ? &_sfx : &_music;
clearConstructs (*p);
clearConstructs(*p);
p->num_songs = in->readByte();
if (p->num_songs > 16) {
printf ("playMultipleSMF: %d is too many songs to keep track of!\n", (int) p->num_songs);
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
return;
}
@ -443,27 +443,27 @@ void MidiPlayer::loadMultipleSMF (File *in, bool sfx) {
uint32 pos = in->pos();
// Make sure there's a MThd
in->read (buf, 4);
in->read(buf, 4);
if (memcmp (buf, "MThd", 4)) {
printf ("Expected MThd but found '%c%c%c%c' instead!\n", buf[0], buf[1], buf[2], buf[3]);
_system->unlock_mutex (_mutex);
return;
}
in->seek (in->readUint32BE() + in->pos(), SEEK_SET);
in->seek(in->readUint32BE() + in->pos(), SEEK_SET);
// Now skip all the MTrk blocks
while (true) {
in->read (buf, 4);
if (memcmp (buf, "MTrk", 4))
if (memcmp(buf, "MTrk", 4))
break;
in->seek (in->readUint32BE() + in->pos(), SEEK_SET);
in->seek(in->readUint32BE() + in->pos(), SEEK_SET);
}
uint32 pos2 = in->pos() - 4;
uint32 size = pos2 - pos;
p->songs[i] = (byte *) calloc (size, 1);
in->seek (pos, SEEK_SET);
in->read (p->songs[i], size);
p->songs[i] = (byte *) calloc(size, 1);
in->seek(pos, SEEK_SET);
in->read(p->songs[i], size);
p->song_sizes[i] = size;
}
@ -471,47 +471,47 @@ void MidiPlayer::loadMultipleSMF (File *in, bool sfx) {
_currentTrack = 255;
resetVolumeTable();
}
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::loadXMIDI (File *in, bool sfx) {
_system->lock_mutex (_mutex);
void MidiPlayer::loadXMIDI(File *in, bool sfx) {
_system->lock_mutex(_mutex);
MusicInfo *p = sfx ? &_sfx : &_music;
clearConstructs (*p);
clearConstructs(*p);
char buf[4];
uint32 pos = in->pos();
uint32 size = 4;
in->read (buf, 4);
if (!memcmp (buf, "FORM", 4)) {
in->read(buf, 4);
if (!memcmp(buf, "FORM", 4)) {
int i;
for (i = 0; i < 16; ++i) {
if (!memcmp (buf, "CAT ", 4))
if (!memcmp(buf, "CAT ", 4))
break;
size += 2;
memcpy (buf, &buf[2], 2);
in->read (&buf[2], 2);
memcpy(buf, &buf[2], 2);
in->read(&buf[2], 2);
}
if (memcmp (buf, "CAT ", 4)) {
printf ("ERROR! Could not find 'CAT ' tag to determine resource size!\n");
if (memcmp(buf, "CAT ", 4)) {
warning("Could not find 'CAT ' tag to determine resource size!");
_system->unlock_mutex (_mutex);
return;
}
size += 4 + in->readUint32BE();
in->seek (pos, 0);
p->data = (byte *) calloc (size, 1);
in->read (p->data, size);
in->seek(pos, 0);
p->data = (byte *) calloc(size, 1);
in->read(p->data, size);
} else {
printf ("ERROR! Expected 'FORM' tag but found '%c%c%c%c' instead!\n", buf[0], buf[1], buf[2], buf[3]);
_system->unlock_mutex (_mutex);
warning("Expected 'FORM' tag but found '%c%c%c%c' instead!", buf[0], buf[1], buf[2], buf[3]);
_system->unlock_mutex(_mutex);
return;
}
MidiParser *parser = MidiParser::createParser_XMIDI();
parser->setMidiDriver (this);
parser->setTimerRate (_driver->getBaseTempo());
if (!parser->loadMusic (p->data, size)) {
printf ("Error reading track!\n");
parser->setMidiDriver(this);
parser->setTimerRate(_driver->getBaseTempo());
if (!parser->loadMusic(p->data, size)) {
warning("Error reading track!");
delete parser;
parser = 0;
}
@ -521,29 +521,29 @@ void MidiPlayer::loadXMIDI (File *in, bool sfx) {
resetVolumeTable();
}
p->parser = parser; // That plugs the power cord into the wall
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}
void MidiPlayer::loadS1D (File *in, bool sfx) {
_system->lock_mutex (_mutex);
_system->lock_mutex(_mutex);
MusicInfo *p = sfx ? &_sfx : &_music;
clearConstructs (*p);
clearConstructs(*p);
uint16 size = in->readUint16LE();
if (size != in->size() - 2) {
printf ("ERROR! Size mismatch in simon1demo MUS file (%ld versus reported %d)\n", (long) in->size() - 2, (int) size);
_system->unlock_mutex (_mutex);
warning("Size mismatch in simon1demo MUS file (%ld versus reported %d)", (long) in->size() - 2, (int) size);
_system->unlock_mutex(_mutex);
return;
}
p->data = (byte *) calloc (size, 1);
in->read (p->data, size);
p->data = (byte *) calloc(size, 1);
in->read(p->data, size);
MidiParser *parser = MidiParser_createS1D();
parser->setMidiDriver (this);
parser->setTimerRate (_driver->getBaseTempo());
if (!parser->loadMusic (p->data, size)) {
printf ("Error reading track!\n");
parser->setMidiDriver(this);
parser->setTimerRate(_driver->getBaseTempo());
if (!parser->loadMusic(p->data, size)) {
warning("Error reading track!");
delete parser;
parser = 0;
}
@ -553,5 +553,5 @@ void MidiPlayer::loadS1D (File *in, bool sfx) {
resetVolumeTable();
}
p->parser = parser; // That plugs the power cord into the wall
_system->unlock_mutex (_mutex);
_system->unlock_mutex(_mutex);
}

View file

@ -40,12 +40,12 @@ protected:
protected:
void parseNextEvent (EventInfo &info);
void resetTracking();
uint32 readVLQ2 (byte * &data);
uint32 readVLQ2(byte * &data);
public:
MidiParser_S1D() : _data(0), _no_delta(false) {}
bool loadMusic (byte *data, uint32 size);
bool loadMusic(byte *data, uint32 size);
};
@ -64,7 +64,7 @@ public:
// The VLQs for simon1demo seem to be
// in Little Endian format.
uint32 MidiParser_S1D::readVLQ2 (byte * &data) {
uint32 MidiParser_S1D::readVLQ2(byte * &data) {
byte str;
uint32 value = 0;
int i;
@ -79,9 +79,9 @@ uint32 MidiParser_S1D::readVLQ2 (byte * &data) {
return value;
}
void MidiParser_S1D::parseNextEvent (EventInfo &info) {
void MidiParser_S1D::parseNextEvent(EventInfo &info) {
info.start = _position._play_pos;
info.delta = _no_delta ? 0 : readVLQ2 (_position._play_pos);
info.delta = _no_delta ? 0 : readVLQ2(_position._play_pos);
_no_delta = false;
info.event = *(_position._play_pos++);
@ -127,7 +127,7 @@ void MidiParser_S1D::parseNextEvent (EventInfo &info) {
}
}
bool MidiParser_S1D::loadMusic (byte *data, uint32 size) {
bool MidiParser_S1D::loadMusic(byte *data, uint32 size) {
unloadMusic();
byte *pos = data;
@ -149,8 +149,8 @@ bool MidiParser_S1D::loadMusic (byte *data, uint32 size) {
// will persist beyond this call, i.e. we do NOT
// copy the data to our own buffer. Take warning....
resetTracking();
setTempo (500000);
setTrack (0);
setTempo(500000);
setTrack(0);
return true;
}

View file

@ -353,7 +353,6 @@ byte *SimonEngine::readSingleOpcode(File *in, byte *ptr) {
*ptr++ = val >> 8;
*ptr++ = val & 255;
break;
default:
error("Bad cmd table entry %c", l);
}

View file

@ -3387,73 +3387,63 @@ bool SimonEngine::has_vgastruct_with_id(uint16 id, uint16 file) {
void SimonEngine::processSpecialKeys() {
switch (_key_pressed) {
case 27: // escape
case 27: // escape
_exit_cutscene = true;
break;
case 59: // F1
vc_write_var(5, 50);
vc_write_var(86, 0);
break;
case 60: // F2
vc_write_var(5, 75);
vc_write_var(86, 1);
break;
case 61: // F3
vc_write_var(5, 125);
vc_write_var(86, 2);
break;
case 63: // F5
if (_game & GF_SIMON2)
_exit_cutscene = true;
break;
case 59: // F1
vc_write_var(5, 50);
vc_write_var(86, 0);
break;
case 60: // F2
vc_write_var(5, 75);
vc_write_var(86, 1);
break;
case 61: // F3
vc_write_var(5, 125);
vc_write_var(86, 2);
break;
case 63: // F5
if (_game & GF_SIMON2)
_exit_cutscene = true;
break;
case 't':
if (_game & GF_SIMON2 && _game & GF_TALKIE || _game & GF_TALKIE && _language > 1)
_subtitles ^= 1;
break;
case '+':
midi.set_volume(midi.get_volume() + 16);
break;
case '-':
midi.set_volume(midi.get_volume() - 16);
break;
case 'm':
midi.pause(_music_paused ^= 1);
break;
case 's':
if (_game == GAME_SIMON1DOS)
midi._enable_sfx ^= 1;
else
_sound->effectsPause(_effects_paused ^= 1);
break;
case 'b':
_sound->ambientPause(_ambient_paused ^= 1);
break;
case 'r':
if (_debugMode)
_start_mainscript ^= 1;
break;
case 'o':
if (_debugMode)
_continous_mainscript ^= 1;
break;
case 'v':
if (_debugMode)
_continous_vgascript ^= 1;
break;
case 'i':
if (_debugMode)
_draw_images_debug ^= 1;
break;
break;
case 't':
if (_game & GF_SIMON2 && _game & GF_TALKIE || _game & GF_TALKIE && _language > 1)
_subtitles ^= 1;
break;
case '+':
midi.set_volume(midi.get_volume() + 16);
break;
case '-':
midi.set_volume(midi.get_volume() - 16);
break;
case 'm':
midi.pause(_music_paused ^= 1);
break;
case 's':
if (_game == GAME_SIMON1DOS)
midi._enable_sfx ^= 1;
else
_sound->effectsPause(_effects_paused ^= 1);
break;
case 'b':
_sound->ambientPause(_ambient_paused ^= 1);
break;
case 'r':
if (_debugMode)
_start_mainscript ^= 1;
break;
case 'o':
if (_debugMode)
_continous_mainscript ^= 1;
break;
case 'v':
if (_debugMode)
_continous_vgascript ^= 1;
break;
case 'i':
if (_debugMode)
_draw_images_debug ^= 1;
break;
}
_key_pressed = 0;
@ -4565,45 +4555,40 @@ void SimonEngine::delay(uint amount) {
while (_system->poll_event(&event)) {
switch (event.event_code) {
case OSystem::EVENT_KEYDOWN:
if (event.kbd.flags==OSystem::KBD_CTRL) {
if (event.kbd.keycode == 'f')
_fast_mode ^= 1;
}
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_key_pressed = 8;
else
_key_pressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
break;
case OSystem::EVENT_LBUTTONDOWN:
_left_button_down++;
case OSystem::EVENT_KEYDOWN:
if (event.kbd.flags==OSystem::KBD_CTRL) {
if (event.kbd.keycode == 'f')
_fast_mode ^= 1;
}
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_key_pressed = 8;
else
_key_pressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
break;
case OSystem::EVENT_LBUTTONDOWN:
_left_button_down++;
#ifdef _WIN32_WCE
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
#endif
break;
case OSystem::EVENT_RBUTTONDOWN:
if (_game & GF_SIMON2)
_skip_speech = true;
else
_exit_cutscene = true;
break;
case OSystem::EVENT_QUIT:
shutdown();
return;
break;
default:
break;
break;
case OSystem::EVENT_RBUTTONDOWN:
if (_game & GF_SIMON2)
_skip_speech = true;
else
_exit_cutscene = true;
break;
case OSystem::EVENT_QUIT:
shutdown();
return;
break;
default:
break;
}
}

View file

@ -1838,8 +1838,8 @@ void SimonEngine::vc_69_play_track() {
// specifying a non-valid track number (999 or -1)
// as a means of stopping what music is currently
// playing.
midi.setLoop (loop != 0);
midi.startTrack (track);
midi.setLoop(loop != 0);
midi.startTrack(track);
}
void SimonEngine::vc_70_queue_music() {
@ -1853,9 +1853,9 @@ void SimonEngine::vc_70_queue_music() {
// track and, if not, whether to switch to
// a different track upon completion.
if (track != 0xFFFF && track != 999)
midi.queueTrack (track, loop != 0);
midi.queueTrack(track, loop != 0);
else
midi.setLoop (loop != 0);
midi.setLoop(loop != 0);
}
void SimonEngine::vc_71_check_music_queue() {

View file

@ -58,27 +58,27 @@ namespace SkyCompact {
uint16 *getGrafixPtr(Compact *cpt) {
uint16 *buf;
switch (cpt->grafixProg.ptrType) {
case PTR_NULL:
return NULL;
case AUTOROUTE:
if (!cpt->extCompact)
error("::getGrafixPtr: request for AR pointer, extCompact is NULL, though.");
return (cpt->extCompact->animScratch + cpt->grafixProg.pos);
case COMPACT:
buf = (uint16*)SkyState::fetchCompact(cpt->grafixProg.ptrTarget);
if (buf == NULL)
error("::getGrafixPtr: request for cpt %d pointer. It's NULL.", cpt->grafixProg.ptrTarget);
return (buf + cpt->grafixProg.pos);
case COMPACTELEM:
buf = *(uint16 **)SkyCompact::getCompactElem(cpt, cpt->grafixProg.ptrTarget);
if (buf == NULL)
error("::getGrafixPtr: request for elem ptr %d. It's NULL.", cpt->grafixProg.ptrTarget);
return buf + cpt->grafixProg.pos;
case TALKTABLE:
buf = (uint16 *)SkyTalkAnims::animTalkTablePtr[cpt->grafixProg.ptrTarget];
return buf + cpt->grafixProg.pos;
default:
error("::getGrafixPtr: unknown grafixProg type for Compact cpt");
case PTR_NULL:
return NULL;
case AUTOROUTE:
if (!cpt->extCompact)
error("::getGrafixPtr: request for AR pointer, extCompact is NULL, though.");
return (cpt->extCompact->animScratch + cpt->grafixProg.pos);
case COMPACT:
buf = (uint16*)SkyState::fetchCompact(cpt->grafixProg.ptrTarget);
if (buf == NULL)
error("::getGrafixPtr: request for cpt %d pointer. It's NULL.", cpt->grafixProg.ptrTarget);
return (buf + cpt->grafixProg.pos);
case COMPACTELEM:
buf = *(uint16 **)SkyCompact::getCompactElem(cpt, cpt->grafixProg.ptrTarget);
if (buf == NULL)
error("::getGrafixPtr: request for elem ptr %d. It's NULL.", cpt->grafixProg.ptrTarget);
return buf + cpt->grafixProg.pos;
case TALKTABLE:
buf = (uint16 *)SkyTalkAnims::animTalkTablePtr[cpt->grafixProg.ptrTarget];
return buf + cpt->grafixProg.pos;
default:
error("::getGrafixPtr: unknown grafixProg type for Compact cpt");
}
return NULL; // never reached
}

View file

@ -502,96 +502,77 @@ uint16 SkyControl::handleClick(SkyConResource *pButton) {
char quitDos[] = "Quit to DOS?";
switch(pButton->_onClick) {
case DO_NOTHING:
case DO_NOTHING:
return 0;
case REST_GAME_PANEL:
if (!loadSaveAllowed())
return CANCEL_PRESSED; // can't save/restore while choosing
animClick(pButton);
return saveRestorePanel(false); // texts can't be edited
case SAVE_GAME_PANEL:
if (!loadSaveAllowed())
return CANCEL_PRESSED; // can't save/restore while choosing
animClick(pButton);
return saveRestorePanel(true); // texts can be edited
case SAVE_A_GAME:
animClick(pButton);
return saveGameToFile();
case RESTORE_A_GAME:
animClick(pButton);
return restoreGameFromFile(false);
case RESTORE_AUTO:
animClick(pButton);
return restoreGameFromFile(true);
case SP_CANCEL:
animClick(pButton);
return CANCEL_PRESSED;
case SHIFT_DOWN_FAST:
animClick(pButton);
return shiftDown(FAST);
case SHIFT_DOWN_SLOW:
animClick(pButton);
return shiftDown(SLOW);
case SHIFT_UP_FAST:
animClick(pButton);
return shiftUp(FAST);
case SHIFT_UP_SLOW:
animClick(pButton);
return shiftUp(SLOW);
case SPEED_SLIDE:
_mouseClicked = true;
return doSpeedSlide();
case MUSIC_SLIDE:
_mouseClicked = true;
return doMusicSlide();
case TOGGLE_FX:
return toggleFx(pButton);
case TOGGLE_MS:
animClick(pButton);
toggleMusic();
return TOGGLED;
case TOGGLE_TEXT:
animClick(pButton);
return toggleText();
case EXIT:
animClick(pButton);
return QUIT_PANEL;
case RESTART:
animClick(pButton);
if (getYesNo(NULL)) {
restartGame();
return GAME_RESTORED;
} else
return 0;
case REST_GAME_PANEL:
if (!loadSaveAllowed())
return CANCEL_PRESSED; // can't save/restore while choosing
animClick(pButton);
return saveRestorePanel(false); // texts can't be edited
case SAVE_GAME_PANEL:
if (!loadSaveAllowed())
return CANCEL_PRESSED; // can't save/restore while choosing
animClick(pButton);
return saveRestorePanel(true); // texts can be edited
case SAVE_A_GAME:
animClick(pButton);
return saveGameToFile();
case RESTORE_A_GAME:
animClick(pButton);
return restoreGameFromFile(false);
case RESTORE_AUTO:
animClick(pButton);
return restoreGameFromFile(true);
case SP_CANCEL:
animClick(pButton);
return CANCEL_PRESSED;
case SHIFT_DOWN_FAST:
animClick(pButton);
return shiftDown(FAST);
case SHIFT_DOWN_SLOW:
animClick(pButton);
return shiftDown(SLOW);
case SHIFT_UP_FAST:
animClick(pButton);
return shiftUp(FAST);
case SHIFT_UP_SLOW:
animClick(pButton);
return shiftUp(SLOW);
case SPEED_SLIDE:
_mouseClicked = true;
return doSpeedSlide();
case MUSIC_SLIDE:
_mouseClicked = true;
return doMusicSlide();
case TOGGLE_FX:
return toggleFx(pButton);
case TOGGLE_MS:
animClick(pButton);
toggleMusic();
return TOGGLED;
case TOGGLE_TEXT:
animClick(pButton);
return toggleText();
case EXIT:
animClick(pButton);
return QUIT_PANEL;
case RESTART:
animClick(pButton);
if (getYesNo(NULL)) {
restartGame();
return GAME_RESTORED;
} else
return 0;
case QUIT_TO_DOS:
animClick(pButton);
if (getYesNo(quitDos)) {
showGameQuitMsg(false);
delay(1500);
_system->quit();
}
return 0;
default:
error("SkyControl::handleClick: unknown routine: %X",pButton->_onClick);
case QUIT_TO_DOS:
animClick(pButton);
if (getYesNo(quitDos)) {
showGameQuitMsg(false);
delay(1500);
_system->quit();
}
return 0;
default:
error("SkyControl::handleClick: unknown routine: %X",pButton->_onClick);
}
}
@ -1649,21 +1630,21 @@ void SkyControl::restartGame(void) {
uint16 *resetData = lz77decode((uint16 *)_resetData288);
switch (SkyState::_systemVars.gameVersion) {
case 303:
applyDiff(resetData, (uint16*)_resetDiff303, 206);
break;
case 331:
applyDiff(resetData, (uint16*)_resetDiff331, 206);
break;
case 348:
applyDiff(resetData, (uint16*)_resetDiff348, 206);
break;
case 365:
case 368:
case 372:
applyDiff(resetData, (uint16*)_resetDiffCd, 214);
default:
break;
case 303:
applyDiff(resetData, (uint16*)_resetDiff303, 206);
break;
case 331:
applyDiff(resetData, (uint16*)_resetDiff331, 206);
break;
case 348:
applyDiff(resetData, (uint16*)_resetDiff348, 206);
break;
case 365:
case 368:
case 372:
applyDiff(resetData, (uint16*)_resetDiffCd, 214);
default:
break;
}
// ok, we finally have our savedata
@ -1688,41 +1669,35 @@ void SkyControl::delay(unsigned int amount) {
do {
while (_system->poll_event(&event)) {
switch (event.event_code) {
case OSystem::EVENT_KEYDOWN:
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_keyPressed = 8;
else
_keyPressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
break;
case OSystem::EVENT_LBUTTONDOWN:
_mouseClicked = true;
case OSystem::EVENT_KEYDOWN:
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_keyPressed = 8;
else
_keyPressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
break;
case OSystem::EVENT_LBUTTONDOWN:
_mouseClicked = true;
#ifdef _WIN32_WCE
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
_mouseX = event.mouse.x;
_mouseY = event.mouse.y;
#endif
break;
case OSystem::EVENT_LBUTTONUP:
_mouseClicked = false;
break;
case OSystem::EVENT_RBUTTONDOWN:
break;
case OSystem::EVENT_QUIT:
if (!SkyState::_systemVars.quitting)
showGameQuitMsg(false);
break;
default:
break;
break;
case OSystem::EVENT_LBUTTONUP:
_mouseClicked = false;
break;
case OSystem::EVENT_RBUTTONDOWN:
break;
case OSystem::EVENT_QUIT:
if (!SkyState::_systemVars.quitting)
showGameQuitMsg(false);
break;
default:
break;
}
}

View file

@ -667,86 +667,86 @@ bool SkyIntro::nextPart(uint16 *&data) {
// return false means cancel intro
uint16 command = *data++;
switch (command) {
case SHOWSCREEN:
_skyScreen->showScreen(*data++);
return true;
case FADEUP:
_skyScreen->paletteFadeUp(*data++);
return true;
case FADEDOWN:
_skyScreen->fnFadeDown(0);
return true;
case DELAY:
if (!escDelay(*data++))
case SHOWSCREEN:
_skyScreen->showScreen(*data++);
return true;
case FADEUP:
_skyScreen->paletteFadeUp(*data++);
return true;
case FADEDOWN:
_skyScreen->fnFadeDown(0);
return true;
case DELAY:
if (!escDelay(*data++))
return false;
return true;
case DOFLIRT:
_skyScreen->startSequence(*data++);
while (_skyScreen->sequenceRunning())
if (!escDelay(50))
return false;
return true;
case DOFLIRT:
_skyScreen->startSequence(*data++);
while (_skyScreen->sequenceRunning())
if (!escDelay(50))
return false;
return true;
case SCROLLFLIRT:
return floppyScrollFlirt();
case COMMANDFLIRT:
return commandFlirt(data);
case STOPFLIRT:
_skyScreen->stopSequence();
return true;
case STARTMUSIC:
_skyMusic->startMusic(*data++);
return true;
case WAITMUSIC:
while (_skyMusic->musicIsPlaying())
if (!escDelay(50))
return false;
return true;
case BGFLIRT:
_skyScreen->startSequence(*data++);
return true;
case WAITFLIRT:
while (_skyScreen->sequenceRunning())
if (!escDelay(50))
return false;
return true;
case PLAYVOICE:
if (!escDelay(200))
return true;
case SCROLLFLIRT:
return floppyScrollFlirt();
case COMMANDFLIRT:
return commandFlirt(data);
case STOPFLIRT:
_skyScreen->stopSequence();
return true;
case STARTMUSIC:
_skyMusic->startMusic(*data++);
return true;
case WAITMUSIC:
while (_skyMusic->musicIsPlaying())
if (!escDelay(50))
return false;
vData = _skyDisk->loadFile(*data++, NULL);
// HACK: Fill the header with silence. We should
// probably use _skySound instead of calling playRaw()
// directly, but this will have to do for now.
memset(vData, 127, sizeof(struct dataFileHeader));
_mixer->playRaw(&_voice, vData, _skyDisk->_lastLoadedFileSize, 11025,
SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_UNSIGNED, SOUND_VOICE);
return true;
case WAITVOICE:
while (_voice)
if (!escDelay(50))
return false;
return true;
case LOADBG:
_mixer->stopID(SOUND_BG);
if (_bgBuf)
free(_bgBuf);
_bgBuf = _skyDisk->loadFile(*data++, NULL);
_bgSize = _skyDisk->_lastLoadedFileSize;
return true;
case LOOPBG:
_mixer->stopID(SOUND_BG);
_mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025,
SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_LOOP, SOUND_BG);
return true;
case PLAYBG:
_mixer->stopID(SOUND_BG);
_mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025,
SoundMixer::FLAG_UNSIGNED, SOUND_BG);
return true;
case STOPBG:
_mixer->stopID(SOUND_BG);
return true;
default:
error("Unknown intro command %X", command);
return true;
case BGFLIRT:
_skyScreen->startSequence(*data++);
return true;
case WAITFLIRT:
while (_skyScreen->sequenceRunning())
if (!escDelay(50))
return false;
return true;
case PLAYVOICE:
if (!escDelay(200))
return false;
vData = _skyDisk->loadFile(*data++, NULL);
// HACK: Fill the header with silence. We should
// probably use _skySound instead of calling playRaw()
// directly, but this will have to do for now.
memset(vData, 127, sizeof(struct dataFileHeader));
_mixer->playRaw(&_voice, vData, _skyDisk->_lastLoadedFileSize, 11025,
SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_UNSIGNED, SOUND_VOICE);
return true;
case WAITVOICE:
while (_voice)
if (!escDelay(50))
return false;
return true;
case LOADBG:
_mixer->stopID(SOUND_BG);
if (_bgBuf)
free(_bgBuf);
_bgBuf = _skyDisk->loadFile(*data++, NULL);
_bgSize = _skyDisk->_lastLoadedFileSize;
return true;
case LOOPBG:
_mixer->stopID(SOUND_BG);
_mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025,
SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_LOOP, SOUND_BG);
return true;
case PLAYBG:
_mixer->stopID(SOUND_BG);
_mixer->playRaw(&_bgSfx, _bgBuf + 256, _bgSize - 768, 11025,
SoundMixer::FLAG_UNSIGNED, SOUND_BG);
return true;
case STOPBG:
_mixer->stopID(SOUND_BG);
return true;
default:
error("Unknown intro command %X", command);
}
return true;
}
@ -803,27 +803,27 @@ bool SkyIntro::commandFlirt(uint16 *&data) {
data++;
uint16 command = *data++;
switch(command) {
case IC_PREPARE_TEXT:
_skyText->getText(*data++);
_skyText->displayText(_textBuf, true, INTRO_TEXT_WIDTH, 255);
break;
case IC_SHOW_TEXT:
((dataFileHeader*)_textBuf)->s_x = *data++;
((dataFileHeader*)_textBuf)->s_y = *data++;
showTextBuf();
break;
case IC_REMOVE_TEXT:
restoreScreen();
break;
case IC_MAKE_SOUND:
_skySound->playSound(data[0], data[1], 0);
data += 2;
break;
case IC_FX_VOLUME:
_skySound->playSound(1, *data++, 0);
break;
default:
error("Unknown FLIRT command %X\n", command);
case IC_PREPARE_TEXT:
_skyText->getText(*data++);
_skyText->displayText(_textBuf, true, INTRO_TEXT_WIDTH, 255);
break;
case IC_SHOW_TEXT:
((dataFileHeader*)_textBuf)->s_x = *data++;
((dataFileHeader*)_textBuf)->s_y = *data++;
showTextBuf();
break;
case IC_REMOVE_TEXT:
restoreScreen();
break;
case IC_MAKE_SOUND:
_skySound->playSound(data[0], data[1], 0);
data += 2;
break;
case IC_FX_VOLUME:
_skySound->playSound(1, *data++, 0);
break;
default:
error("Unknown FLIRT command %X\n", command);
}
}
if (!escDelay(50)) {

View file

@ -138,30 +138,30 @@ uint8 SkyAdlibChannel::process(uint16 aktTime) {
// dummy opcode
} else if (opcode >= 0x90) {
switch (opcode&0xF) {
case 0: com90_caseNoteOff(); break;
case 1: com90_stopChannel(); break;
case 2: com90_setupInstrument(); break;
case 3:
returnVal = com90_updateTempo();
break;
case 5: com90_getFreqOffset(); break;
case 6: com90_getChannelVolume(); break;
case 7: com90_getTremoVibro(); break;
case 8: com90_rewindMusic(); break;
case 9: com90_keyOff(); break;
case 12: com90_setStartOfData(); break;
case 4: //com90_dummy();
case 10: //com90_error();
case 11: //com90_doLodsb();
case 13: //com90_do_two_Lodsb();
error("SkyChannel: dummy music routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
default:
// these opcodes aren't implemented in original music driver
error("SkyChannel: Not existant routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
case 0: com90_caseNoteOff(); break;
case 1: com90_stopChannel(); break;
case 2: com90_setupInstrument(); break;
case 3:
returnVal = com90_updateTempo();
break;
case 5: com90_getFreqOffset(); break;
case 6: com90_getChannelVolume(); break;
case 7: com90_getTremoVibro(); break;
case 8: com90_rewindMusic(); break;
case 9: com90_keyOff(); break;
case 12: com90_setStartOfData(); break;
case 4: //com90_dummy();
case 10: //com90_error();
case 11: //com90_doLodsb();
case 13: //com90_do_two_Lodsb();
error("SkyChannel: dummy music routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
default:
// these opcodes aren't implemented in original music driver
error("SkyChannel: Not existant routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
}
} else {
// new adlib channel assignment

View file

@ -93,30 +93,30 @@ uint8 SkyGmChannel::process(uint16 aktTime) {
// dummy opcode
} else if (opcode >= 0x90) {
switch (opcode&0xF) {
case 0: com90_caseNoteOff(); break;
case 1: com90_stopChannel(); break;
case 2: com90_setupInstrument(); break;
case 3:
returnVal = com90_updateTempo();
break;
case 5: com90_getPitch(); break;
case 6: com90_getChannelVolume(); break;
case 8: com90_rewindMusic(); break;
case 9: com90_keyOff(); break;
case 11: com90_getChannelPanValue(); break;
case 12: com90_setStartOfData(); break;
case 13: com90_getChannelControl(); break;
case 4: //com90_dummy();
case 7: //com90_skipTremoVibro();
case 10: //com90_error();
error("SkyChannel: dummy music routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
default:
// these opcodes aren't implemented in original music driver
error("SkyChannel: Not existant routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
case 0: com90_caseNoteOff(); break;
case 1: com90_stopChannel(); break;
case 2: com90_setupInstrument(); break;
case 3:
returnVal = com90_updateTempo();
break;
case 5: com90_getPitch(); break;
case 6: com90_getChannelVolume(); break;
case 8: com90_rewindMusic(); break;
case 9: com90_keyOff(); break;
case 11: com90_getChannelPanValue(); break;
case 12: com90_setStartOfData(); break;
case 13: com90_getChannelControl(); break;
case 4: //com90_dummy();
case 7: //com90_skipTremoVibro();
case 10: //com90_error();
error("SkyChannel: dummy music routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
default:
// these opcodes aren't implemented in original music driver
error("SkyChannel: Not existant routine 0x%02X was called",opcode);
_channelData.channelActive = 0;
break;
}
} else {
// new midi channel assignment

View file

@ -78,32 +78,32 @@ void SkyMusicBase::musicCommand(uint16 command)
return ;
}
switch(command >> 8) {
case 0:
debug(1,"SkyMusic: got call to startAdlibDriver(). Not necessary in this implementation.");
break;
case 1:
debug(1,"SkyMusic: got call to stopDriver(). Not necessary in this implementation.");
break;
case 2:
debug(1,"SkyMusic: got call to SetTempo(). Tempo is fixed in this implementation.");
break;
case 3:
debug(1,"SkyMusic: ignored direct call to driverPoll().");
break;
case 4:
startMusic(command&0xFF);
break;
case 6:
reinitFM();
break;
case 7:
stopMusic();
break;
case 13:
setFMVolume(command&0xFF);
break;
default:
debug(1,"musicCommand %d ignored.",command>>8);
case 0:
debug(1,"SkyMusic: got call to startAdlibDriver(). Not necessary in this implementation.");
break;
case 1:
debug(1,"SkyMusic: got call to stopDriver(). Not necessary in this implementation.");
break;
case 2:
debug(1,"SkyMusic: got call to SetTempo(). Tempo is fixed in this implementation.");
break;
case 3:
debug(1,"SkyMusic: ignored direct call to driverPoll().");
break;
case 4:
startMusic(command&0xFF);
break;
case 6:
reinitFM();
break;
case 7:
stopMusic();
break;
case 13:
setFMVolume(command&0xFF);
break;
default:
debug(1,"musicCommand %d ignored.",command>>8);
}
}

View file

@ -142,24 +142,24 @@ uint8 SkyState::_languageTable[11] = {
void SkyState::doCheat(uint8 num) {
switch(num) {
case 1: warning("executed cheat: get jammer");
SkyLogic::_scriptVariables[258] = 42; // got_jammer
SkyLogic::_scriptVariables[240] = 69; // got_sponsor
break;
case 2: warning("executed cheat: computer room");
SkyLogic::_scriptVariables[479] = 2; // card_status
SkyLogic::_scriptVariables[480] = 1; // card_fix
break;
case 3: warning("executed cheat: get to burke");
SkyLogic::_scriptVariables[190] = 42; // knows_port
break;
case 4: warning("executed cheat: get to reactor section");
SkyLogic::_scriptVariables[451] = 42; // foreman_friend
_skyLogic->fnSendSync(8484, 1, 0); // send sync to RAD suit (put in locker)
_skyLogic->fnKillId(ID_ANITA_SPY, 0, 0); // stop anita from getting to you
break;
default: warning("unknown cheat: %d", num);
break;
case 1: warning("executed cheat: get jammer");
SkyLogic::_scriptVariables[258] = 42; // got_jammer
SkyLogic::_scriptVariables[240] = 69; // got_sponsor
break;
case 2: warning("executed cheat: computer room");
SkyLogic::_scriptVariables[479] = 2; // card_status
SkyLogic::_scriptVariables[480] = 1; // card_fix
break;
case 3: warning("executed cheat: get to burke");
SkyLogic::_scriptVariables[190] = 42; // knows_port
break;
case 4: warning("executed cheat: get to reactor section");
SkyLogic::_scriptVariables[451] = 42; // foreman_friend
_skyLogic->fnSendSync(8484, 1, 0); // send sync to RAD suit (put in locker)
_skyLogic->fnKillId(ID_ANITA_SPY, 0, 0); // stop anita from getting to you
break;
default: warning("unknown cheat: %d", num);
break;
}
}
@ -417,51 +417,46 @@ void SkyState::delay(uint amount) { //copied and mutilated from Simon.cpp
do {
while (_system->poll_event(&event)) {
switch (event.event_code) {
case OSystem::EVENT_KEYDOWN:
if (event.kbd.flags == OSystem::KBD_CTRL) {
if (event.kbd.keycode == 'f') {
_fastMode ^= 1;
break;
}
if (event.kbd.keycode == 'g') {
_fastMode ^= 2;
break;
}
case OSystem::EVENT_KEYDOWN:
if (event.kbd.flags == OSystem::KBD_CTRL) {
if (event.kbd.keycode == 'f') {
_fastMode ^= 1;
break;
}
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_key_pressed = 8;
else
_key_pressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
if (!(_systemVars.systemFlags & SF_MOUSE_LOCKED)) {
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
if (event.kbd.keycode == 'g') {
_fastMode ^= 2;
break;
}
break;
}
case OSystem::EVENT_LBUTTONDOWN:
_skyMouse->buttonPressed(2);
#ifdef _WIN32_WCE
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_key_pressed = 8;
else
_key_pressed = (byte)event.kbd.ascii;
break;
case OSystem::EVENT_MOUSEMOVE:
if (!(_systemVars.systemFlags & SF_MOUSE_LOCKED)) {
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
}
break;
case OSystem::EVENT_LBUTTONDOWN:
_skyMouse->buttonPressed(2);
#ifdef _WIN32_WCE
_sdl_mouse_x = event.mouse.x;
_sdl_mouse_y = event.mouse.y;
#endif
break;
case OSystem::EVENT_RBUTTONDOWN:
_skyMouse->buttonPressed(1);
break;
case OSystem::EVENT_QUIT:
if (!SkyState::_systemVars.quitting)
_skyControl->showGameQuitMsg(); // will call _system->quit()
break;
default:
break;
break;
case OSystem::EVENT_RBUTTONDOWN:
_skyMouse->buttonPressed(1);
break;
case OSystem::EVENT_QUIT:
if (!SkyState::_systemVars.quitting)
_skyControl->showGameQuitMsg(); // will call _system->quit()
break;
default:
break;
}
}

View file

@ -222,17 +222,17 @@ void SkyText::fnSetFont(uint32 fontNr) {
struct charSet *newCharSet;
switch (fontNr) {
case 0:
newCharSet = &_mainCharacterSet;
break;
case 1:
newCharSet = &_controlCharacterSet;
break;
case 2:
newCharSet = &_linkCharacterSet;
break;
default:
error("Tried to set invalid font (%d)", fontNr);
case 0:
newCharSet = &_mainCharacterSet;
break;
case 1:
newCharSet = &_controlCharacterSet;
break;
case 2:
newCharSet = &_linkCharacterSet;
break;
default:
error("Tried to set invalid font (%d)", fontNr);
}
_curCharSet = fontNr;