public void UpdateData(FightUserModel model) { if (TeamInfo.ContainsKey(model.id)) { //TODO:刷新玩家信息 UpdateItem(model); return; } //添加队伍成员 TeamInfo.Add(model.id, model); //将队伍成员的id进行缓存,直到收到玩家自己的信息 if (!TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id)) { cacheId.Add(model.id); return; } int userdir = TeamInfo[GameSession.Instance.UserInfo.id].direction; for (int i = 0; i < cacheId.Count; i++) { UpdateItem(TeamInfo[cacheId[i]]); } cacheId.Clear(); UpdateItem(model); }
/// <summary> /// 刷新赢三张用户手牌的绑定 /// </summary> /// <param name="model"></param> protected override void UpdateItem(FightUserModel model) { int userid = GameSession.Instance.UserInfo.id; int userdir = TeamInfo[userid].Direction; //待刷新的用户是否为玩家自己 if (model.id == userid) { //添加玩家ID和玩家手牌的绑定 if (!UserCardList.ContainsKey(model.id)) { UserCardList.Add(model.id, transform.Find("mypoker").gameObject); } else { UserCardList[model.id] = transform.Find("mypoker").gameObject; } RechangeStatus(2, model.id); } else { //玩家方位在组件中的尾缀 int dir = 0; //如果用户方位大于玩家自己的方位 if (model.Direction > userdir) { dir = model.Direction - userdir; } else { dir = GameApp.Instance.UI_HeadScript.PosList.Count - userdir + model.Direction; } if (!UserCompareList.ContainsKey(model.id)) { UserCardList.Add(model.id, transform.Find("reqCompare/Button" + dir).gameObject); } else { UserCardList[model.id] = transform.Find("reqCompare/Button" + dir).gameObject; } UserCardList[model.id].SetActive(true); int modeid = model.id; //向服务器请求比牌 UserCardList[model.id].GetComponent <Button>().onClick.RemoveAllListeners(); UserCardList[model.id].GetComponent <Button>().onClick.AddListener(delegate() { this.Write(TypeProtocol.FIGHT, FightProtocol.TPCOMCARD_CREQ, modeid); }); //添加玩家ID和玩家手牌的绑定 if (!UserCardList.ContainsKey(model.id)) { UserCardList.Add(model.id, transform.Find("playerPoker/player" + dir).gameObject); } else { UserCardList[model.id] = transform.Find("playerPoker/player" + dir).gameObject; } } UserCardList[model.id].gameObject.SetActive(false); }
/// <summary> /// 刷新玩家的信息 /// </summary> public void UpdateItem(FightUserModel model) { if (!nick) { nick = transform.Find("nick").GetComponent <Text>(); } if (!coin) { coin = transform.Find("coin").GetComponent <Text>(); } nick.text = model.nickname; coin.text = model.coin.ToString(); }
/// <summary> /// 初始化房间 /// </summary> /// <param name="model"></param> public void Init(MatchInfoModel model) { //初始化房间类型 GameType = model.GameType; //初始化队伍成员 TemeId.Clear(); TemeId.AddRange(model.Team); //初始化房间ID RoomId = model.RoomId; //初始化人数 MaxPlayer = model.MaxPlayer; //添加方位数量 for (int i = 0; i < MaxPlayer; i++) { Direction.Add(i); } //初始化玩家信息 for (int i = 0; i < model.Team.Count; i++) { FightUserModel m = new FightUserModel(); //获取用户信息 RoleInfo ri = cache.CacheFactory.user.Get(model.Team[i]); //如果获取到,则将玩家信息赋值给用户信息 if (ri != null) { m.coin = ri.coin; m.nickname = ri.nickname; m.id = ri.id; } //否则,设置为默认信息 else { m.coin = 0; m.nickname = "nickname"; m.id = model.Team[i]; } //赋值玩家当前方位 m.Direction = Direction[0]; Direction.RemoveAt(0); UserFight.Add(m.id, m); } //广播玩家信息 for (int i = 0; i < TemeId.Count; i++) { Broadcast(FightProtocol.PLAYERINFO_BRQ, UserFight[TemeId[i]]); } DebugUtil.Instance.LogToTime(RoomId + "房间初始化成功"); }
/// <summary> /// 刷新队伍成员信息 /// </summary> /// <param name="model"></param> public void UpdateTeam(FightUserModel model) { if (TeamInfo.ContainsKey(model.id)) { if (TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id)) { //TODO:更新玩家信息 GameApp.Instance.UI_HeadScript.UpdateItem(model, TeamInfo[GameSession.Instance.UserInfo.id].direction); } return; } switch (GameSession.Instance.RoomeType) { //如果当前游戏类型是赢三张,则直接刷新赢三张手牌脚本 case SConst.GameType.WINTHREEPOKER: GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().UpdateData(model); break; } //添加队伍成员 TeamInfo.Add(model.id, model); //将队伍成员的id进行缓存,直到收到玩家自己的信息 if (!TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id)) { cacheId.Add(model.id); return; } int userdir = TeamInfo[GameSession.Instance.UserInfo.id].direction; for (int i = 0; i < cacheId.Count; i++) { GameApp.Instance.UI_HeadScript.UpdateItem(TeamInfo[cacheId[i]], userdir); } cacheId.Clear(); GameApp.Instance.UI_HeadScript.UpdateItem(model, userdir); if (TeamInfo.Count >= GameApp.Instance.GetPlayerCount()) { //TODO:游戏即将开始 } }
/// <summary> /// 当前待刷新的玩家信息和玩家自己的方位 /// </summary> /// <param name="model"></param> /// <param name="userdir"></param> public void UpdateItme(FightUserModel model, int userdir) { //移除原有信息 if (HeadList.ContainsKey(model.id)) { HeadList[model.id].GetComponent <HeadItem>().UpdateItem(model); return; } //头像待刷新的位置 Vector3 pos; //如果是玩家自己,则直接使用第零个 if (model.id == GameSession.Instance.UserInfo.id) { pos = PosList[0]; } else { //如果玩家方位大于自己的方位的话 if (model.Direction > userdir) { //直接用玩家的方位减去自己的方位即为玩家的头像位置 pos = PosList[model.Direction - userdir]; } else { //用玩家最大人数减去自己的方位再加上玩家的方位,即为玩家的位置 pos = PosList[PosList.Count - userdir + model.Direction]; } } //加载头像到页面中 string path = GameResource.ItemResourcePath + GameData.Instance.ItemName[GameResource.ItemTag.TPHEAD]; GameObject go = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(path, transform, pos); go.AddComponent <HeadItem>().UpdateItem(model); HeadList.Add(model.id, go); }
public void MessageReceiveCallBack(SocketModel model) { switch (model.command) { //玩家信息 case FightProtocol.PLAYERINFO_BRQ: { FightUserModel user = model.GetMessage <FightUserModel>(); GameApp.Instance.UI_FightScript.UpdateTeam(user); } break; //玩家请求准备结果 case FightProtocol.ENTERFIGHT_SRES: { int res = model.GetMessage <int>(); switch (res) { case -1: case 0: GameApp.Instance.CommonHintDlgScript.OpenHint("已准备"); break; case -2: GameApp.Instance.CommonHintDlgScript.OpenHint("房间错误"); break; } } break; //确认准备的玩家列表 case FightProtocol.ENTERFIGHT_BRQ: { //已经准备的玩家id的数组 List <int> arr = model.GetMessage <List <int> >(); } break; //玩家摸到的牌 case FightProtocol.TPDRAWCARD_BRQ: { List <PokerModel> poker = new List <PokerModel>(); } break; //摸牌的玩家 case FightProtocol.TPDRAWCARDUSER_BRQ: { int id = model.GetMessage <int>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().DrawCard(id); } break; //获取底注 case FightProtocol.TPBETBASECOIN_BRQ: { int coin = model.GetMessage <int>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().BetBaseCoin(coin); } break; /// <summary> /// 返回下注结果 /// -1 请求错误,没有此玩家 /// -2 请求错误,当前不是此玩家 /// -3 请求错误,游戏尚未开始 /// -4 低于当前可下最小金额 /// -5 大于当前可下最大金额 /// </summary> case FightProtocol.TPBETCOIN_SRES: { int res = model.GetMessage <int>(); switch (res) { case -4: { GameApp.Instance.CommonHintDlgScript.OpenHint("小于当前最小金额"); } break; case -5: { GameApp.Instance.CommonHintDlgScript.OpenHint("大于当前最大金额"); } break; } } break; //玩家下注广播 case FightProtocol.TPBETCOIN_BRQ: { TPBetModel m = model.GetMessage <TPBetModel>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().BetCoin(m.coin); //播放音效,默认加注,否则跟注 string path = GameResources.TPAudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPADDBETCOIN]; if (!m.isAdd) { path = GameResources.TPAudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPWITHBETCOIN]; } GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); } break; case FightProtocol.TPCHECKCARD_SRES: { GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().CheckCard(model.GetMessage <List <PokerModel> >()); } break; case FightProtocol.TPCHECKCARD_BRQ: { string path = GameResources.AudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPCHECKCARD]; GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().RechangeStatus(0, model.GetMessage <int>()); } break; case FightProtocol.TPDISCARD_BRQ: { GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().RechangeStatus(1, model.GetMessage <int>()); } break; case FightProtocol.TPCOMCARD_BRQ: { TPCompareModel tpcm = model.GetMessage <TPCompareModel>(); string path = GameResources.AudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPCOMCARD]; GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().Compare(tpcm); } break; //游戏结算 case FightProtocol.GAMESETTLMENT_BRQ: { GameApp.Instance.UI_FightScript.GetUIFight <TPUI_Fight>().GameOver(model.GetMessage <List <TPSettlementModel> >()); } break; } }
/// <summary> /// 根据游戏刷新具体的功能组件 /// </summary> /// <param name="model"></param> protected virtual void UpdateItem(FightUserModel model) { }