aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/symbian/src
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/symbian/src')
-rw-r--r--backends/platform/symbian/src/SymbianActions.cpp46
-rw-r--r--backends/platform/symbian/src/SymbianActions.h4
-rw-r--r--backends/platform/symbian/src/SymbianOS.cpp29
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;
}