//add another controlled player instance internal override void AppendNewRecording(PlayerController controller) { foreach (PlayerController playerObject in playerControllers) { PlayerHealth existingHealth = playerObject.GetComponent <PlayerHealth>(); existingHealth.RemoveHealthChangeListener(OnPlayerHealthChange); } playerControllers.Add(controller); playerRecordings.Add(new MatchRecordingManager(controller)); projectilesRemaining.Add(maxProjectiles); equipmentRemaining.Add(maxEquipment); PlayerHealth health = controller.GetComponent <PlayerHealth>(); health.AddHealthChangeListener(OnPlayerHealthChange); int index = playerRecordings.Count - 1; controller.FireCallback = () => { if (projectilesRemaining[index] > 0) { projectilesRemaining[index]--; return(true); } return(false); }; controller.EquipmentCallback = () => { if (equipmentRemaining[index] > 0) { equipmentRemaining[index]--; return(true); } return(false); }; }