예제 #1
0
    public override void OnEvent(EventData eventData)
    {
        int roleId = -1;
        //获取SubCode,判断是增加还是删除角色
        SubCode subCode;
        object  o = null;

        eventData.Parameters.TryGetValue((byte)ParameterCode.SubCode, out o);
        subCode = (SubCode)o;
        eventData.Parameters.TryGetValue((byte)ParameterCode.RoleId, out o);
        roleId = (int)o;
        switch (subCode)
        {
        case SubCode.SyncPosAndRotation:
            //同步角色位置和旋转
            object posObj = null;
            object rotObj = null;
            eventData.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj);
            eventData.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out rotObj);
            Vector3Obj pos      = JsonMapper.ToObject <Vector3Obj>(posObj.ToString());
            Vector3Obj rotation = JsonMapper.ToObject <Vector3Obj>(rotObj.ToString());
            SyncPositonAndRotationResponse(roleId, pos.ToVector3(), rotation.ToVector3());
            break;

        case SubCode.SyncPlayerMoveAnimation:
            PlayerMoveAnimationModel model = new PlayerMoveAnimationModel();
            eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerMoveAnimationModel, out o);
            model = JsonMapper.ToObject <PlayerMoveAnimationModel>(o.ToString());
            SyncPlayerMoveAnimationResponse(roleId, model);
            break;

        default: break;
        }
    }
예제 #2
0
    //向服务器发起角色移动动画信息的同步
    public void AsyncPlayerMoveAnimation(PlayerMoveAnimationModel model)
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddParameters <PlayerMoveAnimationModel>(parameters, ParameterCode.PlayerMoveAnimationModel, model);
        PhotonEngine.Instance.SendRequest(opCode, SubCode.AsyncPlayerMoveAnimation, parameters);
    }
    public void SyncMoveAnimation(PlayerMoveAnimationModel model)  //发送同步移动状态请求
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddParameter(parameters, ParameterCode.MoveAnimation, model);
        PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncMoveAnimation, parameters);
    }
예제 #4
0
    public override void OnEvent(EventData eventData)
    {
        SubCode subCode = ParameterTool.GetSubcode(eventData.Parameters);

        switch (subCode)
        {
        case SubCode.GetTeam:
            List <Role> roles = ParameterTool.GetParameter <List <Role> >(eventData.Parameters,
                                                                          ParameterCode.RoleList);
            int masterRoleID = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.MasterRoleID,
                                                                false);
            if (OnGetTeam != null)
            {
                OnGetTeam(roles, masterRoleID);
            }
            break;

        case SubCode.SyncPositionAndRotation:
            int     roleID = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false);
            Vector3 pos    =
                ParameterTool.GetParameter <Vector3Obj>(eventData.Parameters, ParameterCode.Position).ToVector3();
            Vector3 eulerAngles = ParameterTool.GetParameter <Vector3Obj>(eventData.Parameters,
                                                                          ParameterCode.EulerAngles).ToVector3();
            if (OnSyncPositionAndRotation != null)
            {
                OnSyncPositionAndRotation(roleID, pos, eulerAngles);
            }
            break;

        case SubCode.SyncMoveAnimation:
            int roleID2 = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false);
            PlayerMoveAnimationModel model =
                ParameterTool.GetParameter <PlayerMoveAnimationModel>(eventData.Parameters,
                                                                      ParameterCode.PlayerMoveAnimationModel);
            if (OnSyncMoveAnimation != null)
            {
                OnSyncMoveAnimation(roleID2, model);
            }
            break;

        case SubCode.SyncAnimation:
            int roleID3 = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false);
            PlayerAnimationModel model2 = ParameterTool.GetParameter <PlayerAnimationModel>(eventData.Parameters,
                                                                                            ParameterCode.PlayerAnimationModel);
            if (OnSyncPlayerAnimation != null)
            {
                OnSyncPlayerAnimation(roleID3, model2);
            }
            break;

        case SubCode.SendGameState:
            GameStateModel model3 = ParameterTool.GetParameter <GameStateModel>(eventData.Parameters,
                                                                                ParameterCode.GameStateModel);
            if (OnGameStateChange != null)
            {
                OnGameStateChange(model3);
            }
            break;
        }
    }
