public void CallLerpPosition()
    {
        // Arrange
        PlayerSync playerSync = new PlayerSync();
        var playerSyncInterface = GetPlayerSyncMock();
        playerSync.SetPlayerSync(playerSyncInterface);
        Vector3 testVector = new Vector3(1, 1, 1);

        // Act
        playerSync.CallLerpPosition(testVector);

        // Assert
        playerSyncInterface.Received().LerpPosition(testVector, 15f);
    }
    public void CallLerpRotation()
    {
        // Arrange
        PlayerSync playerSync = new PlayerSync();
        var playerSyncInterface = GetPlayerSyncMock();
        playerSync.SetPlayerSync(playerSyncInterface);
        Quaternion testRot = new Quaternion(0, 0, 0, 0);

        // Act
        playerSync.CallLerpRotation(testRot);

        // Assert
        playerSyncInterface.Received().LerpRotation(testRot, 15f);
    }
    public void HasMovedRotTrue()
    {
        // Arrange
        PlayerSync playerSync = new PlayerSync();
        var playerSyncInterface = GetPlayerSyncMock();
        playerSync.SetPlayerSync(playerSyncInterface);
        Vector3 lastPos = new Vector3(1, 1, 1);
        Quaternion lastRot = new Quaternion(0, 0, 0, 0);
        playerSync.SetLastPositionRotation(lastPos, lastRot);

        // Act
        bool result = playerSync.HasMoved(lastPos, new Quaternion(1, 1, 1, 1));

        // Assert
        Assert.AreEqual(true, result);
    }
Exemple #4
0
 void Start()
 {
     ps         = gameObject.transform.GetComponent <PlayerSync>();
     useAbility = false;
 }
Exemple #5
0
    void OnTriggerEnter(Collider coll)
    {
        //List of players ingame.
        if (coll.CompareTag("Player"))
        {
            PlayerSync player = coll.transform.parent.parent.parent.parent.parent.parent.parent.parent.GetComponent <PlayerSync>();
            if (!playersInTheMiddle.Contains(player))
            {
                playersInTheMiddle.Add(player);
            }


            //Win check
            if (playersInTheMiddle.Count == GameObject.Find("Players").GetComponentsInChildren <PlayerSync>().Length)
            {
                GameObject.Find("HUD").gameObject.SetActive(false);
                NetworkVariables nvs    = GameObject.FindObjectOfType <NetworkVariables>();
                Vector3          walkTo = new Vector3(transform.position.x, player.getController().transform.position.y, transform.position.z);
                player.getController().Walk(walkTo);
                int startTime = nvs.startTimestamp;
                nvs.finishTime = getCurrentTimestamp();
                int    userTime       = nvs.finishTime - startTime;
                string formattedTime  = string.Format("{0:00}:{1:00}:{2:00}", userTime / 3600, (userTime / 60) % 60, userTime % 60);
                int    openedRooms    = -2; //Not counting the start and end room
                int    allRooms       = -1; //This one will not count the start room, but the end room.
                int    puzzleRooms    = 0;
                int    puzzleFinished = 0;

                foreach (RoomController rc in GameObject.FindObjectsOfType <RoomController>())
                {
                    if (rc.displayRoom)
                    {
                        openedRooms++;
                    }
                    if (rc.cameFrom != -1)
                    {
                        allRooms++;
                        //rc.displayRoom = true;
                    }
                    if (rc.getRoomCategory() != RoomObject.RoomCategory.DeadEnd &&
                        rc.getRoomCategory() != RoomObject.RoomCategory.End &&
                        rc.getRoomCategory() != RoomObject.RoomCategory.Start &&
                        rc.getRoomCategory() != RoomObject.RoomCategory.Nothing)
                    {
                        puzzleRooms++;
                    }
                    if (rc.puzzleComplete)
                    {
                        puzzleFinished++;
                    }
                }

                GameObject ws     = Instantiate(winScreen, Vector3.zero, Quaternion.identity) as GameObject;
                WinScreen  screen = ws.GetComponent <WinScreen>();
                screen.timeInSeconds    = userTime;
                screen.roomsOpened      = openedRooms;
                screen.roomCount        = allRooms;
                screen.puzzlesCompleted = puzzleFinished;
                screen.puzzleCount      = puzzleRooms;
                screen.sizeX            = Mathf.RoundToInt(nvs.mazeSize.x);
                screen.sizeY            = Mathf.RoundToInt(nvs.mazeSize.y);
                screen.mazeSeed         = nvs.seed;

                Destroy(GetComponent <BoxCollider>());
                Destroy(this);
            }
        }
    }
Exemple #6
0
    private void Update()
    {
        // Check for null references
        if (playerTransform == null)
        {
            playerTransform = transform;
        }

        // Set identity if it is not set yet
        if (playerTransform.name == "" || playerTransform.name.Contains("Clone"))
        {
            SetNetIdentity();
        }

        // Check if player is match server
        if (isServer)
        {
            // Check for null references
            if (multiplayerManager == null)
            {
                multiplayerManager = GameObject.FindWithTag("MultiplayerManager").GetComponent<MultiplayerManager>();
            }

            // Set the match time
            SetServerTime(multiplayerManager.LeftTime);
        }
        else
        {
            // Check for null references
            if (serverSync == null)
            {
                players = GameObject.FindGameObjectsWithTag("Player");
                for (int i = 0; i < players.Length; i++)
                {
                    if (players[i].name.Contains("host"))
                    {
                        serverSync = players[i].GetComponent<PlayerSync>();
                        break;
                    }
                }
            }

            if (multiplayerManager == null)
            {
                multiplayerManager = GameObject.FindWithTag("MultiplayerManager").GetComponent<MultiplayerManager>();
            }

            // If player is not match server, read match left time from server sync
            multiplayerManager.LeftTime = serverSync.serverTime;
        }

        // Update player score
        TransmitScore();
    }
