[FIX] Modificada l'estructura de trigger_event per a incorporar funcions init i update

This commit is contained in:
2026-04-26 11:36:57 +02:00
parent 6b6f6e6721
commit ca4169f2f1
2 changed files with 36 additions and 15 deletions

View File

@@ -212,7 +212,10 @@ function stages.stage1_boss()
boss.reason=""
boss.enabled=true
boss:fight()
trigger_event.new("Premiere Boss 1",premiere_boss1_trigger)
trigger_event.new("Premiere Boss 1",
trigger_ev.premiere_boss1_trigger,
trigger_ev.premiere_healer_init,
trigger_ev.premiere_healer_update)
end
end

View File

@@ -2,24 +2,29 @@ trigger_event = {
list = {},
}
function trigger_event.new ( _name, _trigger_func )
trigger_ev = {}
function trigger_event.new ( _name, _tr_func, _tr_init, _tr_update )
table.insert( trigger_event.list, {
name = _name,
trigger = _trigger_func,
trigger = _tr_func,
init = _tr_init,
update = _tr_update,
enabled = true,
running = false
running = false,
})
end
function trigger_event.update ()
for _,t in ipairs(trigger_event.list) do
if t.enabled and not t.running then
t.running = t.trigger()
t.running = t:trigger()
end
end
end
function trigger_event.disable(_name)
print("Disabling ".._name)
for _,t in ipairs(trigger_event.list) do
if t.name == _name then
print("Disabled trigger ".._name)
@@ -30,20 +35,20 @@ function trigger_event.disable(_name)
end
-- PREMIERE HEALER - BOSS 1 TRIGGER
function premiere_boss1_trigger()
print(abad.objects.clau_premiere)
function trigger_ev:premiere_boss1_trigger( )
if stages.boss_loaded and
abad.objects.clau_premiere~=nil and
--abad.objects.clau_premiere~=nil and
abad.energia<=abad.max_energia/2
then
premiere_healer_init()
self:init()
return true
end
return false
end
function premiere_healer_init()
if premiere.update==premiere_update_healer then return true end
function trigger_ev:premiere_healer_init()
-- if premiere.update==premiere_update_healer then return true end
-- Guardar l'estat de Premiere
premiere.from_hab = premiere.hab
premiere.from_x = premiere.x
premiere.from_y = premiere.y
@@ -56,10 +61,15 @@ function premiere_healer_init()
premiere.x=world_x
premiere.y=world_y
premiere.health_wait = 100
premiere.update = premiere_update_healer
premiere.update = self.update
-- El trigger el deshabilitaria al acabar el update
-- pero en estos moments no se com fer-ho
-- perque l'update s'executa dins de premiere i no
-- dins del trigger
trigger_event.disable(self.name)
end
function premiere_update_healer()
function trigger_ev:premiere_healer_update()
-- Esperar mentres dona la vida
if premiere.health_wait>0 and premiere.health_wait<100 then
premiere.health_wait = premiere.health_wait - 1
@@ -84,10 +94,18 @@ function premiere_update_healer()
premiere.health_wait = premiere.health_wait - 1
elseif hab >= 56 then
-- Restaurar a Premiere
trigger_event.disable("Premiere Boss 1")
premiere.hab = premiere.from_hab
premiere.x = premiere.from_x
premiere.y = premiere.from_y
premiere.update = premiere.from_update
end
end
function premiere_dialeg1_trigger ()
if h_collision( premiere, abad) and
distancia ( premiere, abad )<=150
then
return true
end
return false
end