Allow for incremental team assembly
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user