diff options
Diffstat (limited to 'backends/platform/symbian/src')
-rw-r--r-- | backends/platform/symbian/src/SymbianActions.cpp | 46 | ||||
-rw-r--r-- | backends/platform/symbian/src/SymbianActions.h | 4 | ||||
-rw-r--r-- | backends/platform/symbian/src/SymbianOS.cpp | 29 |
3 files changed, 48 insertions, 31 deletions
diff --git a/backends/platform/symbian/src/SymbianActions.cpp b/backends/platform/symbian/src/SymbianActions.cpp index cb2652eac4..3809253032 100644 --- a/backends/platform/symbian/src/SymbianActions.cpp +++ b/backends/platform/symbian/src/SymbianActions.cpp @@ -47,7 +47,7 @@ const Common::String actionNames[] = { "Save", "Skip", "Zone", - "FT Cheat", + "Multi Function", "Swap character", "Skip text", "Pause", @@ -122,7 +122,7 @@ void SymbianActions::initInstanceMain(OSystem *mainSystem) { // Skip _action_enabled[ACTION_SKIP] = true; - _key_action[ACTION_SKIP].setAscii(SDLK_ESCAPE); + _key_action[ACTION_SKIP].setKey(SDLK_ESCAPE); } void SymbianActions::initInstanceGame() { @@ -138,7 +138,8 @@ void SymbianActions::initInstanceGame() { bool is_cine = (gameid == "cine"); bool is_touche = (gameid == "touche"); bool is_agi = (gameid == "agi"); - + bool is_parallaction = (gameid == "parallaction"); + Actions::initInstanceGame(); // Initialize keys for different actions @@ -149,51 +150,58 @@ void SymbianActions::initInstanceGame() { _action_enabled[ACTION_SAVE] = true; if (is_queen) { - _key_action[ACTION_SAVE].setAscii(SDLK_F1); // F1 key for FOTAQ + _key_action[ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F1 key for FOTAQ } else if (is_sky) { - _key_action[ACTION_SAVE].setAscii(63); + _key_action[ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); } else if (is_cine) { - _key_action[ACTION_SAVE].setAscii(SDLK_F10); // F10 + _key_action[ACTION_SAVE].setKey(Common::ASCII_F10, SDLK_F10); // F10 } else if (is_agi) { - _key_action[ACTION_SAVE].setAscii(SDLK_ESCAPE); + _key_action[ACTION_SAVE].setKey(Common::ASCII_ESCAPE, SDLK_ESCAPE); + } else if (is_parallaction) { + _key_action[ACTION_SAVE].setKey('s', SDLK_s); } else { - _key_action[ACTION_SAVE].setAscii(SDLK_F5); // F5 key + _key_action[ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F5 key } } // Enable fast mode _action_enabled[ACTION_FASTMODE] = true; - _key_action[ACTION_FASTMODE].setAscii('f'); - _key_action[ACTION_FASTMODE].setFlags(KMOD_CTRL); + _key_action[ACTION_FASTMODE].setKey('f', SDLK_f, KMOD_CTRL); // Swap character _action_enabled[ACTION_SWAPCHAR] = true; - _key_action[ACTION_SWAPCHAR].setAscii('b'); // b + _key_action[ACTION_SWAPCHAR].setKey('b'); // b // Zone _action_enabled[ACTION_ZONE] = true; - // FT Cheat - _action_enabled[ACTION_FT_CHEAT] = true; - _key_action[ACTION_FT_CHEAT].setAscii(86); // shift-V + // Multi function key + _action_enabled[ACTION_MULTI] = true; + if (is_agi) + _key_action[ACTION_MULTI].setKey(SDLK_PAUSE); // agi: show predictive dialog + else if (is_gob) + _key_action[ACTION_MULTI].setKey(Common::ASCII_F1, SDLK_F1); // bargon : F1 to start + else if (gameid == "atlantis") + _key_action[ACTION_MULTI].setKey(0, SDLK_KP0); // fate of atlantis : Ins to sucker-punch + else + _key_action[ACTION_MULTI].setKey('V', SDLK_v, KMOD_SHIFT); // FT cheat : shift-V // Enable debugger _action_enabled[ACTION_DEBUGGER] = true; - _key_action[ACTION_DEBUGGER].setAscii('d'); - _key_action[ACTION_DEBUGGER].setFlags(KMOD_CTRL); + _key_action[ACTION_DEBUGGER].setKey('d', SDLK_d, KMOD_CTRL); // Skip text if (!is_cine) _action_enabled[ACTION_SKIP_TEXT] = true; if (is_queen) { - _key_action[ACTION_SKIP_TEXT].setAscii(SDLK_SPACE); + _key_action[ACTION_SKIP_TEXT].setKey(SDLK_SPACE); } else { - _key_action[ACTION_SKIP_TEXT].setAscii(SDLK_PERIOD); + _key_action[ACTION_SKIP_TEXT].setKey(SDLK_PERIOD); } // Pause - _key_action[ACTION_PAUSE].setAscii(' '); + _key_action[ACTION_PAUSE].setKey(' '); _action_enabled[ACTION_PAUSE] = true; // Quit diff --git a/backends/platform/symbian/src/SymbianActions.h b/backends/platform/symbian/src/SymbianActions.h index 0facde763c..cbd333e500 100644 --- a/backends/platform/symbian/src/SymbianActions.h +++ b/backends/platform/symbian/src/SymbianActions.h @@ -34,7 +34,7 @@ namespace GUI { -#define ACTION_VERSION 6 +#define ACTION_VERSION 7 enum actionType { ACTION_UP = 0, @@ -46,7 +46,7 @@ enum actionType { ACTION_SAVE, ACTION_SKIP, ACTION_ZONE, - ACTION_FT_CHEAT, + ACTION_MULTI, ACTION_SWAPCHAR, ACTION_SKIP_TEXT, ACTION_PAUSE, diff --git a/backends/platform/symbian/src/SymbianOS.cpp b/backends/platform/symbian/src/SymbianOS.cpp index 737795182e..c992c97316 100644 --- a/backends/platform/symbian/src/SymbianOS.cpp +++ b/backends/platform/symbian/src/SymbianOS.cpp @@ -88,8 +88,10 @@ void OSystem_SDL_Symbian::setFeatureState(Feature f, bool enable) { else { } - - return; + break; + case kFeatureDisableKeyFiltering: + GUI::Actions::Instance()->beginMapping(enable); + break;; default: OSystem_SDL::setFeatureState(f, enable); } @@ -104,6 +106,7 @@ OSystem_SDL_Symbian::OSystem_SDL_Symbian() :_channels(0),_stereo_mix_buffer(0) { } void OSystem_SDL_Symbian::initBackend() { + ConfMan.set("extrapath", Symbian::GetExecutablePath()); ConfMan.setBool("FM_high_quality", false); #if !defined(S60) || defined(S60V3) // S60 has low quality as default ConfMan.setBool("FM_medium_quality", true); @@ -143,7 +146,7 @@ bool OSystem_SDL_Symbian::setGraphicsMode(const char * /*name*/) { return OSystem_SDL::setGraphicsMode(getDefaultGraphicsMode()); } -void OSystem_SDL_Symbian::quitWithErrorMsg(const char *msg) { +void OSystem_SDL_Symbian::quitWithErrorMsg(const char * /*aMsg*/) { CEikonEnv::Static()->AlertWin(_L("quitWithErrorMsg()")) ; @@ -345,16 +348,21 @@ bool OSystem_SDL_Symbian::remapKey(SDL_Event &ev, Common::Event &event) { } return true; - + case GUI::ACTION_MULTI: { + GUI::Key &key = GUI::Actions::Instance()->getKeyAction(loop); + // if key code is pause, then change event to interactive or just fall through + if(key.keycode() == SDLK_PAUSE) { + event.type = Common::EVENT_PREDICTIVE_DIALOG; + return true; + } + } case GUI::ACTION_SAVE: case GUI::ACTION_SKIP: - case GUI::ACTION_FT_CHEAT: case GUI::ACTION_SKIP_TEXT: case GUI::ACTION_PAUSE: case GUI::ACTION_SWAPCHAR: case GUI::ACTION_FASTMODE: - case GUI::ACTION_DEBUGGER: - { + case GUI::ACTION_DEBUGGER: { GUI::Key &key = GUI::Actions::Instance()->getKeyAction(loop); ev.key.keysym.sym = (SDLKey) key.ascii(); ev.key.keysym.scancode= key.keycode(); @@ -426,7 +434,7 @@ struct TSymbianFileEntry { FILE* symbian_fopen(const char* name, const char* mode) { TSymbianFileEntry* fileEntry = new TSymbianFileEntry; - + if (fileEntry != NULL) { TInt modeLen = strlen(mode); @@ -446,7 +454,9 @@ FILE* symbian_fopen(const char* name, const char* mode) { if ((modeLen > 1 && mode[1] == '+') || (modeLen > 2 && mode[2] == '+')) { fileMode = fileMode| EFileWrite; } - + + fileMode = fileMode| EFileShareAny; + switch(mode[0]) { case 'a': if (fileEntry->iFileHandle.Open(CEikonEnv::Static()->FsSession(), tempFileName, fileMode) != KErrNone) { @@ -471,7 +481,6 @@ FILE* symbian_fopen(const char* name, const char* mode) { break; } } - return (FILE*) fileEntry; } |