예제 #1
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            ENetworkAction eAction          = (ENetworkAction)_cStream.ReadByte();
            CNetworkViewId cModuleGunViewId = _cStream.ReadNetworkViewId();

            GameObject          cModuleGunObject    = cModuleGunViewId.GameObject;
            CToolInterface      cToolInterface      = cModuleGunObject.GetComponent <CToolInterface>();
            CModuleGunBehaviour cModuleGunBehaviour = cModuleGunObject.GetComponent <CModuleGunBehaviour>();

            switch (eAction)
            {
            case ENetworkAction.OpenDui:
                cModuleGunBehaviour.OpenDui(cToolInterface.OwnerPlayerActor.GetComponent <CPlayerInteractor>().TargetActorObject);
                break;

            case ENetworkAction.CloseDui:
                cModuleGunBehaviour.CloseDui();
                break;

            default:
                Debug.LogError("Unknown network action");
                break;
            }
        }
    }
예제 #2
0
    public static void UnserializeData(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        // While there is unread data in the stream
        while (_cStream.HasUnreadData)
        {
            // Save the first byte as the network action
            ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte();

            // Switch on the network action
            switch (eNetworkAction)
            {
            // New player message was sent
            case ENetworkAction.ActionSendPlayerMessage:
            {
                // Read out messages into output strings
                string strName    = _cStream.ReadString();
                string strMessage = _cStream.ReadString();

                // Find all players within 'hearing' range of the source player
                foreach (CNetworkPlayer Player in CheckPlayerDistances(_cNetworkPlayer))
                {
                    // Invoke RPC call to send the message to each player
                    Instance.InvokeRpc(Player.PlayerId, "ReceivePlayerMessage", strName, strMessage);
                }

                break;
            }
            }
        }
    }
예제 #3
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        GameObject      cPlayerObject   = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId);
        CPlayerBackPack cPlayerBackPack = cPlayerObject.GetComponent <CPlayerBackPack>();

        // Process stream data
        while (_cStream.HasUnreadData)
        {
            // Extract action
            ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte();

            // Handle action
            switch (eAction)
            {
            case ENetworkAction.PickupModule:
                CNetworkViewId cModuleViewId = _cStream.ReadNetworkViewId();
                cPlayerBackPack.PickupModule(_cNetworkPlayer.PlayerId, cModuleViewId);

                break;

            case ENetworkAction.DropModule:
                cPlayerBackPack.DropModule();
                break;

            case ENetworkAction.InsertCell:
                CNetworkViewId cCellSlotViewId = _cStream.ReadNetworkViewId();
                cPlayerBackPack.InsertCell(_cNetworkPlayer.PlayerId, cCellSlotViewId);
                break;
            }
        }
    }
예제 #4
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            ENetworkAction eAction          = (ENetworkAction)_cStream.ReadByte();
            CNetworkViewId cModuleGunViewId = _cStream.ReadNetworkViewId();

            GameObject     cModuleGunObject = cModuleGunViewId.GameObject;
            CToolInterface cToolInterface   = cModuleGunObject.GetComponent <CToolInterface>();
            CTorchLight    cTorchLight      = cModuleGunObject.GetComponent <CTorchLight>();

            switch (eAction)
            {
            case ENetworkAction.TurnOnLight:
                cTorchLight.SetActive(true);
                break;

            case ENetworkAction.TurnOffLight:
                cTorchLight.SetActive(false);
                break;

            case ENetworkAction.ToggleColour:
                cTorchLight.ToggleColour();
                break;


            default:
                Debug.LogError("Unknown network action: " + eAction);
                break;
            }
        }
    }
예제 #5
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            CNetworkViewId cTurretViewId = _cStream.ReadNetworkViewId();
            GameObject     cTurretObject = CNetwork.Factory.FindObject(cTurretViewId);

            if (cTurretObject != null)
            {
                CLaserTurretBehaviour cLaserTurretBehaviour = cTurretObject.GetComponent <CLaserTurretBehaviour>();
                ENetworkAction        eAction = (ENetworkAction)_cStream.ReadByte();

                switch (eAction)
                {
                case ENetworkAction.FireLasers:
                    cLaserTurretBehaviour.FireLasers();
                    break;

                default:
                    Debug.LogError(string.Format("Unknown network action ({0})", eAction));
                    break;
                }
            }
        }
    }
