//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);
        };
    }