private void CheckerPlayersHP(Message msg) { GameMgrRouter.FightSystemResponse res = GameMgrRouter.FightSystemRequestCallback(msg); if (res.opt.Equals(FightSystemKeys.QUERY_PLAYERS_HP)) { // res.msg 格式为 user_id|HP#user_id|HP string [] player_hp = res.msg.Split('#'); for (int i = 0; i < player_hp.Length; i++) { string [] tmp = player_hp[i].Split('|'); try { int userID = Convert.ToInt32(tmp[0]); int hp = Convert.ToInt32(tmp[1]); AttackPlayer(userID, hp); } catch (Exception) { } } } else if (res.opt.Equals(FightSystemKeys.ATTACKED)) { try { string[] ss = res.msg.Split('#'); int userID = Convert.ToInt32(ss[0]); int kill = Convert.ToInt32(ss[1]); if (userID == this.userID) { totalKillCount.val = kill; } } catch (Exception) { } } }
private void RegisterMatchingEvent() { btnBeginMatching = GetControl <Button>("btn_play_matching"); btnBeginMatching.onClick.AddListener(() => { object isMatching = MemeryCacheMgr.Instance.Get(DTSKeys.MATCHING); if (isMatching is false || isMatching is null) { GameMgrRouter.PlayWithOthersRequestCall(userID, 1, matching_time); } }); btnCancelMatching = GetControl <Button>("btn_cancel_matching"); btnCancelMatching.onClick.AddListener(() => { if (MemeryCacheMgr.Instance.Get(DTSKeys.MATCHING) is true) { btnBeginComputerGame.gameObject.SetActive(true); btnBeginMatching.gameObject.SetActive(true); btnCancelMatching.gameObject.SetActive(false); MemeryCacheMgr.Instance.Set(DTSKeys.MATCHING, false); GameMgrRouter.PlayWithOthersRequestCall(userID, 2, matching_time); } }); // 注册开始匹配,服务器同意结果 的回调函数 NetworkMgr.Instance.AddMsgListener(ServiceID.GAME_MGR_PLAY_WITH_OTHERS_SERVICE, GameMgrPlayerWithOthers); // 查询匹配结果回调, 发起匹配后没一秒查询一次 NetworkMgr.Instance.AddMsgListener(ServiceID.GAME_MGR_QUERY_MATCHING_RESULT_SERVICE, GameMgrQueryMathingResult); }
private void GameMgrPlayerWithOthers(Message msg) { GameMgrRouter.PlayWithOthersResponse response = NetworkMgr.ParseCallback <GameMgrRouter.PlayWithOthersResponse>(msg); if (response.ret == 0) { if (response.mode == 1) // 开始匹配成功 { if (MemeryCacheMgr.Instance.Get(DTSKeys.MATCHING) is true) { return; } MemeryCacheMgr.Instance.Set(DTSKeys.MATCHING, true); btnBeginComputerGame.gameObject.SetActive(false); btnBeginMatching.gameObject.SetActive(false); btnCancelMatching.gameObject.SetActive(true); MonoMgr.Instance.StartDelayEventMultiTimes(1000, (int)matching_time, () => { // 发起 matching_time 次查询,每次间隔 1000 ms if (MemeryCacheMgr.Instance.Get(DTSKeys.MATCHING) is false) { return; } GameMgrRouter.QueryMatchingResultRequestCall(2, userID); }); } else if (response.mode == 2) // 取消匹配成功 { } } }
void AoeFreezeCreate(Message msg) { GameMgrRouter.AoeFreezeResponse res = GameMgrRouter.AoeFreezeRequestCallback(msg); if (res.ret != 0) { return; } string[] ss = res.pos.Split(';'); Vector3 pos = new Vector3(); try { pos.x = (float)Convert.ToDouble(ss[0]); pos.y = (float)Convert.ToDouble(ss[1]); pos.z = (float)Convert.ToDouble(ss[2]); } catch (Exception ex) { Debug.Log("aoe freeze parse fail." + ex.ToString()); return; } ResourceMgr.Instance.LoadAsync <GameObject>("model/env/Game/ball", (obj) => { obj.transform.localScale = Vector3.one * 5; obj.transform.position = pos; obj.AddComponent <FreezeController>(); MonoMgr.Instance.StartDelayEvent(3000, () => { GameObject.Destroy(obj); }); }); }
private void GetRobotControllerCallback(Message message) { GameMgrRouter.RegisterRobotResponse res = GameMgrRouter.RegisterRobotRequestCallback(message); if (res.ret == 0) { playersController.AddRobot(res.robot_id); } }
private void QueryRobotBornPointCallback(Message msg) { GameMgrRouter.QueryBornPointResponse res = GameMgrRouter.QueryBornPointRequestCallback(msg); if (res.ret == 0) { LoadRobot(res.user_id, res.born); } }
void RandomWeapon() { // TODO 这里初始化武器有一点bug 所以延时了下。待修复。。。 MonoMgr.Instance.StartDelayEvent(1000, () => { GameMgrRouter.SolveWeaponsRequestCall(soldier.GetUserID(), UnityEngine.Random.Range(0, 3)); }); }
void Update() { if (checkPlayers.CheckAndRun()) { GameMgrRouter.FightSystemRequestCall(FightSystemKeys.QUERY_PLAYERS_HP, roomID, ""); } totalPlayerCount.val = characters.Count; }
private void RegisterPlayWithRobotEvent() { btnBeginComputerGame = GetControl <Button>("btn_play_computer"); NetworkMgr.Instance.AddMsgListener(ServiceID.GAME_MGR_PLAY_ALONE_SERVICE, GameMgrPlayerAloneCallback); btnBeginComputerGame.onClick.AddListener(() => { GameMgrRouter.PlayAloneRequestCall(userID); }); }
void OnTriggerEnter(Collider other) { if (!other.name.Equals("PlayerA")) { Vector3 pos = gameObject.transform.position; int roomID = (int)MemeryCacheMgr.Instance.Get(DTSKeys.ROOM_ID); GameMgrRouter.AoeFreezeRequestCall(roomID, string.Format("{0:F};{1:F};{2:F}", pos.x, pos.y, pos.z)); GameObject.Destroy(gameObject); } }
void OnTriggerEnter(Collider collider) { if (collider.name == "PlayerA") { try { int userID = (int)MemeryCacheMgr.Instance.Get(DTSKeys.USER_ID); GameMgrRouter.AddHpRequestCall(30, userID); } catch (Exception) { } GameObject.Destroy(gameObject); } }
public void GetNewWeaponCallback(Message msg) { GameMgrRouter.NewWeaponResponse res = GameMgrRouter.NewWeaponRequestCallback(msg); if (res.ret != 0) { return; } if (!characters.ContainsKey(res.user_id)) { return; } Soldier soldier = characters[res.user_id] as Soldier; soldier.SetWeapon(WeaponBase.ReflectionCreator(WeaponBoxBase.weaponTypeDict[WeaponBoxBase.IntToWeaponType[res.w_type]]), res.w_pos); }
public void PlayerAttacked(object obj) { try { if (obj is RoleHurtEvent roleEvent && characters.ContainsKey(roleEvent.hittedUserID)) { // [1] 直接扣血 // characters[roleEvent.userID].Hit(roleEvent.hurtHP); // [2] 服务端决定扣血 回调 CheckerPlayersHP //Debug.Log(roleEvent.attackUserID + " attack " + roleEvent.hittedUserID + " hp " + roleEvent.hurtHP); GameMgrRouter.FightSystemRequestCall(FightSystemKeys.ATTACKED, roomID, string.Format("{0},{1},{2}", roleEvent.attackUserID, roleEvent.hittedUserID, roleEvent.hurtHP)); } } catch (Exception) { } }
public void ChangedWeaponCallback(Message msg) { GameMgrRouter.SolveWeaponsResponse res = GameMgrRouter.SolveWeaponsRequestCallback(msg); if (res.ret != 0) { return; } if (!characters.ContainsKey(res.user_id)) { return; } Soldier soldier = characters[res.user_id] as Soldier; soldier.bag.ChangeNowUsedWeapon(res.wid); soldier.FreshWeapon(res.wid); }
private void GameMgrQueryMathingResult(Message msg) { if (MemeryCacheMgr.Instance.Get(DTSKeys.MATCHING) is false) { return; } GameMgrRouter.QueryMatchingResultResponse response = GameMgrRouter.QueryMatchingResultRequestCallback(msg); if (response.ret == 0 && response.room_id > 0) { MemeryCacheMgr.Instance.Set(DTSKeys.MATCHING, false); BeginGameAndChangeScene(response.room_id); } else { Debug.Log("query matching result. not ready. msg = " + response.err_msg); } }
private void LoadOtherPlayer(int otherUserID) { if (otherUserID < 0) { GameMgrRouter.QueryBornPointRequestCall(otherUserID, roomID); // call back QueryRobotBornPointCallback return; } // 加载其他玩家控制的角色,命名为 PlayerA#用户ID ResourceMgr.Instance.LoadAsync <GameObject>("model/PlayerA", (obj) => { if (obj == null) { Debug.Log("Player load fail"); return; } Debug.Log("other_user_id" + otherUserID); obj.name = "PlayerA#" + Convert.ToString(otherUserID); obj.transform.position = new Vector3(0, 20, 0); WeaponBase weapon = new WeaponAK47(); Soldier soldier = new Soldier(obj, new AnimatorHandler(obj.transform.GetComponent <Animator>() as Animator), SoldierStateBase.soldierStateWalk, CharacterType.OTHER_PLAYER, otherUserID, roomID); OtherPlayerController soldierController = obj.AddComponent <OtherPlayerController>(); soldierController.soldier = soldier; AddCharactor(otherUserID, soldier); }); }
void Update() { soldier.SetSpeeds(speeds); // 调手感用,编辑器调试时能让速度直接改变 action.Init(); if (OperationMode.Instance.IsLock()) { if (reportTransform.CheckAndRun()) { UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform()); } return; } if (soldier.IsFreeze()) { EventMgr.Instance.EventTrigger(EventName.MAIN_PLAYER_ACTION, action); if (reportTransform.CheckAndRun()) { UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform()); } return; } WeaponChangeAction(); if (Input.GetMouseButton(0)) { action.Add(EPlayerAction.SHOOT); } if (Input.GetMouseButton(1)) { action.Add(EPlayerAction.SHOOT_BURST); } if (Input.GetKeyDown(KeyCode.Alpha3)) { action.Add(EPlayerAction.SHOOT_LINE); } if (Input.GetKey(KeyCode.R)) { action.Add(EPlayerAction.RELOAD); } if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { action.Add(EPlayerAction.BEGIN_RUN); } else { action.Add(EPlayerAction.END_RUN); } if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) { action.Add(EPlayerAction.BEGIN_CROUCH); } else { action.Add(EPlayerAction.END_CROUCH); } if (Input.GetKey(KeyCode.Space)) { action.Add(EPlayerAction.DUMP); } float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); float mouseX = Input.GetAxis("Mouse X"); float mouseY = Input.GetAxis("Mouse Y"); action.SetMove(h, v); action.SetMouse(mouseX, mouseY); // 在武器箱面前,按了E,换武器 if (MemeryCacheMgr.Instance.Get(UICacheKeys.BULLET_BOX_WARN_MESSAGE) != null && Input.GetKeyDown(KeyCode.E)) { if (MemeryCacheMgr.Instance.Get(UICacheKeys.WEAPON_BOX) is WeaponBoxBase weaponBox) { soldier.SetWeapon(weaponBox.CreatorWeapon(), weaponBox.GetWeaponBagPos()); GameMgrRouter.NewWeaponRequestCall((int)weaponBox.GetWeaponTypeID(), soldier.GetUserID(), (int)weaponBox.GetWeaponBagPos()); weaponBox.Destory(); } } // 触发直接影响角色行为。不等服务端校验完,体验好一点。 EventMgr.Instance.EventTrigger(EventName.MAIN_PLAYER_ACTION, action); if (reportTransform.CheckAndRun()) { UserSynchronizationRouter.ReportTransform(soldier.GetUserID(), soldier.GetTransform()); } if (reportActions.CheckAndRun()) { ReportActions(); } }
private void GetRobotController(object obj) { int robotKey = (int)obj; GameMgrRouter.RegisterRobotRequestCall(userID, roomID, robotKey); }
public void ChangeWeaponCall(WeaponBagPos pos) { GameMgrRouter.SolveWeaponsRequestCall(soldier.GetUserID(), (int)pos); }