예제 #1
0
    public void Init(int playerID, Color playerColor, PlayerNetworkManager nnManager)
    {
        id         = playerID;
        color      = playerColor;
        ownedNodes = new Dictionary <int, NodeController>(GameManager.instance.numNodes);

        m_borderNodes = new Dictionary <int, NodeController>(GameManager.instance.numNodes);
        borderNodes   = new ReadOnlyDictionary <int, NodeController>(m_borderNodes);

        // Init resource pools
        m_resourcePoolsList = new List <ResourceValue>(GameManager.instance.resourceList.Count);
        m_resourcePoolsDict = new Dictionary <int, ResourceValue>(GameManager.instance.resourceList.Count);
        resourcePoolsList   = new ReadOnlyCollection <ResourceValue>(m_resourcePoolsList);
        resourcePoolsDict   = new ReadOnlyDictionary <int, ResourceValue>(m_resourcePoolsDict);

        m_resourceRatesList = new List <ResourceValue>(GameManager.instance.resourceList.Count);
        m_resourceRatesDict = new Dictionary <int, ResourceValue>(GameManager.instance.resourceList.Count);
        resourceRatesList   = new ReadOnlyCollection <ResourceValue>(m_resourceRatesList);
        resourceRatesDict   = new ReadOnlyDictionary <int, ResourceValue>(m_resourceRatesDict);

        this.nnManager = nnManager;
        this.nnManager.Init(this);

        Reset();
    }
예제 #2
0
 public void RegisterPlayer(string id, PlayerNetworkManager manager)
 {
     try
     {
         _playerMap.Add(id, manager);
     }
     catch (ArgumentException)
     {
         Debug.Log($"Player {id} already registered");
     }
 }
예제 #3
0
    public void MarkAsReady(PlayerNetworkManager readyingPlayer, NetworkConnection client)
    {
        readyPlayers.Add(readyingPlayer);
        Debug.Log("Ready Players: " + readyPlayers.Count);
        readyingPlayer.SetPlayerNetworkID(client.connectionId);

        if (readyPlayers.Count == 2)
        {
            StartGame();
        }
    }
예제 #4
0
    private void Awake()
    {
        _smoothSync     = gameObject.GetComponent <SmoothSync>();
        _gunControl     = gameObject.GetComponent <PlayerGunControl>();
        rigidbody       = gameObject.GetComponent <Rigidbody>();
        _networkManager = gameObject.GetComponent <PlayerNetworkManager>();
        renderer        = gameObject.GetComponentInChildren <Renderer>();
        baseMaterial    = renderer.material;
        cam             = Camera.main;

        footstep = footstepTimer;
    }
예제 #5
0
    // Start is called before the first frame update
    void Start()
    {
        DontDestroyOnLoad(this);
        PlayerNetworkID = -1;
        Debug.Log(isLocalPlayer);

        if (isLocalPlayer)
        {
            PlayerNetworkManager._instance = this;
        }
        SceneManager.LoadScene(1);
    }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.Q))
        {
            PlayerNetworkManager.getInstance().SendObjectEvent(
                new ObjectMessage("Open", "DoorA"));
        }

        if (Input.GetKeyUp(KeyCode.E))
        {
            PlayerNetworkManager.getInstance().SendObjectEvent(
                new ObjectMessage("SpawnItem", "Key", PlayerNetworkManager.getInstance().CoopPlayerID, "RoomA", "3"));
        }
    }
예제 #7
0
 void Update()
 {
     if (playerNetworkManager == null)
     {
         foreach (GameObject playerNetwork in GameObject.FindGameObjectsWithTag("PlayerNetworkManager"))
         {
             playerNetworkManager = playerNetwork.GetComponent <PlayerNetworkManager>();
             if (playerNetworkManager.isLocalPlayer)
             {
                 break;
             }
         }
     }
 }
    public void Awake()
    {
        if (instance != null)
        {
            Destroy(gameObject);
            return;
        }
        instance = this;

        // Init graph
        if (graphMaker == null)
        {
            graphMaker = new GameObject("Graph Maker").AddComponent <GraphMaker>();
        }
        graphMaker.GenerateBoard(boardDimensions.x, boardDimensions.y, 2.5f);
        winningScore = graphMaker.graphPoints.Count;

        InitializeResources();
        InitializeBuildings();

        // Create nodes
        nodes = new List <NodeController>(graphMaker.numPoints);
        for (int i = 0; i < graphMaker.graphPoints.Count; ++i)
        {
            nodes.Add(Instantiate(nodePrefab).GetComponent <NodeController>());
            var point = graphMaker.graphPoints[i];
            var node  = nodes[nodes.Count - 1];
            node.transform.position = point.position;
            node.transform.SetParent(transform);
            node.Init(i, point, nodeStartColor);
        }

        // Init players
        players = new List <Player>(playerNetworks.Count);

        bestNetwork.Init(null);
        for (int i = 0; i < numPlayersToCreate; ++i)
        {
            players.Add(new GameObject($"Player {i.ToString()}").AddComponent <Player>());
            playerNetworks.Add(PlayerNetworkManager.Copy($"Player {i.ToString()} Networks", bestNetwork));
            players[i].Init(i, playerColors[i], playerNetworks[i]);
            if (i > 0)
            {
                playerNetworks[i].MutateNetworksAsexual(0.2f, 0.02f, 0.001f, false);
            }
        }

        StartGame();
    }