예제 #5
0
 public void SetAnimation(PlayerMoveAnimationModel model) {
     DateTime dt = model.GetTime();
     if(dt>lastdateTime)
     {
         anim.SetBool("move", model.IsMove);
         lastdateTime = dt;
     }
 }
예제 #6
0
    //
    public void setAnim(PlayerMoveAnimationModel model)
    {
        DateTime dt = model.GetTime();

        if (dt > lastAnimTime)
        {
            anim.SetBool("Move", model.IsMove);
            lastAnimTime = dt;
        }
    }
예제 #7
0
    public void SetMoveAnimation(PlayerMoveAnimationModel model)
    {
        DateTime dateTime = model.GetTime();

        if (dateTime > lastUpdateTime)  //状态是最新的,需要更新
        {
            anim.SetBool("Move", model.IsMove);
            lastUpdateTime = dateTime;
        }
    }
예제 #8
0
    public void SetAnim(PlayerMoveAnimationModel model)
    {
        //print(model.Time + ":" + model.IsMove);
        DateTime dt = model.GetTime();

        if (dt > lastUpdateTime)
        {
            anim.SetBool("Move", model.IsMove);
            lastUpdateTime = dt;
        }
    }
예제 #9
0
 void AsyncPlayerMoveAnimation() {
     if(isMove!=anim.GetBool("move"))
     {
         //动画状态不同步时候
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel() { IsMove = anim.GetBool("move") };
         model.SetTime(DateTime.Now);
         //向服务器发起动画同步的请求
         battleController.AsyncPlayerMoveAnimation(model);
         isMove = anim.GetBool("move");
     }
 }
예제 #10
0
    private void OnAsyncPlayerMoveAnimation(int roleID, PlayerMoveAnimationModel model)
    {
        GameObject go = null;

        if (playerDict.TryGetValue(roleID, out go))
        {
            go.GetComponent <PlayerMove01>().SetAnimation(model);
        }
        else
        {
            Debug.LogWarning("Don't find a player gameobject");
        }
    }
예제 #11
0
 void SyncMoveAnimation()                //同步移动的动画
 {
     if (isMove != anim.GetBool("Move")) //当前状态发生了改变,需要同步
     {
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel()
         {
             IsMove = anim.GetBool("Move")
         };                                                                                                  //应该改为当前最新状态
         model.SetTime(DateTime.Now);
         fightController.SyncMoveAnimation(model);
         isMove = anim.GetBool("Move");
     }
 }
예제 #12
0
    public void OnSyncMoveAnimation(int roleID, PlayerMoveAnimationModel model)
    {
        GameObject go     = null;
        bool       isHave = playerDict.TryGetValue(roleID, out go);

        if (isHave)
        {
            go.GetComponent <PlayerMove>().SetAnim(model);
        }
        else
        {
            Debug.LogWarning("未找到对应的角色游戏物体进行更新移动动画状态");
        }
    }
예제 #13
0
    public void OnSyncMoveAnimation(int roleId, PlayerMoveAnimationModel model)
    {
        GameObject go     = null;
        bool       isHave = playerDict.TryGetValue(roleId, out go);

        if (isHave)
        {
            go.GetComponent <PlayerMove2>().SetMoveAnimation(model);
        }
        else
        {
            Debug.Log("Failed : SyncMoveAnimation");
        }
    }
예제 #14
0
 void SyncMoveAnimation()                //同步移动的动画
 {
     if (isMove != anim.GetBool("Move")) //当前动画状态发生了改变 需要同步
     {
         //发送同步的请求
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel()
         {
             IsMove = anim.GetBool("Move")
         };
         model.SetTime(DateTime.Now);
         battleController.SyncMoveAnimation(model);
         isMove = anim.GetBool("Move");
     }
 }
