/// <summary> /// 发送信息 /// </summary> /// <param name="message"></param> public void SendMessage(string message) { if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).SendMessage(message); } catch (Exception) { Debug.Log("Error in FNet.SendMessage. Now UpdatePlayers..."); UpdatePlayers(); } } }
/// <summary> /// 结束时间轴 /// </summary> public void EndPlaying() { if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).EndPlaying(); } catch (Exception) { Debug.Log("Error in FNet.EndPlaying. Now UpdatePlayers..."); UpdatePlayers(); } } }
/// <summary> /// 有玩家登录时更新玩家列表 /// </summary> public void UpdatePlayers() { if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).visitNickname(e => { playerNicknames.Clear(); foreach (var pair in e) { // pair.Key为玩家sessionID playerNicknames.Add(pair.Value.nickname, pair.Key); } Debug.Log("Player Num: " + playerNicknames.Count); }); } catch (Exception) { Debug.Log("Error in FNet.UpdatePlayers"); } } }
/// <summary> /// 登录后将聊天室注册到服务器 /// </summary> public void RegisterChatroom() { if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).registerListener("lastMessage", e => { if (e.type == ViewChangedType.REPLACE || e.type == ViewChangedType.TOUCH) { ChatManager.Instance.messageServer = e.value.ToString(); } }); } catch (Exception) { Debug.Log("Error in FNet.RegisterChatroom"); } } }
/// <summary> /// 更新游戏状态 /// </summary> public void UpdateState() { if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).visitIsPlaying(e => { if (e) { connectionState = ConnectionState.PLAYING; } else { connectionState = ConnectionState.MAIN; } }); } catch (Exception) { Debug.Log("Error in FNet.UpdateState. Now UpdatePlayers..."); } } }
/// <summary> /// 获取指定角色Hp /// </summary> /// <param name="nickname"></param> public int GetHp(string nickname) { int hp = 0; if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).visitHp(e => { hp = e[playerNicknames[nickname]].hp; }); } catch (Exception) { Debug.Log("Error in FNet.GetHp. Now UpdatePlayers..."); UpdatePlayers(); } } return(hp); }
/// <summary> /// 获取指定玩家的位置 /// </summary> /// <param name="nickname"></param> /// <returns></returns> public Vector3 GetPosition(string nickname) { Vector3 pos = Vector3.zero; if (connectionState != ConnectionState.OFFLINE) { //这里记得检查抛出异常,不然玩家人数减少后会导致连接中断 try { ViewT.getInstance(ViewTIndex).visitPosition(e => { var positionServer = e[playerNicknames[nickname]].position; pos = new Vector3(positionServer.x, 0, positionServer.y); }); } catch (Exception) { Debug.Log("Error in FNet.GetPosition. Now UpdatePlayers..."); UpdatePlayers(); } } return(pos); }