Exemple #7
0
 public virtual void TransportPlayer(PlayerSync player)
 {
     //push player to the next tile
     player?.Push(position.To2Int());
 }
 private void TransportPlayer(PlayerSync player)
 {
     //push player to the next tile
     player?.Push(position.To2Int());
 }
Exemple #9
0
 public abstract void UpdateFromServer(PlayerSync sync);
Exemple #10
0
        public static void ReadMessage(byte[] message)
        {
            Envelope envelope = SerializationHandler.Deserialize <Envelope>(message);

            if (envelope == null)
            {
                throw new NotAnEnvelopeException();
            }
            switch (envelope.PacketType)
            {
            case Packets.None:
                Debug.Log("None");
                break;

            case Packets.String:
                string stringVal = SerializationHandler.Deserialize <string>(envelope.Packet);
                Debug.Log(stringVal);
                break;

            case Packets.AckLogin:
                AckLogin ackLogin = SerializationHandler.Deserialize <AckLogin>(envelope.Packet);
                HandleAckLogin(ackLogin);
                break;

            case Packets.AckJoinTeam:
                AckJoinTeam ackJoinTeam = SerializationHandler.Deserialize <AckJoinTeam>(envelope.Packet);
                HandleAckJoinTeam(ackJoinTeam);
                break;

            case Packets.DestroyObject:
                DestroyObject destroyObject = SerializationHandler.Deserialize <DestroyObject>(envelope.Packet);
                HandleDestroyObject(destroyObject);
                break;

            case Packets.PlayerSync:
                PlayerSync playerSync = SerializationHandler.Deserialize <PlayerSync>(envelope.Packet);
                HandlePlayerSync(playerSync);
                break;

            case Packets.SnowballSync:
                SnowballSync snowballSync = SerializationHandler.Deserialize <SnowballSync>(envelope.Packet);
                HandleSnowballSync(snowballSync);
                break;

            case Packets.SnowPileSync:
                SnowPileSync snowPileSync = SerializationHandler.Deserialize <SnowPileSync>(envelope.Packet);
                HandleSnowPileSync(snowPileSync);
                break;

            case Packets.LeaderboardData:
                LeaderboardDataEntry leaderboardDataResponse = SerializationHandler.Deserialize <LeaderboardDataEntry>(envelope.Packet);
                HandleLeaderboardDataEntry(leaderboardDataResponse);
                break;

            case Packets.EndLeaderboardResponse:
                HandleEndLeaderboardResponse();
                break;

            case Packets.AckConnection:
                HandleAckConnection();
                break;

            default:
                break;
            }
        }
 void OnEnable()
 {
     playerSync = new PlayerSync();
     playerSync.SetPlayerSync(this);
 }
    public int GameTime;//剩余总时间.

    public void SyncPlayer(FrameCommand fmd)
    {
        //不同步自己的信息,因为客户端是最新数据,服务器的是旧数据
        if (fmd.playerId == PlayerId)
        {
            return;
        }
        //同步角色的位置,旋转,动作,速度,武器,气血,模型,怒气,buff
        if (fmd.command == MeteorMsg.Command.ServerSync)
        {
            MeteorUnit unit = U3D.GetUnit((int)fmd.playerId);
            if (unit != null)
            {
                unit.synced = true;
                System.IO.MemoryStream ms   = new System.IO.MemoryStream(fmd.Data);
                PlayerSync             sync = ProtoBuf.Serializer.Deserialize <PlayerSync>(ms);
                unit.ShadowPosition = new Vector3(sync.position.x / 1000.0f, sync.position.y / 1000.0f, sync.position.z / 1000.0f);
                unit.ShadowRotation = new Quaternion(sync.rotation.x / 1000.0f, sync.rotation.y / 1000.0f, sync.rotation.z / 1000.0f, sync.rotation.w / 1000.0f);
                unit.ActionMgr.SetAction(sync.action);
                unit.angle      = sync.ang;
                unit.Attr.hpCur = (int)sync.hp;
                if (unit.ModelId != sync.model)
                {
                    ModelItem m = null;
                    if (GameStateMgr.Ins.gameStatus.IsModelInstalled((int)sync.model, ref m))
                    {
                        U3D.ChangePlayerModel(unit, (int)sync.model);
                    }
                    else
                    {
                        //模型不一样,但是未安装此模型
                    }
                }
                unit.SyncWeapon((int)sync.weapon, (int)sync.weapon1);
                List <int> buffs = new List <int>();
                foreach (var each in BuffMng.Ins.BufDict)
                {
                    if (each.Value.Units.ContainsKey(unit))
                    {
                        buffs.Add(each.Key);
                    }
                }
                //把我不该有的buff删除
                for (int i = 0; i < buffs.Count; i++)
                {
                    if (!sync.buff.Contains((uint)buffs[i]))
                    {
                        BuffMng.Ins.BufDict[buffs[i]].ClearBuff(unit);
                    }
                }
                //把我没有的buff加上
                for (int i = 0; i < sync.buff.Count; i++)
                {
                    if (!buffs.Contains((int)sync.buff[i]))
                    {
                        Option opt = MenuResLoader.Ins.GetItemInfo((int)sync.buff[i]);
                        if (opt != null && opt.IsItem())
                        {
                            unit.AddBuf(opt);
                        }
                    }
                }
            }
        }
    }
 void OnEnable()
 {
     playerSync = new PlayerSync();
     playerSync.SetPlayerSync(this);
 }