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; } }
//向服务器发起角色移动动画信息的同步 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); }
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; } }
public void SetAnimation(PlayerMoveAnimationModel model) { DateTime dt = model.GetTime(); if(dt>lastdateTime) { anim.SetBool("move", model.IsMove); lastdateTime = dt; } }
// public void setAnim(PlayerMoveAnimationModel model) { DateTime dt = model.GetTime(); if (dt > lastAnimTime) { anim.SetBool("Move", model.IsMove); lastAnimTime = dt; } }
public void SetMoveAnimation(PlayerMoveAnimationModel model) { DateTime dateTime = model.GetTime(); if (dateTime > lastUpdateTime) //状态是最新的,需要更新 { anim.SetBool("Move", model.IsMove); lastUpdateTime = dateTime; } }
public void SetAnim(PlayerMoveAnimationModel model) { //print(model.Time + ":" + model.IsMove); DateTime dt = model.GetTime(); if (dt > lastUpdateTime) { anim.SetBool("Move", model.IsMove); lastUpdateTime = dt; } }
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"); } }
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"); } }
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"); } }
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("未找到对应的角色游戏物体进行更新移动动画状态"); } }
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"); } }
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"); } }
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"); } }
// 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); }
//处理城镇玩家移动动画 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("未找到要同步动画的玩家.."); } }
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; } }
//同步玩家移动动画 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"); } }
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; } }
//同步角色移动动画 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"); } }
//向服务器发起角色移动动画信息的同步 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 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; } }
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"); } }
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"); } }
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("未找到对应的角色游戏物体进行更新移动动画状态"); } }