Example #1
0
        /// <summary>
        /// Called after Awake() when the script instance is enabled.
        /// Initializes variables then loads the field and robot as well as setting up replay features.
        /// </summary>
        public override void Start()
        {
            AppModel.ClearError();

            //getting bullet physics information
            physicsWorld = BPhysicsWorld.Get();
            ((DynamicsWorld)physicsWorld.world).SetInternalTickCallback(BPhysicsTickListener.Instance.PhysicsTick);

            //setting up raycast robot tick callback
            BPhysicsTickListener.Instance.OnTick -= BRobotManager.Instance.UpdateRaycastRobots;
            BPhysicsTickListener.Instance.OnTick += BRobotManager.Instance.UpdateRaycastRobots;

            //starts a new instance of unity packet which receives packets from the driver station
            unityPacket = new UnityPacket();
            unityPacket.Start();

            SpawnedRobots = new List <NetworkRobot>();

            //loads all the controls
            Controls.Load();

            //initializes the dynamic camera
            DynamicCameraObject          = GameObject.Find("Main Camera");
            dynamicCamera                = DynamicCameraObject.AddComponent <DynamicCamera>();
            DynamicCamera.ControlEnabled = true;

            IsMetric = PlayerPrefs.GetString("Measure").Equals("Metric") ? true : false;

            Network       = GameObject.Find("NetworkManager").GetComponent <MultiplayerNetwork>();
            Network.State = this;
        }
Example #2
0
        /// <summary>
        /// Ends the <see cref="LobbyState"/>.
        /// </summary>
        public void OnBackButtonPressed()
        {
            MultiplayerNetwork network = MultiplayerNetwork.Instance;

            network.ClientConnectionChanged -= OnClientConnectionChanged;

            if (network.Host)
            {
                network.StopHost();
            }
            else
            {
                network.StopClient();
            }

            StateMachine.ChangeState(new HostJoinState());
        }
Example #3
0
        /// <summary>
        /// Exits the <see cref="LobbyState"/> if the connection has been lost.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnClientConnectionChanged(object sender, MultiplayerNetwork.ConnectionStatus e)
        {
            switch (e)
            {
            case MultiplayerNetwork.ConnectionStatus.Connected:
                connectingPanel.SetActive(false);
                break;

            case MultiplayerNetwork.ConnectionStatus.Disconnected:
                UserMessageManager.Dispatch("Lost connection to the lobby!", 5f);

                MultiplayerNetwork network = MultiplayerNetwork.Instance;
                network.ClientConnectionChanged -= OnClientConnectionChanged;
                network.StopClient();

                StateMachine.ChangeState(new HostJoinState());
                break;
            }
        }
Example #4
0
        /// <summary>
        /// Starts the <see cref="LobbyState"/>.
        /// </summary>
        public override void Start()
        {
            connectingPanel = Auxiliary.FindGameObject("ConnectingPanel");
            startButton     = Auxiliary.FindGameObject("StartButton");
            fieldButton     = GameObject.Find("FieldButton").GetComponent <Button>();
            lobbyCodeText   = GameObject.Find("LobbyCodeText").GetComponent <Text>();
            fieldText       = GameObject.Find("FieldButton").GetComponent <Text>();
            readyText       = GameObject.Find("ReadyText").GetComponent <Text>();

            connectingPanel.SetActive(false);
            startButton.SetActive(false);

            MultiplayerNetwork network = MultiplayerNetwork.Instance;

            if (host)
            {
                lobbyCodeText.text = "Lobby Code: " + (lobbyCode = IPCrypt.Encrypt(network.networkAddress = GetLocalIP()));

                if (network.StartHost(null, network.maxConnections) == null)
                {
                    UserMessageManager.Dispatch("Could not host a lobby on this network!", 5f);
                    StateMachine.ChangeState(new HostJoinState());
                    return;
                }

                GameObject matchManager = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("Prefabs/MatchManager"));
                NetworkServer.Spawn(matchManager);
            }
            else
            {
                lobbyCodeText.text  = "Lobby Code: " + lobbyCode;
                fieldButton.enabled = false;
                connectingPanel.SetActive(true);

                network.networkAddress           = IPCrypt.Decrypt(lobbyCode);
                network.ClientConnectionChanged += OnClientConnectionChanged;
                network.StartClient();
            }
        }