Inheritance: UnityEngine.MonoBehaviour
コード例 #1
0
        private void SendPlayerShot(int playerId, Vector3 hitPoint, Vector3 hitDirection)
        {
            MultiplayerManager mInstance = MultiplayerManager.instance;

            int playerID = GetComponent <Player>().m_playerId;

            MessagePlayerShotBullet message = new MessagePlayerShotBullet();

            message.playerId     = playerID;
            message.hitPosition  = hitPoint;
            message.hitDirection = hitDirection;

            if (mInstance.m_isServer)
            {
                List <NetConnection> sendTo = mInstance.m_server.Connections;

                if (sendTo.Count > 0)
                {
                    NetOutgoingMessage om = mInstance.m_server.CreateMessage();
                    om.Write((int)MessageFunction.PlayerShotBullet);
                    om.WriteAllFields(message);

                    mInstance.m_server.SendToAll(om, NetDeliveryMethod.ReliableOrdered);
                }
            }
            else
            {
                NetOutgoingMessage om = mInstance.m_client.CreateMessage();
                om.Write((int)MessageFunction.PlayerShotBullet);
                om.WriteAllFields(message);

                mInstance.m_client.SendMessage(om, NetDeliveryMethod.ReliableOrdered);
            }
        }
コード例 #2
0
        void Awake()
        {
            instance = this;
            gameObject.AddComponent <Scoreboard>();

            UIView v = UIView.GetAView();

            m_chat = v.AddUIComponent(typeof(Chat)) as Chat;
        }
コード例 #3
0
        private void SendPlayerHookReleased()
        {
            MultiplayerManager mInstance = MultiplayerManager.instance;

            int playerID = GetComponent <Player>().m_playerId;

            MessagePlayerHookReleased message = new MessagePlayerHookReleased();

            message.playerId = playerID;
            mInstance.SendNetworkMessage(message, SendTo.Others);
        }
コード例 #4
0
        private void SendPlayerHookUsed(Vector3 hookPosition)
        {
            MultiplayerManager mInstance = MultiplayerManager.instance;

            int playerID = GetComponent <Player>().m_playerId;

            MessagePlayerHookUsed message = new MessagePlayerHookUsed();

            message.playerId     = playerID;
            message.hookPosition = hookPosition;
            mInstance.SendNetworkMessage(message, SendTo.Others);
        }
コード例 #5
0
ファイル: Mod.cs プロジェクト: devenlil/Skylines-Multiplayer
        public override void OnLevelLoaded(LoadMode mode)
        {
            base.OnLevelLoaded(mode);

            RedirectCalls();

            var multiplayerManager = new GameObject("MultiplayerManager");

            m_mInstance = multiplayerManager.AddComponent <MultiplayerManager>();

            var cameraController = GameObject.FindObjectOfType <CameraController>();

            m_hideUI = cameraController.gameObject.AddComponent <HideUI>();
        }
コード例 #6
0
        void Update()
        {
            NetIncomingMessage msg;

            while (m_server != null && (msg = m_server.ReadMessage()) != null)
            {
                switch (msg.MessageType)
                {
                case NetIncomingMessageType.VerboseDebugMessage:
                case NetIncomingMessageType.DebugMessage:
                    Debug.Log(msg.ReadString());
                    break;

                case NetIncomingMessageType.WarningMessage:
                    Debug.LogWarning(msg.ReadString());
                    break;

                case NetIncomingMessageType.ErrorMessage:
                    Debug.LogError(msg.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte();

                    string reason = msg.ReadString();
                    Debug.Log(NetUtility.ToHexString(msg.SenderConnection.RemoteUniqueIdentifier) + " " + status + ": " + reason);

                    if (status == NetConnectionStatus.Connected)
                    {
                        Debug.Log("Remote connected: " + msg.SenderConnection.RemoteHailMessage.ReadString());

                        NetOutgoingMessage om = m_server.CreateMessage();

                        om.Write((int)MessageFunction.SpawnAllPlayer);
                        om.Write(m_players.Count);

                        foreach (var player in m_players)
                        {
                            om.Write(player.ID);
                            om.Write(player.Name);
                        }
                        m_server.SendMessage(om, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);
                    }
                    else if (status == NetConnectionStatus.Disconnected)
                    {
                        MultiplayerManager mInstance = MultiplayerManager.instance;

                        var player = m_players.FirstOrDefault(x => x.OwnerConnection == msg.SenderConnection);
                        if (player != null)
                        {
                            MessageRemovePlayer message = new MessageRemovePlayer();
                            message.playerId = player.ID;
                            mInstance.SendNetworkMessage(message, SendTo.All);
                        }
                    }
                    break;

                case NetIncomingMessageType.Data:
                    HandleSeverMessage(msg);
                    break;

                case NetIncomingMessageType.UnconnectedData:
                    var msgType = (UnConnectedMessageFunction)msg.ReadInt32();
                    switch (msgType)
                    {
                    case UnConnectedMessageFunction.PingServerForPlayerCount:
                        NetOutgoingMessage returnMessage = m_server.CreateMessage();
                        returnMessage.Write((int)UnConnectedMessageFunction.PingServerForPlayerCount);
                        returnMessage.Write(m_players.Count);
                        m_server.SendUnconnectedMessage(returnMessage, msg.SenderEndPoint);
                        break;

                    case UnConnectedMessageFunction.PingServerForMapId:
                        NetOutgoingMessage returnMessage2 = m_server.CreateMessage();
                        returnMessage2.Write((int)UnConnectedMessageFunction.PingServerForMapId);
                        returnMessage2.Write(m_players.Count);
                        returnMessage2.Write(m_saveWorkshopID);
                        m_server.SendUnconnectedMessage(returnMessage2, msg.SenderEndPoint);
                        break;
                    }

                    break;

                default:
                    Debug.LogWarning("Unhandled type: " + msg.MessageType);
                    break;
                }
                m_server.Recycle(msg);
            }

            while (m_client != null && (msg = m_client.ReadMessage()) != null)
            {
                switch (msg.MessageType)
                {
                case NetIncomingMessageType.VerboseDebugMessage:
                case NetIncomingMessageType.DebugMessage:
                case NetIncomingMessageType.WarningMessage:
                case NetIncomingMessageType.ErrorMessage:
                    Debug.Log(msg.ReadString());
                    break;

                case NetIncomingMessageType.StatusChanged:
                    if (msg.ReadString() == "=Failed".Trim())
                    {
                        Debug.Log("It failed");
                        m_failedToConnect = true;
                    }
                    break;

                case NetIncomingMessageType.Data:
                    HandleClientMessage(msg);
                    break;

                default:
                    Debug.LogWarning("Unhandled type: " + msg.MessageType);
                    break;
                }
                m_client.Recycle(msg);
            }
        }
コード例 #7
0
        void Awake()
        {
            instance = this;
            gameObject.AddComponent<Scoreboard>();

            UIView v = UIView.GetAView();
            m_chat = v.AddUIComponent(typeof(Chat)) as Chat;
        }
コード例 #8
0
ファイル: Mod.cs プロジェクト: Fr0sZ/Skylines-Multiplayer
        public override void OnLevelLoaded(LoadMode mode)
        {
            base.OnLevelLoaded(mode);

            RedirectCalls();

            var multiplayerManager = new GameObject("MultiplayerManager");
            m_mInstance = multiplayerManager.AddComponent<MultiplayerManager>();

            var cameraController = GameObject.FindObjectOfType<CameraController>();
            m_hideUI = cameraController.gameObject.AddComponent<HideUI>();
        }