mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-02 15:37:42 +00:00
Berry animation improve event_manager (#23743)
This commit is contained in:
parent
3ef60018f0
commit
5416890f11
@ -58,13 +58,6 @@ register_to_animation(event_handler)
|
||||
import "core/user_functions" as user_functions
|
||||
register_to_animation(user_functions)
|
||||
|
||||
def animation_init(m)
|
||||
import global
|
||||
global._event_manager = m.event_manager()
|
||||
return m
|
||||
end
|
||||
animation.init = animation_init
|
||||
|
||||
# Import effects
|
||||
import "effects/filled" as filled_animation
|
||||
register_to_animation(filled_animation)
|
||||
@ -151,6 +144,7 @@ register_to_animation(dsl_runtime)
|
||||
def animation_global(name, module_name)
|
||||
import global
|
||||
import introspect
|
||||
import animation
|
||||
|
||||
# First try to find in animation module
|
||||
if (module_name != nil) && introspect.contains(animation, module_name)
|
||||
@ -166,4 +160,24 @@ def animation_global(name, module_name)
|
||||
end
|
||||
animation.global = animation_global
|
||||
|
||||
def animation_init(m)
|
||||
var animation_new = module("animation") # create new non-solidified module
|
||||
animation_new._ntv = m # keep the native module
|
||||
animation_new.event_manager = m.EventManager() # create monad for event manager
|
||||
|
||||
# create a member function that looks in current module then in solidified
|
||||
animation_new.member = def (k)
|
||||
import animation
|
||||
import introspect
|
||||
if introspect.contains(animation._ntv, k)
|
||||
return animation._ntv.(k)
|
||||
else
|
||||
return module("undefined")
|
||||
end
|
||||
end
|
||||
|
||||
return animation_new
|
||||
end
|
||||
animation.init = animation_init
|
||||
|
||||
return animation
|
||||
|
@ -294,10 +294,10 @@ class AnimationEngine
|
||||
|
||||
# Event processing methods
|
||||
def _process_events(current_time)
|
||||
# Process any queued events from the global event manager
|
||||
# Process any queued events from the animation event manager
|
||||
# This is called during fast_loop to handle events asynchronously
|
||||
if global._event_manager != nil
|
||||
global._event_manager._process_queued_events()
|
||||
if animation.event_manager != nil
|
||||
animation.event_manager._process_queued_events()
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -218,43 +218,37 @@ end
|
||||
|
||||
# Event system functions to monad
|
||||
def register_event_handler(event_name, callback_func, priority, condition, metadata)
|
||||
import global
|
||||
return global._event_manager.register_handler(event_name, callback_func, priority, condition, metadata)
|
||||
return animation.event_manager.register_handler(event_name, callback_func, priority, condition, metadata)
|
||||
end
|
||||
|
||||
def unregister_event_handler(handler)
|
||||
import global
|
||||
global._event_manager.unregister_handler(handler)
|
||||
animation.event_manager.unregister_handler(handler)
|
||||
end
|
||||
|
||||
def trigger_event(event_name, event_data)
|
||||
import global
|
||||
global._event_manager.trigger_event(event_name, event_data)
|
||||
animation.event_manager.trigger_event(event_name, event_data)
|
||||
end
|
||||
|
||||
def get_registered_events()
|
||||
return global._event_manager.get_registered_events()
|
||||
return animation.event_manager.get_registered_events()
|
||||
end
|
||||
|
||||
def get_event_handlers(event_name)
|
||||
import global
|
||||
return global._event_manager.get_handlers(event_name)
|
||||
return animation.event_manager.get_handlers(event_name)
|
||||
end
|
||||
|
||||
def clear_all_event_handlers()
|
||||
import global
|
||||
global._event_manager.clear_all_handlers()
|
||||
animation.event_manager.clear_all_handlers()
|
||||
end
|
||||
|
||||
def set_event_active(event_name, active)
|
||||
import global
|
||||
global._event_manager.set_event_active(event_name, active)
|
||||
animation.event_manager.set_event_active(event_name, active)
|
||||
end
|
||||
|
||||
# Export classes
|
||||
return {
|
||||
"event_handler": EventHandler,
|
||||
"event_manager": EventManager,
|
||||
"EventManager": EventManager,
|
||||
'register_event_handler': register_event_handler,
|
||||
'unregister_event_handler': unregister_event_handler,
|
||||
'trigger_event': trigger_event,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@ end
|
||||
|
||||
# Test 2: Event Manager Registration
|
||||
def test_event_manager_registration()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var callback_called = false
|
||||
|
||||
var handler = manager.register_handler("button_press", def(data) callback_called = true end, 0, nil, nil)
|
||||
@ -52,7 +52,7 @@ end
|
||||
|
||||
# Test 3: Event Priority Ordering
|
||||
def test_event_priority_ordering()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var execution_order = []
|
||||
|
||||
# Register handlers with different priorities
|
||||
@ -72,7 +72,7 @@ end
|
||||
|
||||
# Test 4: Event Conditions
|
||||
def test_event_conditions()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var callback_called = false
|
||||
|
||||
# Register handler with condition
|
||||
@ -92,7 +92,7 @@ end
|
||||
|
||||
# Test 5: Global Event Handlers
|
||||
def test_global_event_handlers()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var global_events = []
|
||||
|
||||
# Register global handler
|
||||
@ -157,7 +157,7 @@ end
|
||||
|
||||
# Test 9: Event Handler Deactivation
|
||||
def test_event_handler_deactivation()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var callback_called = false
|
||||
|
||||
var handler = manager.register_handler("deactivation_test", def(data) callback_called = true end, 0, nil, nil)
|
||||
@ -173,7 +173,7 @@ end
|
||||
|
||||
# Test 10: Event Queue Processing
|
||||
def test_event_queue_processing()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var events_processed = []
|
||||
|
||||
# Register handler that triggers another event (tests queue)
|
||||
@ -208,7 +208,7 @@ end
|
||||
|
||||
# Test 12: Event Metadata Handling
|
||||
def test_event_metadata_handling()
|
||||
var manager = global._event_manager
|
||||
var manager = animation.event_manager
|
||||
var received_metadata = nil
|
||||
|
||||
var metadata = {"interval": 1000, "repeat": true}
|
||||
|
Loading…
x
Reference in New Issue
Block a user