Expose [fire_event][data] values to WML variable $data

This commit is contained in:
Toom 2025-01-24 22:57:06 +02:00 committed by GitHub
parent 84a05d2269
commit 870951248f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 34 additions and 1 deletions

View File

@ -0,0 +1,2 @@
### WML Engine
* [fire_event][data] content is available in the fired event as $data

View File

@ -147,6 +147,9 @@ function wml_actions.fire_event(cfg)
if w1 then table.insert(data, wml.tag.first(w1)) end
if w2 then table.insert(data, wml.tag.second(w2)) end
local scoped_data <close> = utils.scoped_var("data")
scoped_data:set({wml.parsed(data)})
if cfg.id and cfg.id ~= "" then wesnoth.game_events.fire_by_id(cfg.id, x1, y1, x2, y2, data)
elseif cfg.name and cfg.name ~= "" then wesnoth.game_events.fire(cfg.name, x1, y1, x2, y2, data)
end

View File

@ -331,6 +331,32 @@
[/event]
)}
#####
# API(s) being tested: [event][fire_event][data]
##
# Actions:
# Define a custom event
# Fire the custom event from within another event with [fire_event] using its name and passing [data]test_value=1
##
# Expected end state:
# The custom event has executed and $data.test_value is 1
#####
{GENERIC_UNIT_TEST "event_handlers_in_events__data" (
[event]
name=test
{RETURN ({VARIABLE_CONDITIONAL data.test_value equals 1})}
[/event]
[event]
name=start
[fire_event]
name=test
[data]
test_value=1
[/data]
[/fire_event]
[/event]
)}
#####
# API(s) being tested: [event]delayed_variable_substitution=yes
##

View File

@ -122,13 +122,15 @@
0 effect_type_variation_full_heal
0 effect_type_variation_no_heal
0 event_handlers_in_events_1
0 event_handlers_in_events_3
0 event_handlers_in_events_2
0 event_handlers_in_events_3
0 event_handlers_in_events_4
0 event_handlers_in_events_5
0 event_handlers_in_events_6
0 event_handlers_in_events_7
0 event_handlers_in_events_8
0 event_handlers_in_events_9
0 event_handlers_in_events__data
0 event_handlers_in_events__delayed
0 event_handlers_in_events__delayed__dynamic_name
0 event_handlers_in_events__delayed__dynamic_filter