예제 #6
0
파일: CCockpit.cs 프로젝트: dacuster/VOID
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            CNetworkViewId cCockpitObjectViewId = _cStream.ReadNetworkViewId();
            ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte();

            GameObject cCockpitObject = CNetwork.Factory.FindObject(cCockpitObjectViewId);

            CCockpit cCockpit = cCockpitObject.GetComponent <CCockpit>();

            switch (eAction)
            {
            case ENetworkAction.EnterCockpit:
                cCockpit.HandleEnterCockpit(_cNetworkPlayer.PlayerId);
                break;

            case ENetworkAction.LeaveCockpit:
                cCockpit.HandleLeaveCockpit(_cNetworkPlayer.PlayerId);
                break;

            default:
                Debug.LogError(string.Format("Unknown network action ({0})"));
                break;
            }
        }
    }
예제 #7
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId);

        if (cPlayerActor != null)
        {
            CPlayerAirMotor cAirMotor = cPlayerActor.GetComponent <CPlayerAirMotor>();

            while (_cStream.HasUnreadData)
            {
                ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte();

                switch (eNetworkAction)
                {
                case ENetworkAction.UpdateStates:
                    cAirMotor.m_usMovementStates = _cStream.ReadUInt();
                    break;

                default:
                    Debug.LogError(string.Format("Unknown network action ({0})", (int)eNetworkAction));
                    break;
                }
            }
        }
    }
예제 #8
0
    public static void UnserializeData(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte();

        switch (eNetworkAction)
        {
        case ENetworkAction.ActionSendPlayerName:
        {
            string sPlayerName = _cStream.ReadString();

            //Send all dictionary entries to new player
            foreach (KeyValuePair <ulong, string> entry in CGamePlayers.s_cInstance.m_mPlayersNames)
            {
                //Make sure you don't send RPC to yourself. Foreach loops will not let you modify the collections object (dictionary) you are operating on.
                if (_cNetworkPlayer.PlayerId != CNetwork.PlayerId)
                {
                    CGamePlayers.s_cInstance.InvokeRpc(_cNetworkPlayer.PlayerId, "RegisterPlayerName", entry.Key, entry.Value);
                }
            }

            // Send new player name to all other players
            CGamePlayers.s_cInstance.InvokeRpcAll("RegisterPlayerName", _cNetworkPlayer.PlayerId, sPlayerName);

            break;
        }
        }
    }
예제 #9
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        if (CGamePlayers.SelfActor == null)
        {
            return;
        }

        CPlayerInteractor cPlayerInteractor = CGamePlayers.SelfActor.GetComponent <CPlayerInteractor>();

        while (_cStream.HasUnreadData)
        {
            ENetworkAction eAction          = (ENetworkAction)_cStream.ReadByte();
            CNetworkViewId cNewTargetViewId = _cStream.ReadNetworkViewId();

            switch (eAction)
            {
            case ENetworkAction.UpdateTarget:
                if (cNewTargetViewId != null)
                {
                    cPlayerInteractor.m_cTargetActorObject = cNewTargetViewId.GameObject;
                    if (cPlayerInteractor.EventServerTargetChange != null)
                    {
                        cPlayerInteractor.EventServerTargetChange(cPlayerInteractor.m_cTargetActorObject);
                    }

                    // Debug.LogError("Found new target: " + cPlayerInteractor.m_cTargetActorObject);
                }
                else
                {
                    cPlayerInteractor.m_cTargetActorObject = null;
                    if (cPlayerInteractor.EventServerTargetChange != null)
                    {
                        cPlayerInteractor.EventServerTargetChange(null);
                    }

                    //Debug.LogError("Found new target: " + null);
                }
                break;

            default:
                Debug.LogError("Unknown network action");
                break;
            }
        }
    }
예제 #10
0
    public static void UnserializeBeltState(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            ENetworkAction eAction     = (ENetworkAction)_cStream.ReadByte();
            CPlayerBelt    cPlayerBelt = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId).GetComponent <CPlayerBelt>();

            switch (eAction)
            {
            case ENetworkAction.PickupTool:
            {
                CNetworkViewId cToolViewId = _cStream.ReadNetworkViewId();
                cPlayerBelt.PickupTool(cToolViewId.GameObject);
            }
            break;
            }
        }
    }
예제 #11
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            CNetworkViewId oxygenRefillViewId = _cStream.ReadNetworkViewId();
            ENetworkAction eAction            = (ENetworkAction)_cStream.ReadByte();

            GameObject cOxygenRefillerObject = oxygenRefillViewId.GameObject;

            COxygenRefillerBehaviour blah = cOxygenRefillerObject.GetComponent <COxygenRefillerBehaviour>();

            switch (eAction)
            {
            case ENetworkAction.RefillOxygen:
                blah.HandlePlayerOxygenRefill(_cNetworkPlayer.PlayerId);
                break;
            }
        }
    }
예제 #12
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte();
        CNetworkViewId cFireExtinguisherViewId = _cStream.ReadNetworkViewId();

        switch (eAction)
        {
        case ENetworkAction.ExtinguishFireStart:
            cFireExtinguisherViewId.GameObject.GetComponent <CFireExtinguisherSpray>().m_bActive.Set(true);
            break;

        case ENetworkAction.ExtinguishFireEnd:
            cFireExtinguisherViewId.GameObject.GetComponent <CFireExtinguisherSpray>().m_bActive.Set(false);
            break;

        default:
            Debug.LogError("Unknown network action");
            break;
        }
    }
예제 #13
0
    public static void UnserializePlayerState(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId);

        if (cPlayerActor != null)
        {
            //while (_cStream.HasUnreadData)
            {
                // Retrieve player actor motor
                CPlayerGroundMotor cPlayerActorMotor = cPlayerActor.GetComponent <CPlayerGroundMotor>();

                ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte();

                switch (eNetworkAction)
                {
                case ENetworkAction.UpdateStates:
                {
                    cPlayerActorMotor.m_uiMovementStates = _cStream.ReadByte();

                    if (cPlayerActor != CGamePlayers.SelfActor)
                    {
                        cPlayerActor.transform.eulerAngles = new Vector3(0.0f, _cStream.ReadFloat(), 0.0f);
                    }
                    else
                    {
                        _cStream.ReadFloat();
                    }

                    cPlayerActorMotor.m_bStates.Set((byte)cPlayerActorMotor.m_uiMovementStates);
                }
                break;


                default:
                    Debug.LogError(string.Format("Unknown network action ({0})", (byte)eNetworkAction));
                    break;
                }
            }
        }
    }
예제 #14
0
    public static void Unserialize(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            // Extract action
            ENetworkAction eAction = (ENetworkAction)_cStream.ReadByte();

            switch (eAction)
            {
            case ENetworkAction.SetRepairState:
            {
                //Figure out which kits sent it's new state
                CCircuitryKitBehaviour CircuitryKit = _cStream.ReadNetworkViewId().GameObject.GetComponent <CCircuitryKitBehaviour>();

                CircuitryKit.m_TargetComponent = _cStream.ReadNetworkViewId().GameObject.GetComponent <CComponentInterface>();
                CircuitryKit.m_eRepairState    = (ERepairState)_cStream.ReadByte();

                break;
            }
            }
        }
    }
예제 #15
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            ENetworkAction eAction     = (ENetworkAction)_cStream.ReadByte();
            CNetworkViewId cAk47ViewId = _cStream.ReadNetworkViewId();

            switch (eAction)
            {
            case ENetworkAction.ShootStart:
                cAk47ViewId.GameObject.GetComponent <CAk47Behaviour>().m_bShoot = true;
                break;

            case ENetworkAction.ShootEnd:
                cAk47ViewId.GameObject.GetComponent <CAk47Behaviour>().m_bShoot = false;
                break;

            default:
                Debug.LogError("Unknown network action");
                break;
            }
        }
    }
