mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Add event_subscribe and event_unsubscribe scripting commands
This commit is contained in:
parent
38cf5b82b2
commit
1eb7458af9
2 changed files with 63 additions and 0 deletions
|
@ -1676,6 +1676,24 @@ Event EV_ScriptThread_UnregisterEv
|
|||
"Unregisters script callback handler for specified event",
|
||||
EV_RETURN
|
||||
);
|
||||
Event EV_ScriptThread_Event_Subscribe
|
||||
(
|
||||
"event_subscribe",
|
||||
EV_DEFAULT,
|
||||
"ss",
|
||||
"eventname script",
|
||||
"Subscribe to the specified event. The specified script will be executed when the event gets triggered.",
|
||||
EV_NORMAL
|
||||
);
|
||||
Event EV_ScriptThread_Event_Unsubscribe
|
||||
(
|
||||
"event_unsubscribe",
|
||||
EV_DEFAULT,
|
||||
"ss",
|
||||
"eventname script",
|
||||
"Unsubscribe the script from the specified event.",
|
||||
EV_NORMAL
|
||||
);
|
||||
Event EV_ScriptThread_Conprintf
|
||||
(
|
||||
"conprintf",
|
||||
|
@ -2193,6 +2211,8 @@ CLASS_DECLARATION(Listener, ScriptThread, NULL) {
|
|||
{&EV_ScriptThread_TypeOf, &ScriptThread::TypeOfVariable },
|
||||
{&EV_ScriptThread_RegisterEv, &ScriptThread::RegisterEvent },
|
||||
{&EV_ScriptThread_UnregisterEv, &ScriptThread::UnregisterEvent },
|
||||
{&EV_ScriptThread_Event_Subscribe, &ScriptThread::SubscribeEvent },
|
||||
{&EV_ScriptThread_Event_Unsubscribe, &ScriptThread::UnsubscribeEvent },
|
||||
{&EV_ScriptThread_CancelWaiting, &ScriptThread::CancelWaiting },
|
||||
{&EV_ScriptThread_GetTime, &ScriptThread::GetTime },
|
||||
{&EV_ScriptThread_GetTimeZone, &ScriptThread::GetTimeZone },
|
||||
|
@ -6855,6 +6875,8 @@ void ScriptThread::RegisterEvent(Event *ev)
|
|||
char eventname_full[64];
|
||||
scriptedEvType_t evType;
|
||||
|
||||
ScriptDeprecatedAltMethod("event_subscribe");
|
||||
|
||||
eventname = ev->GetString(1);
|
||||
|
||||
evType = EventNameToType(eventname, eventname_full);
|
||||
|
@ -6886,6 +6908,8 @@ void ScriptThread::UnregisterEvent(Event *ev)
|
|||
int numArgs = 0;
|
||||
scriptedEvType_t evType;
|
||||
|
||||
ScriptDeprecatedAltMethod("event_unsubscribe");
|
||||
|
||||
eventname = ev->GetString(1);
|
||||
|
||||
evType = EventNameToType(eventname, NULL);
|
||||
|
@ -6919,6 +6943,42 @@ void ScriptThread::UnregisterEvent(Event *ev)
|
|||
ev->AddInteger(0);
|
||||
}
|
||||
|
||||
void ScriptThread::SubscribeEvent(Event *ev)
|
||||
{
|
||||
str eventName;
|
||||
ScriptDelegate *delegate;
|
||||
ScriptThreadLabel label;
|
||||
|
||||
eventName = ev->GetString(1);
|
||||
|
||||
delegate = ScriptDelegate::GetScriptDelegate(eventName);
|
||||
if (!delegate) {
|
||||
throw ScriptException("Invalid event '%s'", eventName.c_str());
|
||||
}
|
||||
|
||||
label.SetThread(ev->GetValue(2));
|
||||
|
||||
delegate->Register(label);
|
||||
}
|
||||
|
||||
void ScriptThread::UnsubscribeEvent(Event *ev)
|
||||
{
|
||||
str eventName;
|
||||
ScriptDelegate* delegate;
|
||||
ScriptThreadLabel label;
|
||||
|
||||
eventName = ev->GetString(1);
|
||||
|
||||
delegate = ScriptDelegate::GetScriptDelegate(eventName);
|
||||
if (!delegate) {
|
||||
throw ScriptException("Invalid event '%s'", eventName.c_str());
|
||||
}
|
||||
|
||||
label.SetThread(ev->GetValue(2));
|
||||
|
||||
delegate->Unregister(label);
|
||||
}
|
||||
|
||||
void ScriptThread::TypeOfVariable(Event *ev)
|
||||
{
|
||||
int numArgs = 0;
|
||||
|
|
|
@ -345,6 +345,9 @@ public:
|
|||
void UnregisterEvent(Event *ev);
|
||||
void VisionGetNaked(Event *ev);
|
||||
void VisionSetNaked(Event *ev);
|
||||
|
||||
void SubscribeEvent(Event *ev);
|
||||
void UnsubscribeEvent(Event *ev);
|
||||
};
|
||||
|
||||
class OSFile : public Listener
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue