Fix callbacks for scripting

This commit is contained in:
momo5502 2019-01-23 22:27:14 +01:00
parent 2eb8988d73
commit 8e3f2f83c4
6 changed files with 133 additions and 133 deletions

View File

@ -26,16 +26,15 @@ namespace game
chai->add(chaiscript::fun(&entity::on_notify), "onNotify"); chai->add(chaiscript::fun(&entity::on_notify), "onNotify");
chai->add(chaiscript::fun([](const entity& ent, const std::string& event, chai->add(chaiscript::fun([](const entity& ent, const std::string& event,
const std::function<void( const std::function<void(
const std::vector<chaiscript::Boxed_Value>&)>& std::vector<chaiscript::Boxed_Value>)>&
callback) callback)
{ {
return ent.on_notify(event, callback, false); return ent.on_notify(event, callback, false);
}), "onNotify"); }), "onNotify");
chai->add(chaiscript::fun([context](const std::string& event, chai->add(chaiscript::fun([context](const std::string& event,
const std::function<void(const entity&, const std::function<void(
const std::vector<chaiscript:: entity, std::vector<chaiscript::Boxed_Value>)>&
Boxed_Value>&)>&
callback) callback)
{ {
generic_event_listener listener; generic_event_listener listener;
@ -47,9 +46,8 @@ namespace game
}), "onNotify"); }), "onNotify");
chai->add(chaiscript::fun([context](const std::string& event, chai->add(chaiscript::fun([context](const std::string& event,
const std::function<void(const entity&, const std::function<void(
const std::vector<chaiscript:: entity, std::vector<chaiscript::Boxed_Value>)>&
Boxed_Value>&)>&
callback, const bool is_volatile) callback, const bool is_volatile)
{ {
generic_event_listener listener; generic_event_listener listener;

View File

@ -66,7 +66,7 @@ namespace game
} }
event_listener_handle entity::on_notify(const std::string& event, event_listener_handle entity::on_notify(const std::string& event,
const std::function<void(const std::vector<chaiscript::Boxed_Value>&)>& const std::function<void(std::vector<chaiscript::Boxed_Value>)>&
callback, callback,
const bool is_volatile) const bool is_volatile)
const const

View File

@ -21,7 +21,7 @@ namespace game
entity& operator=(entity&& other) noexcept; entity& operator=(entity&& other) noexcept;
event_listener_handle on_notify(const std::string& event, event_listener_handle on_notify(const std::string& event,
const std::function<void(const std::vector<chaiscript::Boxed_Value>&)>& callback, const std::function<void(std::vector<chaiscript::Boxed_Value>)>& callback,
bool is_volatile) const; bool is_volatile) const;
unsigned int get_entity_id() const; unsigned int get_entity_id() const;

View File

@ -11,9 +11,11 @@ namespace game
chai->add(chaiscript::user_type<event_listener_handle>(), "_event_listener_handle"); chai->add(chaiscript::user_type<event_listener_handle>(), "_event_listener_handle");
chai->add(chaiscript::constructor<event_listener_handle()>(), "_event_listener_handle"); chai->add(chaiscript::constructor<event_listener_handle()>(), "_event_listener_handle");
chai->add(chaiscript::constructor<event_listener_handle(const event_listener_handle&)>(), "_event_listener_handle"); chai->add(chaiscript::constructor<event_listener_handle(const event_listener_handle&)>(),
"_event_listener_handle");
chai->add(chaiscript::fun([](event_listener_handle& lhs, const event_listener_handle& rhs) -> event_listener_handle& chai->add(chaiscript::fun(
[](event_listener_handle& lhs, const event_listener_handle& rhs) -> event_listener_handle&
{ {
return lhs = rhs; return lhs = rhs;
}), "="); }), "=");
@ -82,14 +84,14 @@ namespace game
{ {
listener.id = ++this->current_listener_id_; listener.id = ++this->current_listener_id_;
this->event_listeners_.add(listener); this->event_listeners_.add(listener);
return { listener.id }; return {listener.id};
} }
event_listener_handle event_handler::add_event_listener(generic_event_listener listener) event_listener_handle event_handler::add_event_listener(generic_event_listener listener)
{ {
listener.id = ++this->current_listener_id_; listener.id = ++this->current_listener_id_;
this->generic_event_listeners_.add(listener); this->generic_event_listeners_.add(listener);
return { listener.id }; return {listener.id};
} }
void event_handler::remove(const event_listener_handle& handle) void event_handler::remove(const event_listener_handle& handle)

View File

@ -20,7 +20,7 @@ namespace game
public: public:
std::string event = {}; std::string event = {};
unsigned int entity_id = 0; unsigned int entity_id = 0;
std::function<void(const std::vector<chaiscript::Boxed_Value>&)> callback = {}; std::function<void(std::vector<chaiscript::Boxed_Value>)> callback = {};
bool is_volatile = false; bool is_volatile = false;
}; };
@ -28,7 +28,7 @@ namespace game
{ {
public: public:
std::string event = {}; std::string event = {};
std::function<void(const entity&, const std::vector<chaiscript::Boxed_Value>&)> callback = {}; std::function<void(entity, std::vector<chaiscript::Boxed_Value>)> callback = {};
bool is_volatile = false; bool is_volatile = false;
}; };
@ -46,7 +46,7 @@ namespace game
context* context_; context* context_;
std::atomic_int64_t current_listener_id_ = 0; std::atomic_int64_t current_listener_id_ = 0;
utils::concurrent_list<event_listener> event_listeners_; utils::concurrent_list<event_listener> event_listeners_;
utils::concurrent_list<generic_event_listener> generic_event_listeners_; utils::concurrent_list<generic_event_listener> generic_event_listeners_;
void dispatch_to_specific_listeners(event* event, const std::vector<chaiscript::Boxed_Value>& arguments); void dispatch_to_specific_listeners(event* event, const std::vector<chaiscript::Boxed_Value>& arguments);

View File

@ -21,7 +21,7 @@ public:
html_frame(); html_frame();
virtual ~html_frame(); virtual ~html_frame();
void initialize(const HWND window); void initialize(HWND window);
void resize(DWORD width, DWORD height) const; void resize(DWORD width, DWORD height) const;
bool load_url(const std::string& url) const; bool load_url(const std::string& url) const;