aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sword25/input/inputengine.h11
-rw-r--r--engines/sword25/input/inputengine_script.cpp21
-rw-r--r--engines/sword25/input/scummvminput.h8
-rw-r--r--engines/sword25/kernel/callbackregistry.cpp14
-rw-r--r--engines/sword25/kernel/callbackregistry.h18
5 files changed, 36 insertions, 36 deletions
diff --git a/engines/sword25/input/inputengine.h b/engines/sword25/input/inputengine.h
index 3cd1ce6e3f..f88f67de38 100644
--- a/engines/sword25/input/inputengine.h
+++ b/engines/sword25/input/inputengine.h
@@ -49,6 +49,7 @@
#include "sword25/kernel/common.h"
#include "sword25/kernel/service.h"
#include "sword25/kernel/persistable.h"
+#include "sword25/kernel/callbackregistry.h"
namespace Sword25 {
@@ -254,7 +255,7 @@ public:
*/
virtual bool WasKeyDown(unsigned int KeyCode) = 0;
- typedef void (*CharacterCallback)(unsigned char Character);
+ typedef CallbackPtr CharacterCallback;
/**
* Registers a callback function for keyboard input.
@@ -268,15 +269,15 @@ public:
* The input of strings by the user through use of callbacks should be implemented.
* @return Returns true if the function was registered, otherwise false.
*/
- virtual bool RegisterCharacterCallback(CharacterCallback Callback) = 0;
+ virtual bool RegisterCharacterCallback(CallbackPtr Callback) = 0;
/**
* De-registeres a previously registered callback function.
* @return Returns true if the function could be de-registered, otherwise false.
*/
- virtual bool UnregisterCharacterCallback(CharacterCallback Callback) = 0;
+ virtual bool UnregisterCharacterCallback(CallbackPtr Callback) = 0;
- typedef void (*CommandCallback)(KEY_COMMANDS Command);
+ typedef CallbackPtr CommandCallback;
/**
* Registers a callback function for the input of commands that can have influence on the string input
@@ -287,7 +288,7 @@ public:
* The input of strings by the user through the use of callbacks should be implemented.
* @return Returns true if the function was registered, otherwise false.
*/
- virtual bool RegisterCommandCallback(CommandCallback Callback) = 0;
+ virtual bool RegisterCommandCallback(CallbackPtr Callback) = 0;
/**
* Un-register a callback function for the input of commands that can have an influence on the string input.
diff --git a/engines/sword25/input/inputengine_script.cpp b/engines/sword25/input/inputengine_script.cpp
index 0580caa983..a7bd39481b 100644
--- a/engines/sword25/input/inputengine_script.cpp
+++ b/engines/sword25/input/inputengine_script.cpp
@@ -57,8 +57,8 @@ using namespace Lua;
// Callback-Objekte
// -----------------------------------------------------------------------------
-static void TheCharacterCallback(unsigned char Character);
-static void TheCommandCallback(BS_InputEngine::KEY_COMMANDS Command);
+static void TheCharacterCallback(int Character);
+static void TheCommandCallback(int Command);
namespace {
class CharacterCallbackClass : public BS_LuaCallback {
@@ -68,8 +68,7 @@ namespace {
Common::String Character;
protected:
- int PreFunctionInvokation(lua_State *L)
- {
+ int PreFunctionInvokation(lua_State *L) {
lua_pushstring(L, Character.c_str());
return 1;
}
@@ -242,8 +241,8 @@ static int SetMouseY(lua_State *L) {
// -----------------------------------------------------------------------------
-static void TheCharacterCallback(unsigned char Character) {
- CharacterCallbackPtr->Character = Character;
+static void TheCharacterCallback(int Character) {
+ CharacterCallbackPtr->Character = static_cast<unsigned char>(Character);
lua_State *L = static_cast<lua_State *>(BS_Kernel::GetInstance()->GetScript()->GetScriptObject());
CharacterCallbackPtr->InvokeCallbackFunctions(L, 1);
}
@@ -268,8 +267,8 @@ static int UnregisterCharacterCallback(lua_State *L) {
// -----------------------------------------------------------------------------
-static void TheCommandCallback(BS_InputEngine::KEY_COMMANDS Command) {
- CommandCallbackPtr->Command = Command;
+static void TheCommandCallback(int Command) {
+ CommandCallbackPtr->Command = static_cast<BS_InputEngine::KEY_COMMANDS>(Command);
lua_State *L = static_cast<lua_State *>(BS_Kernel::GetInstance()->GetScript()->GetScriptObject());
CommandCallbackPtr->InvokeCallbackFunctions(L, 1);
}
@@ -345,10 +344,8 @@ bool BS_InputEngine::_RegisterScriptBindings() {
if (!BS_LuaBindhelper::AddFunctionsToLib(L, PACKAGE_LIBRARY_NAME, PACKAGE_FUNCTIONS)) return false;
if (!BS_LuaBindhelper::AddConstantsToLib(L, PACKAGE_LIBRARY_NAME, PACKAGE_CONSTANTS)) return false;
- Common::SharedPtr<CharacterCallbackClass> p1(new CharacterCallbackClass(L));
- CharacterCallbackPtr = p1;
- Common::SharedPtr<CharacterCallbackClass> p2(new CommandCallbackClass(L));
- CommandCallbackPtr = p2;
+ CharacterCallbackPtr = Common::SharedPtr<CharacterCallbackClass>(new CharacterCallbackClass(L));
+ CommandCallbackPtr = Common::SharedPtr<CommandCallbackClass>(new CommandCallbackClass(L));
return true;
}
diff --git a/engines/sword25/input/scummvminput.h b/engines/sword25/input/scummvminput.h
index a26060f4ab..b38a54b757 100644
--- a/engines/sword25/input/scummvminput.h
+++ b/engines/sword25/input/scummvminput.h
@@ -65,10 +65,10 @@ public:
virtual bool WasKeyDown(unsigned int KeyCode);
virtual void SetMouseX(int PosX);
virtual void SetMouseY(int PosY);
- virtual bool RegisterCharacterCallback(CharacterCallback Callback);
- virtual bool UnregisterCharacterCallback(CharacterCallback Callback);
- virtual bool RegisterCommandCallback(CommandCallback Callback);
- virtual bool UnregisterCommandCallback(CommandCallback Callback);
+ virtual bool RegisterCharacterCallback(CallbackPtr Callback);
+ virtual bool UnregisterCharacterCallback(CallbackPtr Callback);
+ virtual bool RegisterCommandCallback(CallbackPtr Callback);
+ virtual bool UnregisterCommandCallback(CallbackPtr Callback);
virtual void ReportCharacter(unsigned char Character);
virtual void ReportCommand(KEY_COMMANDS Command);
diff --git a/engines/sword25/kernel/callbackregistry.cpp b/engines/sword25/kernel/callbackregistry.cpp
index 821da1b80c..5c2f9f9119 100644
--- a/engines/sword25/kernel/callbackregistry.cpp
+++ b/engines/sword25/kernel/callbackregistry.cpp
@@ -60,7 +60,7 @@ namespace Sword25 {
// -----------------------------------------------------------------------------
-bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, void *Ptr) {
+bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, CallbackPtr Ptr) {
if (Name == "") {
BS_LOG_ERRORLN("The empty string is not allowed as a callback function name.");
return false;
@@ -82,8 +82,8 @@ bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, v
// -----------------------------------------------------------------------------
-void * BS_CallbackRegistry::ResolveCallbackFunction(const Common::String & Name) const {
- void * Result = FindPtrByName(Name);
+CallbackPtr BS_CallbackRegistry::ResolveCallbackFunction(const Common::String &Name) const {
+ CallbackPtr Result = FindPtrByName(Name);
if (!Result) {
BS_LOG_ERRORLN("There is no callback function with the name \"%s\".", Name.c_str());
@@ -94,7 +94,7 @@ void * BS_CallbackRegistry::ResolveCallbackFunction(const Common::String & Name)
// -----------------------------------------------------------------------------
-Common::String BS_CallbackRegistry::ResolveCallbackPointer(void *Ptr) const {
+Common::String BS_CallbackRegistry::ResolveCallbackPointer(CallbackPtr Ptr) const {
const Common::String &Result = FindNameByPtr(Ptr);
if (Result == "") {
@@ -106,7 +106,7 @@ Common::String BS_CallbackRegistry::ResolveCallbackPointer(void *Ptr) const {
// -----------------------------------------------------------------------------
-void * BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const {
+CallbackPtr BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const {
// Eintrag in der Map finden und den Pointer zurückgeben.
NameToPtrMap::const_iterator It = m_NameToPtrMap.find(Name);
return It == m_NameToPtrMap.end() ? 0 : It->_value;
@@ -114,7 +114,7 @@ void * BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const {
// -----------------------------------------------------------------------------
-Common::String BS_CallbackRegistry::FindNameByPtr(void *Ptr) const {
+Common::String BS_CallbackRegistry::FindNameByPtr(CallbackPtr Ptr) const {
// Eintrag in der Map finden und den Namen zurückgeben.
PtrToNameMap::const_iterator It = m_PtrToNameMap.find(Ptr);
return It == m_PtrToNameMap.end() ? "" : It->second;
@@ -122,7 +122,7 @@ Common::String BS_CallbackRegistry::FindNameByPtr(void *Ptr) const {
// -----------------------------------------------------------------------------
-void BS_CallbackRegistry::StoreCallbackFunction(const Common::String &Name, void *Ptr) {
+void BS_CallbackRegistry::StoreCallbackFunction(const Common::String &Name, CallbackPtr Ptr) {
// Callback-Funktion in beide Maps eintragen.
m_NameToPtrMap[Name] = Ptr;
m_PtrToNameMap[Ptr] = Name;
diff --git a/engines/sword25/kernel/callbackregistry.h b/engines/sword25/kernel/callbackregistry.h
index 4197930ae0..38e917cf15 100644
--- a/engines/sword25/kernel/callbackregistry.h
+++ b/engines/sword25/kernel/callbackregistry.h
@@ -51,6 +51,8 @@ namespace Sword25 {
// Klassendeklaration
// -----------------------------------------------------------------------------
+typedef void (*CallbackPtr)(int Command);
+
class BS_CallbackRegistry {
public:
static BS_CallbackRegistry & GetInstance() {
@@ -58,19 +60,19 @@ public:
return Instance;
}
- bool RegisterCallbackFunction(const Common::String &Name, void * Ptr);
- void * ResolveCallbackFunction(const Common::String &Name) const;
- Common::String ResolveCallbackPointer(void *Ptr) const;
+ bool RegisterCallbackFunction(const Common::String &Name, CallbackPtr Ptr);
+ CallbackPtr ResolveCallbackFunction(const Common::String &Name) const;
+ Common::String ResolveCallbackPointer(CallbackPtr Ptr) const;
private:
- typedef Common::HashMap<Common::String, void *, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> NameToPtrMap;
+ typedef Common::HashMap<Common::String, CallbackPtr, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> NameToPtrMap;
NameToPtrMap m_NameToPtrMap;
- typedef Common::HashMap<void *, Common::String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> PtrToNameMap;
+ typedef Common::HashMap<CallbackPtr, Common::String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> PtrToNameMap;
PtrToNameMap m_PtrToNameMap;
- void * FindPtrByName(const Common::String &Name) const;
- Common::String FindNameByPtr(void * Ptr) const;
- void StoreCallbackFunction(const Common::String & Name, void * Ptr);
+ CallbackPtr FindPtrByName(const Common::String &Name) const;
+ Common::String FindNameByPtr(CallbackPtr Ptr) const;
+ void StoreCallbackFunction(const Common::String &Name, CallbackPtr Ptr);
};
} // End of namespace Sword25