예제 #15
0
 void AsyncPlayerMoveAnimation()
 {
     if (isMove != anim.GetBool("move"))
     {
         //动画状态不同步时候
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel()
         {
             IsMove = anim.GetBool("move")
         };
         model.SetTime(DateTime.Now);
         //向服务器发起动画同步的请求
         battleController.AsyncPlayerMoveAnimation(model);
         isMove = anim.GetBool("move");
     }
 }
예제 #16
0
    //
    public void SyncPlayerMoveAnimationRequest(PlayerMoveAnimationModel model)
    {
        //向服务器发起请求
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        parameters.Add((byte)ParameterCode.RoleId, PhotonEngine.Instance.role.ID);
        parameters.Add((byte)ParameterCode.MasterRoleID, TeamInviteController.Instance.globalMasterID);

        parameters.Add((byte)ParameterCode.ChannelID, PhotonEngine.Instance.ChannelId);
        parameters.Add((byte)ParameterCode.SubCode, SubCode.SyncPlayerMoveAnimation);
        string json = JsonMapper.ToJson(model);

        parameters.Add((byte)ParameterCode.PlayerMoveAnimationModel, json);

        PhotonEngine.Instance.SendRequest(OperationCode.SyncVilligePlayer, parameters);
    }
예제 #17
0
    //处理城镇玩家移动动画
    void SyncPlayerMoveAnimationResponse(int roleid, PlayerMoveAnimationModel model)
    {
        Dictionary <int, GameObject> playerDict = GameController.Instance.playerDict;
        //根据roleid找到对应prefab,更新其位置
        GameObject playerGo = null;

        playerDict.TryGetValue(roleid, out playerGo);
        if (playerGo != null)
        {
            playerGo.GetComponent <PlayerMove>().setAnim(model);
        }
        else
        {
            Debug.LogWarning("未找到要同步动画的玩家..");
        }
    }
예제 #18
0
    public override void OnEvent(EventData eventData)
    {
        SubCode subcode = ParameterTool.GetParameters <SubCode>(eventData.Parameters, ParameterCode.SubCode, false);

        switch (subcode)
        {
        case SubCode.GetTeam:
            List <Role> list         = ParameterTool.GetParameters <List <Role> >(eventData.Parameters, ParameterCode.RoleList);
            int         masterRoleID = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.MasterRoleID, false);
            //组队成功
            if (OnGetTeam != null)
            {
                OnGetTeam(list, masterRoleID);
            }
            break;

        case SubCode.AsyncPostionAndEularAngler:
            int     roleid       = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false);
            Vector3 pos          = ParameterTool.GetParameters <Vector3Obj>(eventData.Parameters, ParameterCode.Postion).ToVector3();
            Vector3 eularAnglers = ParameterTool.GetParameters <Vector3Obj>(eventData.Parameters, ParameterCode.EulerAnglers).ToVector3();
            if (OnAsyncPostionAndRotation != null)
            {
                OnAsyncPostionAndRotation(roleid, pos, eularAnglers);
            }
            break;

        case SubCode.AsyncPlayerMoveAnimation:
            int roleid2 = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false);
            PlayerMoveAnimationModel model = ParameterTool.GetParameters <PlayerMoveAnimationModel>(eventData.Parameters, ParameterCode.PlayerMoveAnimationModel);
            if (OnAsyncPlayerMoveAnimation != null)
            {
                OnAsyncPlayerMoveAnimation(roleid2, model);
            }
            break;

        case SubCode.SyncPlayerAnimation:
            int roleid3 = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false);
            PlayerAnimationModel animationModel = ParameterTool.GetParameters <PlayerAnimationModel>(eventData.Parameters, ParameterCode.PlayerAnimationModel);
            if (OnSyncPlayerAnimation != null)
            {
                OnSyncPlayerAnimation(roleid3, animationModel);
            }
            break;
        }
    }
