Allow for incremental team assembly

This commit is contained in:
Oliver Brakmann
2014-03-12 22:34:48 +01:00
parent 00bc3f71fe
commit 64a18389b7

View File

@@ -7,22 +7,24 @@ Team.New = function(actors)
team.OnAnyKilled = { } team.OnAnyKilled = { }
team.OnAllRemovedFromWorld = { } team.OnAllRemovedFromWorld = { }
team.OnAnyRemovedFromWorld = { } team.OnAnyRemovedFromWorld = { }
Team.AddActorEventHandlers(team) Team.Do(team, function(actor) Team.AddActorEventHandlers(team, actor) end)
return team return team
end end
Team.AddActorEventHandlers = function(team) Team.Add = function(team, actor)
Team.Do(team, function(actor) table.insert(team.Actors, actor)
Team.AddActorEventHandlers(team, actor)
end
Actor.OnKilled(actor, function() Team.AddActorEventHandlers = function(team, actor)
Team.InvokeHandlers(team.OnAnyKilled) Actor.OnKilled(actor, function()
if Team.AllAreDead(team) then Team.InvokeHandlers(team.OnAllKilled) end Team.InvokeHandlers(team.OnAnyKilled)
end) if Team.AllAreDead(team) then Team.InvokeHandlers(team.OnAllKilled) end
end)
Actor.OnRemovedFromWorld(actor, function() Actor.OnRemovedFromWorld(actor, function()
Team.InvokeHandlers(team.OnAnyRemovedFromWorld) Team.InvokeHandlers(team.OnAnyRemovedFromWorld)
if not Team.AnyAreInWorld(team) then Team.InvokeHandlers(team.OnAllRemovedFromWorld) end if not Team.AnyAreInWorld(team) then Team.InvokeHandlers(team.OnAllRemovedFromWorld) end
end)
end) end)
end end