mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-18 07:53:12 +00:00
made Scumm::OptionsDialog subclass GUI::OptionsDialog (code reuse); replaced Sound::_sound_volume_master and friends by ConfMan.get() calls; some whitespace cleanup
svn-id: r11257
This commit is contained in:
parent
b38995b288
commit
0bcc7ce80e
@ -47,6 +47,8 @@ extern void save_key_mapping();
|
||||
extern void load_key_mapping();
|
||||
#endif
|
||||
|
||||
using namespace GUI;
|
||||
|
||||
namespace Scumm {
|
||||
|
||||
struct ResString {
|
||||
@ -389,11 +391,7 @@ void MainMenuDialog::load() {
|
||||
#pragma mark -
|
||||
|
||||
enum {
|
||||
kMasterVolumeChanged = 'mavc',
|
||||
kMusicVolumeChanged = 'muvc',
|
||||
kSfxVolumeChanged = 'sfvc',
|
||||
kOKCmd = 'ok ',
|
||||
kCancelCmd = 'cncl'
|
||||
kOKCmd = 'ok '
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -402,46 +400,29 @@ enum {
|
||||
|
||||
#ifndef _WIN32_WCE
|
||||
OptionsDialog::OptionsDialog(ScummEngine *scumm)
|
||||
: ScummDialog(scumm, 40, 30, 240, 124) {
|
||||
: GUI::OptionsDialog("", 40, 30, 240, 124), _scumm(scumm) {
|
||||
#else
|
||||
OptionsDialog::OptionsDialog(ScummEngine *scumm)
|
||||
: ScummDialog(scumm, 40, 30, 240, 124 + kButtonHeight + 4) {
|
||||
: GUI::OptionsDialog("", 40, 30, 240, 124 + kButtonHeight + 4), _scumm(scumm) {
|
||||
#endif
|
||||
//
|
||||
// Add the buttons
|
||||
//
|
||||
#ifdef _WIN32_WCE
|
||||
addButton(_w - kButtonWidth - 8, _h - 24 - kButtonHeight - 4, "OK", kOKCmd, 'O');
|
||||
addButton(_w - 2 * kButtonWidth - 12, _h - 24 - kButtonHeight - 4, "Cancel", kCancelCmd, 'C');
|
||||
addButton(_w - kButtonWidth - 8, _h - 24 - kButtonHeight - 4, "OK", GUI::OptionsDialog::kOKCmd, 'O');
|
||||
addButton(_w - 2 * kButtonWidth - 12, _h - 24 - kButtonHeight - 4, "Cancel", kCloseCmd, 'C');
|
||||
|
||||
addButton(kButtonWidth+12, _h - 24, "Keys", kKeysCmd, 'K');
|
||||
#else
|
||||
addButton(_w - kButtonWidth-8, _h - 24, "OK", kOKCmd, 'O');
|
||||
addButton(_w - 2 * kButtonWidth-12, _h - 24, "Cancel", kCancelCmd, 'C');
|
||||
addButton(_w - kButtonWidth-8, _h - 24, "OK", GUI::OptionsDialog::kOKCmd, 'O');
|
||||
addButton(_w - 2 * kButtonWidth-12, _h - 24, "Cancel", kCloseCmd, 'C');
|
||||
#endif
|
||||
|
||||
//
|
||||
// Sound controllers
|
||||
//
|
||||
int yoffset = 8;
|
||||
|
||||
_masterVolumeSlider = new SliderWidget(this, 5, yoffset, 185, 12, "Master volume: ", 100, kMasterVolumeChanged);
|
||||
_masterVolumeLabel = new StaticTextWidget(this, 200, yoffset + 2, 24, 16, "100%", kTextAlignLeft);
|
||||
_masterVolumeSlider->setMinValue(0); _masterVolumeSlider->setMaxValue(255);
|
||||
_masterVolumeLabel->setFlags(WIDGET_CLEARBG);
|
||||
yoffset += 16;
|
||||
|
||||
_musicVolumeSlider = new SliderWidget(this, 5, yoffset, 185, 12, "Music volume: ", 100, kMusicVolumeChanged);
|
||||
_musicVolumeLabel = new StaticTextWidget(this, 200, yoffset+2, 24, 16, "100%", kTextAlignLeft);
|
||||
_musicVolumeSlider->setMinValue(0); _musicVolumeSlider->setMaxValue(255);
|
||||
_musicVolumeLabel->setFlags(WIDGET_CLEARBG);
|
||||
yoffset += 16;
|
||||
|
||||
_sfxVolumeSlider = new SliderWidget(this, 5, yoffset, 185, 12, "SFX volume: ", 100, kSfxVolumeChanged);
|
||||
_sfxVolumeLabel = new StaticTextWidget(this, 200, yoffset + 2, 24, 16, "100%", kTextAlignLeft);
|
||||
_sfxVolumeSlider->setMinValue(0); _sfxVolumeSlider->setMaxValue(255);
|
||||
_sfxVolumeLabel->setFlags(WIDGET_CLEARBG);
|
||||
yoffset += 16;
|
||||
yoffset = addVolumeControls(this, yoffset);
|
||||
|
||||
//
|
||||
// Some misc options
|
||||
@ -463,25 +444,41 @@ OptionsDialog::~OptionsDialog() {
|
||||
}
|
||||
|
||||
void OptionsDialog::open() {
|
||||
ScummDialog::open();
|
||||
|
||||
// display current sound settings
|
||||
_soundVolumeMaster = _scumm->_sound->_sound_volume_master;
|
||||
_soundVolumeMusic = _scumm->_sound->_sound_volume_music;
|
||||
_soundVolumeSfx = _scumm->_sound->_sound_volume_sfx;
|
||||
|
||||
_masterVolumeSlider->setValue(_soundVolumeMaster);
|
||||
_musicVolumeSlider->setValue(_soundVolumeMusic);
|
||||
_sfxVolumeSlider->setValue(_soundVolumeSfx);
|
||||
|
||||
_masterVolumeLabel->setValue(_soundVolumeMaster);
|
||||
_musicVolumeLabel->setValue(_soundVolumeMusic);
|
||||
_sfxVolumeLabel->setValue(_soundVolumeSfx);
|
||||
GUI::OptionsDialog::open();
|
||||
|
||||
// update checkboxes, too
|
||||
subtitlesCheckbox->setState(_scumm->_noSubtitles == false);
|
||||
}
|
||||
|
||||
void OptionsDialog::close() {
|
||||
|
||||
if (getResult()) {
|
||||
// Subtitles
|
||||
ConfMan.set("nosubtitles", !subtitlesCheckbox->getState(), _domain);
|
||||
}
|
||||
GUI::OptionsDialog::close();
|
||||
|
||||
|
||||
// Sync the engine with the config manager
|
||||
int soundVolumeMaster = ConfMan.getInt("master_volume");
|
||||
int soundVolumeMusic = ConfMan.getInt("music_volume");
|
||||
int soundVolumeSfx = ConfMan.getInt("sfx_volume");
|
||||
|
||||
if (_scumm->_imuse) {
|
||||
_scumm->_imuse->set_music_volume(soundVolumeMusic);
|
||||
}
|
||||
if (_scumm->_musicEngine) {
|
||||
_scumm->_musicEngine->setMasterVolume(soundVolumeMaster);
|
||||
}
|
||||
|
||||
_scumm->_mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
|
||||
_scumm->_mixer->setMusicVolume(soundVolumeMusic);
|
||||
|
||||
// Subtitles?
|
||||
_scumm->_noSubtitles = ConfMan.getBool("nosubtitles");
|
||||
}
|
||||
|
||||
|
||||
void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
|
||||
switch (cmd) {
|
||||
case kKeysCmd:
|
||||
@ -489,53 +486,8 @@ void OptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
|
||||
_keysDialog->runModal();
|
||||
#endif
|
||||
break;
|
||||
case kMasterVolumeChanged:
|
||||
_soundVolumeMaster = _masterVolumeSlider->getValue();
|
||||
_masterVolumeLabel->setValue(_soundVolumeMaster);
|
||||
_masterVolumeLabel->draw();
|
||||
break;
|
||||
case kMusicVolumeChanged:
|
||||
_soundVolumeMusic = _musicVolumeSlider->getValue();
|
||||
_musicVolumeLabel->setValue(_soundVolumeMusic);
|
||||
_musicVolumeLabel->draw();
|
||||
break;
|
||||
case kSfxVolumeChanged:
|
||||
_soundVolumeSfx = _sfxVolumeSlider->getValue();
|
||||
_sfxVolumeLabel->setValue(_soundVolumeSfx);
|
||||
_sfxVolumeLabel->draw();
|
||||
break;
|
||||
case kOKCmd: {
|
||||
// Update the sound settings
|
||||
_scumm->_sound->_sound_volume_master = _soundVolumeMaster; // Master
|
||||
_scumm->_sound->_sound_volume_music = _soundVolumeMusic; // Music
|
||||
_scumm->_sound->_sound_volume_sfx = _soundVolumeSfx; // SFX
|
||||
|
||||
if (_scumm->_imuse) {
|
||||
_scumm->_imuse->set_music_volume(_soundVolumeMusic);
|
||||
}
|
||||
if (_scumm->_musicEngine) {
|
||||
_scumm->_musicEngine->setMasterVolume(_soundVolumeMaster);
|
||||
}
|
||||
|
||||
_scumm->_mixer->setVolume(_soundVolumeSfx * _soundVolumeMaster / 255);
|
||||
_scumm->_mixer->setMusicVolume(_soundVolumeMusic);
|
||||
|
||||
ConfMan.set("master_volume", _soundVolumeMaster);
|
||||
ConfMan.set("music_volume", _soundVolumeMusic);
|
||||
ConfMan.set("sfx_volume", _soundVolumeSfx);
|
||||
|
||||
// Subtitles?
|
||||
_scumm->_noSubtitles = !subtitlesCheckbox->getState();
|
||||
ConfMan.set("nosubtitles", _scumm->_noSubtitles);
|
||||
|
||||
// Finally flush the modified config
|
||||
ConfMan.flushToDisk();
|
||||
}
|
||||
case kCancelCmd:
|
||||
close();
|
||||
break;
|
||||
default:
|
||||
ScummDialog::handleCommand(sender, cmd, data);
|
||||
GUI::OptionsDialog::handleCommand(sender, cmd, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -671,7 +623,7 @@ KeysDialog::KeysDialog(ScummEngine *scumm)
|
||||
: ScummDialog(scumm, 30, 20, 260, 160) {
|
||||
addButton(160, 20, "Map", kMapCmd, 'M'); // Map
|
||||
addButton(160, 40, "OK", kOKCmd, 'O'); // OK
|
||||
addButton(160, 60, "Cancel", kCancelCmd, 'C'); // Cancel
|
||||
addButton(160, 60, "Cancel", kCloseCmd, 'C'); // Cancel
|
||||
|
||||
_actionsList = new ListWidget(this, 10, 20, 140, 90);
|
||||
_actionsList->setNumberingMode(kListNumberingZero);
|
||||
@ -727,7 +679,7 @@ void KeysDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
|
||||
save_key_mapping();
|
||||
close();
|
||||
break;
|
||||
case kCancelCmd:
|
||||
case kCloseCmd:
|
||||
load_key_mapping();
|
||||
close();
|
||||
break;
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "common/str.h"
|
||||
#include "gui/about.h"
|
||||
#include "gui/dialog.h"
|
||||
#include "gui/options.h"
|
||||
#include "gui/widget.h"
|
||||
|
||||
#ifndef DISABLE_HELP
|
||||
@ -33,17 +34,16 @@
|
||||
namespace GUI {
|
||||
class ListWidget;
|
||||
}
|
||||
using namespace GUI; // FIXME: Bad style to use a using directive in a header
|
||||
|
||||
|
||||
namespace Scumm {
|
||||
|
||||
class ScummEngine;
|
||||
|
||||
class ScummDialog : public Dialog {
|
||||
class ScummDialog : public GUI::Dialog {
|
||||
public:
|
||||
ScummDialog(ScummEngine *scumm, int x, int y, int w, int h)
|
||||
: Dialog(x, y, w, h), _scumm(scumm) {}
|
||||
: GUI::Dialog(x, y, w, h), _scumm(scumm) {}
|
||||
|
||||
protected:
|
||||
typedef Common::String String;
|
||||
@ -58,14 +58,14 @@ class MainMenuDialog : public ScummDialog {
|
||||
public:
|
||||
MainMenuDialog(ScummEngine *scumm);
|
||||
~MainMenuDialog();
|
||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void open();
|
||||
virtual void close();
|
||||
|
||||
protected:
|
||||
Dialog *_aboutDialog;
|
||||
GUI::Dialog *_aboutDialog;
|
||||
#ifndef DISABLE_HELP
|
||||
Dialog *_helpDialog;
|
||||
GUI::Dialog *_helpDialog;
|
||||
#endif
|
||||
|
||||
void save();
|
||||
@ -77,17 +77,17 @@ protected:
|
||||
class HelpDialog : public ScummDialog {
|
||||
public:
|
||||
HelpDialog(ScummEngine *scumm);
|
||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
|
||||
|
||||
protected:
|
||||
typedef Common::String String;
|
||||
|
||||
ButtonWidget *_nextButton;
|
||||
ButtonWidget *_prevButton;
|
||||
GUI::ButtonWidget *_nextButton;
|
||||
GUI::ButtonWidget *_prevButton;
|
||||
|
||||
StaticTextWidget *_title;
|
||||
StaticTextWidget *_key[HELP_NUM_LINES];
|
||||
StaticTextWidget *_dsc[HELP_NUM_LINES];
|
||||
GUI::StaticTextWidget *_title;
|
||||
GUI::StaticTextWidget *_key[HELP_NUM_LINES];
|
||||
GUI::StaticTextWidget *_dsc[HELP_NUM_LINES];
|
||||
|
||||
int _page;
|
||||
int _numPages;
|
||||
@ -97,10 +97,11 @@ protected:
|
||||
|
||||
#endif
|
||||
|
||||
class OptionsDialog : public ScummDialog {
|
||||
class OptionsDialog : public GUI::OptionsDialog {
|
||||
protected:
|
||||
ScummEngine *_scumm;
|
||||
#ifdef _WIN32_WCE
|
||||
Dialog *_keysDialog;
|
||||
GUI::Dialog *_keysDialog;
|
||||
#endif
|
||||
|
||||
public:
|
||||
@ -108,23 +109,11 @@ public:
|
||||
~OptionsDialog();
|
||||
|
||||
virtual void open();
|
||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void close();
|
||||
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
|
||||
|
||||
protected:
|
||||
|
||||
int _soundVolumeMaster;
|
||||
int _soundVolumeMusic;
|
||||
int _soundVolumeSfx;
|
||||
|
||||
SliderWidget *_masterVolumeSlider;
|
||||
SliderWidget *_musicVolumeSlider;
|
||||
SliderWidget *_sfxVolumeSlider;
|
||||
|
||||
StaticTextWidget *_masterVolumeLabel;
|
||||
StaticTextWidget *_musicVolumeLabel;
|
||||
StaticTextWidget *_sfxVolumeLabel;
|
||||
|
||||
CheckboxWidget *subtitlesCheckbox;
|
||||
GUI::CheckboxWidget *subtitlesCheckbox;
|
||||
};
|
||||
|
||||
class InfoDialog : public ScummDialog {
|
||||
@ -170,14 +159,14 @@ class KeysDialog : public ScummDialog {
|
||||
public:
|
||||
KeysDialog(ScummEngine *scumm);
|
||||
|
||||
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
|
||||
virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
|
||||
|
||||
protected:
|
||||
|
||||
ListWidget *_actionsList;
|
||||
StaticTextWidget *_actionTitle;
|
||||
StaticTextWidget *_keyMapping;
|
||||
GUI::ListWidget *_actionsList;
|
||||
GUI::StaticTextWidget *_actionTitle;
|
||||
GUI::StaticTextWidget *_keyMapping;
|
||||
int _actionSelected;
|
||||
};
|
||||
|
||||
|
@ -677,8 +677,8 @@ void ScummEngine::saveOrLoad(Serializer *s, uint32 savegameVersion) {
|
||||
|
||||
if (_imuse && (_saveSound || !_saveLoadCompatible)) {
|
||||
_imuse->save_or_load(s, this);
|
||||
_imuse->setMasterVolume(_sound->_sound_volume_master);
|
||||
_imuse->set_music_volume(_sound->_sound_volume_music);
|
||||
_imuse->setMasterVolume(ConfMan.getInt("master_volume"));
|
||||
_imuse->set_music_volume(ConfMan.getInt("music_volume"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "scumm/actor.h"
|
||||
#include "scumm/akos.h"
|
||||
#include "scumm/charset.h"
|
||||
@ -1472,13 +1473,13 @@ void ScummEngine_v8::o8_kernelGetFunctions() {
|
||||
}
|
||||
break;
|
||||
case 0xDD: // getMasterSFXVol
|
||||
push(_sound->_sound_volume_sfx / 2);
|
||||
push(ConfMan.getInt("sfx_volume") / 2);
|
||||
break;
|
||||
case 0xDE: // getMasterVoiceVol
|
||||
push(_sound->_sound_volume_sfx / 2);
|
||||
push(ConfMan.getInt("sfx_volume") / 2);
|
||||
break;
|
||||
case 0xDF: // getMasterMusicVol
|
||||
push(_sound->_sound_volume_music / 2);
|
||||
push(ConfMan.getInt("music_volume") / 2);
|
||||
break;
|
||||
case 0xE0: // readRegistryValue
|
||||
{
|
||||
|
@ -654,9 +654,6 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
|
||||
_debugger = new ScummDebugger(this);
|
||||
|
||||
_sound = new Sound(this);
|
||||
_sound->_sound_volume_master = ConfMan.getInt("master_volume");
|
||||
_sound->_sound_volume_sfx = ConfMan.getInt("sfx_volume");
|
||||
_sound->_sound_volume_music = ConfMan.getInt("music_volume");
|
||||
|
||||
#ifndef __GP32__ //ph0x FIXME, "quick dirty hack"
|
||||
/* Bind the mixer to the system => mixer will be invoked
|
||||
@ -673,8 +670,8 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
|
||||
_silentDigitalImuse = true;
|
||||
_noDigitalSamples = true;
|
||||
}
|
||||
_mixer->setVolume(_sound->_sound_volume_sfx * _sound->_sound_volume_master / 255);
|
||||
_mixer->setMusicVolume(_sound->_sound_volume_music);
|
||||
_mixer->setVolume(ConfMan.getInt("sfx_volume") * ConfMan.getInt("master_volume") / 255);
|
||||
_mixer->setMusicVolume(ConfMan.getInt("music_volume"));
|
||||
|
||||
// Init iMuse
|
||||
if (_features & GF_DIGI_IMUSE) {
|
||||
@ -705,7 +702,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
|
||||
}
|
||||
if (_features & GF_FMTOWNS)
|
||||
_imuse->property(IMuse::PROP_DIRECT_PASSTHROUGH, 1);
|
||||
_imuse->set_music_volume(_sound->_sound_volume_music);
|
||||
_imuse->set_music_volume(ConfMan.getInt("music_volume"));
|
||||
}
|
||||
}
|
||||
#endif // ph0x-hack
|
||||
@ -1363,7 +1360,7 @@ load_game:
|
||||
#endif
|
||||
sprintf(buf, "Successfully saved game state in file:\n\n%s", filename);
|
||||
|
||||
TimedMessageDialog dialog(buf, 1500);
|
||||
GUI::TimedMessageDialog dialog(buf, 1500);
|
||||
runDialog(dialog);
|
||||
}
|
||||
if (success && _saveLoadFlag != 1)
|
||||
@ -1613,7 +1610,7 @@ void ScummEngine::parseEvents() {
|
||||
break;
|
||||
|
||||
case OSystem::EVENT_QUIT:
|
||||
if(_confirmExit)
|
||||
if (_confirmExit)
|
||||
confirmexitDialog();
|
||||
else
|
||||
_quit = true;
|
||||
@ -1811,18 +1808,18 @@ void ScummEngine::processKbd() {
|
||||
stopTalk();
|
||||
return;
|
||||
} else if (_lastKeyHit == '[') { // [ Music volume down
|
||||
int vol = _sound->_sound_volume_music;
|
||||
int vol = ConfMan.getInt("music_volume");
|
||||
if (!(vol & 0xF) && vol)
|
||||
vol -= 16;
|
||||
vol = vol & 0xF0;
|
||||
_sound->_sound_volume_music = vol;
|
||||
ConfMan.set("music_volume", vol);
|
||||
if (_imuse)
|
||||
_imuse->set_music_volume (vol);
|
||||
} else if (_lastKeyHit == ']') { // ] Music volume up
|
||||
int vol = _sound->_sound_volume_music;
|
||||
int vol = ConfMan.getInt("music_volume");
|
||||
vol = (vol + 16) & 0xFF0;
|
||||
if (vol > 255) vol = 255;
|
||||
_sound->_sound_volume_music = vol;
|
||||
ConfMan.set("music_volume", vol);
|
||||
if (_imuse)
|
||||
_imuse->set_music_volume (vol);
|
||||
} else if (_lastKeyHit == '-') { // - text speed down
|
||||
@ -2493,7 +2490,7 @@ char ScummEngine::displayError(bool showCancel, const char *message, ...) {
|
||||
vsprintf(buf, message, va);
|
||||
va_end(va);
|
||||
|
||||
MessageDialog dialog(buf, "OK", "Cancel");
|
||||
GUI::MessageDialog dialog(buf, "OK", "Cancel");
|
||||
return runDialog(dialog);
|
||||
}
|
||||
|
||||
@ -2503,70 +2500,74 @@ char ScummEngine::displayError(bool showCancel, const char *message, ...) {
|
||||
|
||||
int SJIStoFMTChunk(int f, int s) //convert sjis code to fmt font offset
|
||||
{
|
||||
enum {KANA = 0, KANJI = 1, EKANJI = 2};
|
||||
enum {
|
||||
KANA = 0,
|
||||
KANJI = 1,
|
||||
EKANJI = 2
|
||||
};
|
||||
int base = s - (s % 32) - 1;
|
||||
int c = 0, p = 0, chunk_f = 0, chunk = 0, cr, kanjiType = KANA;
|
||||
|
||||
if(f >= 0x81 && f <= 0x84) kanjiType = KANA;
|
||||
if(f >= 0x88 && f <= 0x9f) kanjiType = KANJI;
|
||||
if(f >= 0xe0 && f <= 0xea) kanjiType = EKANJI;
|
||||
if (f >= 0x81 && f <= 0x84) kanjiType = KANA;
|
||||
if (f >= 0x88 && f <= 0x9f) kanjiType = KANJI;
|
||||
if (f >= 0xe0 && f <= 0xea) kanjiType = EKANJI;
|
||||
|
||||
if((f > 0xe8 || (f == 0xe8 && base >= 0x9f)) || (f > 0x90 || (f == 0x90 && base >= 0x9f))) {
|
||||
if ((f > 0xe8 || (f == 0xe8 && base >= 0x9f)) || (f > 0x90 || (f == 0x90 && base >= 0x9f))) {
|
||||
c = 48; //correction
|
||||
p = -8; //correction
|
||||
}
|
||||
|
||||
if(kanjiType == KANA) {//Kana
|
||||
if (kanjiType == KANA) {//Kana
|
||||
chunk_f = (f - 0x81) * 2;
|
||||
} else if(kanjiType == KANJI) {//Standard Kanji
|
||||
} else if (kanjiType == KANJI) {//Standard Kanji
|
||||
p += f - 0x88;
|
||||
chunk_f = c + 2 * p;
|
||||
} else if(kanjiType == EKANJI) {//Enhanced Kanji
|
||||
} else if (kanjiType == EKANJI) {//Enhanced Kanji
|
||||
p += f - 0xe0;
|
||||
chunk_f = c + 2 * p;
|
||||
}
|
||||
|
||||
if(base == 0x7f && s == 0x7f)
|
||||
if (base == 0x7f && s == 0x7f)
|
||||
base -= 0x20; //correction
|
||||
if((base == 0x7f && s == 0x9e) || (base == 0x9f && s == 0xbe) || (base == 0xbf && s == 0xde))
|
||||
if ((base == 0x7f && s == 0x9e) || (base == 0x9f && s == 0xbe) || (base == 0xbf && s == 0xde))
|
||||
base += 0x20; //correction
|
||||
|
||||
switch(base) {
|
||||
case 0x3f:
|
||||
cr = 0; //3f
|
||||
if(kanjiType == KANA) chunk = 1;
|
||||
else if(kanjiType == KANJI) chunk = 31;
|
||||
else if(kanjiType == EKANJI) chunk = 111;
|
||||
if (kanjiType == KANA) chunk = 1;
|
||||
else if (kanjiType == KANJI) chunk = 31;
|
||||
else if (kanjiType == EKANJI) chunk = 111;
|
||||
break;
|
||||
case 0x5f:
|
||||
cr = 0; //5f
|
||||
if(kanjiType == KANA) chunk = 17;
|
||||
else if(kanjiType == KANJI) chunk = 47;
|
||||
else if(kanjiType == EKANJI) chunk = 127;
|
||||
if (kanjiType == KANA) chunk = 17;
|
||||
else if (kanjiType == KANJI) chunk = 47;
|
||||
else if (kanjiType == EKANJI) chunk = 127;
|
||||
break;
|
||||
case 0x7f:
|
||||
cr = -1; //80
|
||||
if(kanjiType == KANA) chunk = 9;
|
||||
else if(kanjiType == KANJI) chunk = 63;
|
||||
else if(kanjiType == EKANJI) chunk = 143;
|
||||
if (kanjiType == KANA) chunk = 9;
|
||||
else if (kanjiType == KANJI) chunk = 63;
|
||||
else if (kanjiType == EKANJI) chunk = 143;
|
||||
break;
|
||||
case 0x9f:
|
||||
cr = 1; //9e
|
||||
if(kanjiType == KANA) chunk = 2;
|
||||
else if(kanjiType == KANJI) chunk = 32;
|
||||
else if(kanjiType == EKANJI) chunk = 112;
|
||||
if (kanjiType == KANA) chunk = 2;
|
||||
else if (kanjiType == KANJI) chunk = 32;
|
||||
else if (kanjiType == EKANJI) chunk = 112;
|
||||
break;
|
||||
case 0xbf:
|
||||
cr = 1; //be
|
||||
if(kanjiType == KANA) chunk = 18;
|
||||
else if(kanjiType == KANJI) chunk = 48;
|
||||
else if(kanjiType == EKANJI) chunk = 128;
|
||||
if (kanjiType == KANA) chunk = 18;
|
||||
else if (kanjiType == KANJI) chunk = 48;
|
||||
else if (kanjiType == EKANJI) chunk = 128;
|
||||
break;
|
||||
case 0xdf:
|
||||
cr = 1; //de
|
||||
if(kanjiType == KANA) chunk = 10;
|
||||
else if(kanjiType == KANJI) chunk = 64;
|
||||
else if(kanjiType == EKANJI) chunk = 144;
|
||||
if (kanjiType == KANA) chunk = 10;
|
||||
else if (kanjiType == KANJI) chunk = 64;
|
||||
else if (kanjiType == EKANJI) chunk = 144;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -791,11 +791,11 @@ void Sound::setupSound() {
|
||||
if (_scumm->_imuse) {
|
||||
_scumm->_imuse->setBase(_scumm->res.address[rtSound]);
|
||||
|
||||
_scumm->_imuse->setMasterVolume(_sound_volume_master);
|
||||
_scumm->_imuse->set_music_volume(_sound_volume_music);
|
||||
_scumm->_imuse->setMasterVolume(ConfMan.getInt("master_volume"));
|
||||
_scumm->_imuse->set_music_volume(ConfMan.getInt("music_volume"));
|
||||
}
|
||||
_scumm->_mixer->setVolume(_sound_volume_sfx * _sound_volume_master / 255);
|
||||
_scumm->_mixer->setMusicVolume(_sound_volume_music);
|
||||
_scumm->_mixer->setVolume(ConfMan.getInt("sfx_volume") * ConfMan.getInt("master_volume") / 255);
|
||||
_scumm->_mixer->setMusicVolume(ConfMan.getInt("music_volume"));
|
||||
delete _sfxFile;
|
||||
_sfxFile = openSfxFile();
|
||||
}
|
||||
|
@ -101,10 +101,6 @@ public:
|
||||
bool _soundsPaused;
|
||||
byte _sfxMode;
|
||||
|
||||
// FIXME: Should add API to get/set volumes (and automatically
|
||||
// update iMuse/iMuseDigi/Player_v2/SoundMIxer, too
|
||||
int16 _sound_volume_master, _sound_volume_music, _sound_volume_sfx;
|
||||
|
||||
Bundle *_bundle; // FIXME: should be protected but is used by ScummEngine::askForDisk
|
||||
|
||||
public:
|
||||
|
Loading…
x
Reference in New Issue
Block a user