예제 #19
0
    //同步玩家移动动画
    void SyncPlayerMoveAnimation()
    {
        if (isCanControl == false)
        {
            return;
        }

        if (isMove != anim.GetBool("Move"))//只有动画状态发生改变才需要同步,以免频繁请求服务器
        {
            PlayerMoveAnimationModel model = new PlayerMoveAnimationModel()
            {
                IsMove = anim.GetBool("Move")
            };
            model.SetTime(DateTime.Now);
            VilligePlayerController.Instance.SyncPlayerMoveAnimationRequest(model);
            isMove = anim.GetBool("Move");
        }
    }
예제 #20
0
    public override void OnEventData(EventData data)
    {
        SubCode subCode = ParameterTool.GetSubCode(data.Parameters);

        switch (subCode)
        {
        case SubCode.ConfirmTeam:
            //Debug.Log("SubCode.ConfimTeam");
            List <Role> roleList     = ParameterTool.GetParameter <List <Role> >(data.Parameters, ParameterCode.RoleList);
            int         masterRoleId = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.MasterRoleId, false);
            OnHavingTeam(roleList, masterRoleId);
            break;

        case SubCode.SyncPositionAndRotation:
            //Debug.Log("SubCode.SyncPlayer");
            int     roleId      = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false);
            Vector3 position    = ParameterTool.GetParameter <Vector3Object>(data.Parameters, ParameterCode.Position).ToVector3();
            Vector3 eulerAngles = ParameterTool.GetParameter <Vector3Object>(data.Parameters, ParameterCode.EulerAngles).ToVector3();
            OnSyncPositionAndRotation(roleId, position, eulerAngles);
            break;

        case SubCode.SyncMoveAnimation:
            //Debug.Log("SubCode.SyncMoveAnimation");
            int roleId2 = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false);
            PlayerMoveAnimationModel model2 = ParameterTool.GetParameter <PlayerMoveAnimationModel>(data.Parameters, ParameterCode.MoveAnimation);
            OnSyncMoveAnimation(roleId2, model2);
            break;

        case SubCode.SyncAnimation:
            //Debug.Log("SubCode.SyncAnimation");
            int roleId3 = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false);
            PlayerAnimationModel model3 = ParameterTool.GetParameter <PlayerAnimationModel>(data.Parameters, ParameterCode.PlayerAnim);
            OnSyncPlayerAnimation(roleId3, model3);
            break;

        case SubCode.SyncGameState:
            //Debug.Log("SubCode.SyncGameState");
            GameStateModel model4 = ParameterTool.GetParameter <GameStateModel>(data.Parameters, ParameterCode.GameState);
            OnSyncGameState(model4);
            break;
        }
    }
예제 #21
0
 //同步角色移动动画
 void SyncTransPlayerMoveAnimation()
 {
     if (isCanControl == false)
     {
         return;
     }
     if (this.GetComponent <PlayerAttack>().hp <= 0)
     {
         return;
     }
     if (isMove != anim.GetBool("Move"))//只有动画状态发生改变才需要同步,以免频繁请求服务器
     {
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel()
         {
             IsMove = anim.GetBool("Move")
         };
         model.SetTime(DateTime.Now);
         BattleController.Instance.SyncPlayerMoveAnimationRequest(model);
         isMove = anim.GetBool("Move");
     }
 }
예제 #22
0
 //向服务器发起角色移动动画信息的同步
 public void AsyncPlayerMoveAnimation(PlayerMoveAnimationModel model) {
     Dictionary<byte, object> parameters = new Dictionary<byte, object>();
     ParameterTool.AddParameters<PlayerMoveAnimationModel>(parameters, ParameterCode.PlayerMoveAnimationModel,model);
     PhotonEngine.Instance.SendRequest(opCode, SubCode.AsyncPlayerMoveAnimation, parameters);
 }