예제 #9
0
    public void ReadyUpButton()
    {
        Text buttonText = UIButton.GetComponentInChildren <Text>();

        if (PlayerNetworkManager.getInstance().PlayerNetworkID == -1)
        {
            PlayerNetworkManager.getInstance().SetAsReady();
            buttonText.text = "Ready";
        }
        else
        {
            PlayerNetworkManager.getInstance().SetAsNotReady();
            buttonText.text = "Not Ready";
        }
    }
    public static PlayerNetworkManager Copy(string name, PlayerNetworkManager orig)
    {
        PlayerNetworkManager pnm = new GameObject(name).AddComponent <PlayerNetworkManager>();

        pnm.nnDevelopment = new GameObject("Development").AddComponent <NeuralNetwork>();
        pnm.nnDevelopment.transform.parent = pnm.transform;

        pnm.nnExpansion = new GameObject("Expansion").AddComponent <NeuralNetwork>();
        pnm.nnExpansion.transform.parent = pnm.transform;

        pnm.nnThreatLevel = new GameObject("ThreatLevel").AddComponent <NeuralNetwork>();
        pnm.nnThreatLevel.transform.parent = pnm.transform;

        pnm.CopyNetworksFrom(orig);
        return(pnm);
    }
예제 #11
0
    public void StartGame()
    {
        PlayerNetworkManager pnm     = PlayerManager.Instance.GetPlayerNetworkManager();
        PlayerDetails        details = PlayerManager.Instance.GetLocalPlayer().GetPlayerDetails();

        pnm.AllPlayersReady -= StartGame;
        m_RespawnPoint       = pnm.GetSpawnPosition(details.GetPosition());

        m_StartZ = m_RespawnPoint.position.z;
        m_EndZ   = m_Endpoint.transform.position.z;

        foreach (Player player in PlayerManager.Instance.GetAllPlayers())
        {
            m_CurrentProgress.Add(player, 0.0f);
        }

        Debug.Log("Game started");
        m_GameStarted = true;
        GameStarted?.Invoke(GameMode.GAMEMODE_ZOOM_RACING_CIRCUIT_BREAKER);
        m_TowerCheckpoints[0].Activate();
    }
예제 #12
0
            public void SpawnPlayer(int id, string username, Vector3 position, Quaternion rotation)
            {
                GameObject player;

                if (id == instance.networkManager.GetClient().myId)
                {
                    player = Instantiate(instance.playerPrefab, position, rotation);
                    instance.playerController = player.GetComponent <PlayerController>();
                }
                else
                {
                    // player = Insta
                    player = null;
                }
                // localPlayer = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);
                // playerController = localPlayer.GetComponent<PlayerController>();

                PlayerNetworkManager pnm = player.GetComponent <PlayerNetworkManager>();

                pnm.Initialize(id, username);
                players.Add(id, pnm);
            }
예제 #13
0
 public void MarkAsNotReady(PlayerNetworkManager notReadyingPlayer, NetworkConnection client)
 {
     readyPlayers.Remove(notReadyingPlayer);
     Debug.Log("Ready Players: " + readyPlayers.Count);
     notReadyingPlayer.SetPlayerNetworkID(-1);
 }
 public void CopyNetworksFrom(PlayerNetworkManager pnm)
 {
     nnExpansion.CopyNetworkFrom(pnm.nnExpansion);
     nnDevelopment.CopyNetworkFrom(pnm.nnDevelopment);
     nnThreatLevel.CopyNetworkFrom(pnm.nnThreatLevel);
 }
예제 #15
0
 private void Awake()
 {
     _networkManager = gameObject.GetComponent <PlayerNetworkManager>();
 }
 public void SaveCurrentBest(PlayerNetworkManager winner)
 {
     bestNetwork.CopyNetworkConnectionsFrom(winner);
     bestNetwork.completionTime = winner.completionTime;
 }