예제 #16
0
    public static void UnserializeInbound(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        while (_cStream.HasUnreadData)
        {
            CNetworkViewId cTurretViewId = _cStream.ReadNetworkViewId();
            GameObject     cTurretObject = CNetwork.Factory.FindObject(cTurretViewId);

            if (cTurretObject != null)
            {
                CMiningTurretBehaviour cMiningTurretBehaviour = cTurretObject.GetComponent <CMiningTurretBehaviour>();
                ENetworkAction         eAction = (ENetworkAction)_cStream.ReadByte();

                switch (eAction)
                {
                case ENetworkAction.StartFractureLaser:
                    cMiningTurretBehaviour.m_bFractureLaserButtonDown = true;
                    break;

                case ENetworkAction.StopFractureLaser:
                    cMiningTurretBehaviour.m_bFractureLaserButtonDown = false;
                    break;

                case ENetworkAction.StartExtractorBeam:
                    cMiningTurretBehaviour.m_bExtracterBeamButtonDown = true;
                    break;

                case ENetworkAction.StopExtractorBeam:
                    cMiningTurretBehaviour.m_bExtracterBeamButtonDown = false;
                    break;

                default:
                    Debug.LogError(string.Format("Unknown network action ({0})", eAction));
                    break;
                }
            }
        }
    }
예제 #17
0
    public static void UnserializeIKTarget(CNetworkPlayer _cNetworkPlayer, CNetworkStream _cStream)
    {
        GameObject cPlayerActor = CGamePlayers.GetPlayerActor(_cNetworkPlayer.PlayerId);

        if (cPlayerActor != null)
        {
            CPlayerIKController cPlayerIKController = cPlayerActor.GetComponent <CPlayerIKController>();

            ENetworkAction eNetworkAction = (ENetworkAction)_cStream.ReadByte();

            switch (eNetworkAction)
            {
            case ENetworkAction.SetRightTransform:
            {
                Vector3 pos = new Vector3();
                Vector3 rot = new Vector3();

                pos.x = _cStream.ReadFloat();
                pos.y = _cStream.ReadFloat();
                pos.z = _cStream.ReadFloat();

                cPlayerIKController.m_RightHandTarget.position = pos;

                rot.x = _cStream.ReadFloat();
                rot.y = _cStream.ReadFloat();
                rot.z = _cStream.ReadFloat();

                cPlayerIKController.m_RightHandTarget.rotation = Quaternion.Euler(rot);

                cPlayerIKController.m_RightHandNetworkedPos.Set(cPlayerIKController.m_RightHandTarget.position);
                cPlayerIKController.m_RightHandNetworkedRot.Set(cPlayerIKController.m_RightHandTarget.rotation.eulerAngles);
            }
            break;

            case ENetworkAction.SetLeftTransform:
            {
                Vector3 pos = new Vector3();
                Vector3 rot = new Vector3();

                pos.x = _cStream.ReadFloat();
                pos.y = _cStream.ReadFloat();
                pos.z = _cStream.ReadFloat();

                cPlayerIKController.m_LeftHandTarget.position = pos;

                rot.x = _cStream.ReadFloat();
                rot.y = _cStream.ReadFloat();
                rot.z = _cStream.ReadFloat();

                cPlayerIKController.m_LeftHandTarget.rotation = Quaternion.Euler(rot);

                cPlayerIKController.m_RightHandNetworkedPos.Set(cPlayerIKController.m_LeftHandTarget.position);
                cPlayerIKController.m_RightHandNetworkedRot.Set(cPlayerIKController.m_LeftHandTarget.rotation.eulerAngles);
            }
            break;

            default:
                Debug.LogError(string.Format("Unknown network action ({0})", (byte)eNetworkAction));
                break;
            }
        }
    }