예제 #23
0
    public override void OnEvent(EventData eventData)
    {
        int roleId = -1;
        //获取SubCode,判断是增加还是删除角色
        SubCode subCode;
        object  o = null;

        eventData.Parameters.TryGetValue((byte)ParameterCode.SubCode, out o);
        subCode = (SubCode)o;
        eventData.Parameters.TryGetValue((byte)ParameterCode.RoleId, out o);
        roleId = (int)o;
        switch (subCode)
        {
        case SubCode.SyncPosAndRotation:
            //同步角色位置和旋转
            object posObj = null;
            object rotObj = null;

            eventData.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj);
            eventData.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out rotObj);
            Vector3Obj pos      = JsonMapper.ToObject <Vector3Obj>(posObj.ToString());
            Vector3Obj rotation = JsonMapper.ToObject <Vector3Obj>(rotObj.ToString());
            SyncTransPosAndRotationResponse(roleId, pos.ToVector3(), rotation.ToVector3());
            break;

        case SubCode.SyncPlayerMoveAnimation:
            //同步角色移动动画
            PlayerMoveAnimationModel model = new PlayerMoveAnimationModel();
            eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerMoveAnimationModel, out o);
            model = JsonMapper.ToObject <PlayerMoveAnimationModel>(o.ToString());
            SyncPlayerMoveAnimationResponse(roleId, model);
            break;

        case SubCode.SyncPlayerAttackAnimation:
            //同步角色攻击动画
            PlayerAnimationModel playerAnimationModel = new PlayerAnimationModel();
            eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerAnimationModel, out o);
            playerAnimationModel = JsonMapper.ToObject <PlayerAnimationModel>(o.ToString());

            SyncPlayerAttackAnimationResponse(roleId, playerAnimationModel);
            break;

        case SubCode.SyncEnermySpawn:
            SyncEnermySpawnResponse();
            break;

        case SubCode.BackToHome:
            BackToHomeResponse();
            break;

        case SubCode.FightAgain:
            FightAgainResponse();
            break;

        case SubCode.SyncPlayerHpBar:
            int hp       = 0;
            int hurtNum  = 0;
            int targetId = 0;
            eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerHp, out o);
            hp = (int)o;
            eventData.Parameters.TryGetValue((byte)ParameterCode.EnermyHurtNum, out o);
            hurtNum = (int)o;
            eventData.Parameters.TryGetValue((byte)ParameterCode.TargetId, out o);
            targetId = (int)o;
            SyncPlayerHpBarResponse(hp, hurtNum, targetId);
            break;

        default: break;
        }
    }
예제 #24
0
파일: PlayerMove.cs 프로젝트: vin120/TaiDou
 private void SyncMoveAnimation()    //同步移动的动画
 {
     if (isMove != anim.GetBool("Move")) //当前动画状态发生了改变 需要同步
     {
         //发送同步的请求
         PlayerMoveAnimationModel model = new PlayerMoveAnimationModel(){IsMove = anim.GetBool("Move")};
         model.SetTime(DateTime.Now);
         battleController.SyncMoveAnimation(model);
         isMove = anim.GetBool("Move");
     }
 }
예제 #25
0
 private void OnAsyncPlayerMoveAnimation(int roleID, PlayerMoveAnimationModel model) {
     GameObject go = null;
     if (playerDict.TryGetValue(roleID, out go))
     {
         go.GetComponent<PlayerMove01>().SetAnimation(model);
     }
     else
     {
         Debug.LogWarning("Don't find a player gameobject");
     }
 }
예제 #26
0
    public void OnSyncMoveAnimation(int roleID,PlayerMoveAnimationModel model)
    {
        GameObject go = null;
        bool isHave = playerDict.TryGetValue(roleID, out go);

        if (isHave)
        {
            //同步动作
            go.GetComponent<PlayerMove>().SetAnim(model);
        }
        else
        {
            Debug.LogWarning("未找到对应的角色游戏物体进行更新移动动画状态");
        }
    }