Exemplo n.º 1
0
    /// <summary>
    /// Select the fitest network to view
    /// </summary>
    public void SelectNewTarget()
    {
        Character[] characters = GameMode.main.characters;
        viewTarget = null;

        if (GameMode.main.aliveCount == 0 || characters == null)
        {
            return;
        }

        for (int i = 0; i < characters.Length; ++i)
        {
            // Always select the player to view
            if (characters[i].IsPlayer && characters[i].isAlive)
            {
                viewTarget = characters[i];
                break;
            }

            // Select character with highest score
            if (characters[i].isAlive && (viewTarget == null || characters[i].TotalScore > viewTarget.TotalScore))
            {
                viewTarget = characters[i];
            }
        }


        // Pre-emptively disable eveything
        networkPreview.gameObject.SetActive(false);
        playerPreview.gameObject.SetActive(false);
        treePreview.gameObject.SetActive(false);

        // Update UI
        if (viewTarget == null)
        {
            return;
        }
        PlayerInput      playerInput = viewTarget.GetComponent <PlayerInput>();
        NeuralInputAgent neuralInput = viewTarget.GetComponent <NeuralInputAgent>();
        TreeInputAgent   treeInput   = viewTarget.GetComponent <TreeInputAgent>();


        if (playerInput != null)
        {
            playerPreview.gameObject.SetActive(true);
            playerPreview.SetVisualisation(playerInput);
        }
        if (neuralInput != null)
        {
            networkPreview.gameObject.SetActive(true);
            networkPreview.SetVisualisation(neuralInput);
        }
        if (treeInput != null)
        {
            treePreview.gameObject.SetActive(true);
            treePreview.SetVisualisation(treeInput);
        }
    }