private IEnumerator ShowHdCdOnGameOver(DdzbaseEventArgs args) { yield return(new WaitForSeconds(2f)); ClearAllOutCds(); ShowHandCds(App.GetGameData <GlobalData>().GetLeftPlayerSeat, args.IsfObjData.GetSFSArray("users")); }
public override void OnGetGameInfo(ISFSObject gameInfo) { var eventArgs = new DdzbaseEventArgs(gameInfo); Facade.EventCenter.DispatchEvent(GlobalConstKey.KeyGetGameInfo, eventArgs); App.GetGameData <DdzGameData>().FinishRoomInfo = true; }
/// <summary> /// 重连游戏 /// </summary> /// <param name="args"></param> protected void OnRejoinGame(DdzbaseEventArgs args) { OnGetGameInfo(args); //获取房间基本参数 //初始化解散房间 var landRequestData = args.IsfObjData; //如果接收重连解散信息则不响应 if (!landRequestData.ContainsKey("hup")) { return; } HandupView.SetActive(true); var time = (int)(landRequestData.GetLong("svt") - landRequestData.GetLong("hupstart")); time = _cdtime - time; time = time < 0 ? 0 : time; SetTime(_cdtime); StartCoroutine(CuntDownTime(time)); string[] ids = landRequestData.GetUtfString("hup").Split(','); CreateHundItems(); for (int i = 0; i < ids.Length; i++) { int userId = int.Parse(ids[i]); HideChoiseBtns(userId); var item = GetItem(userId); if (item == null) { continue; } item.SetItemType(3); } }
protected virtual void OnGetRejionGameInfo(DdzbaseEventArgs args) { var data = args.IsfObjData; if (data.ContainsKey(NewRequestKey.KeyLandLord)) { int landLord = data.GetInt(NewRequestKey.KeyLandLord); LandMark.SetActive(Info.Seat == landLord); } else { LandMark.SetActive(false); } var ddzUserInfo = ((DdzUserInfo)Info); if (ddzUserInfo.Network) { UserOnLine(); } else { UserIdle(); } SetAutoState(ddzUserInfo.AutoState); }
/// <summary> /// 检查游戏状态 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void CheckGameStatus(object sender, DdzbaseEventArgs args) { var data = args.IsfObjData; if (data.ContainsKey(NewRequestKey.KeyClientArgs2)) { var cargsData = data.GetSFSObject(NewRequestKey.KeyClientArgs2); _roomPlayInfo = cargsData.GetUtfString(NewRequestKey.KeyModel).Equals("2") ? "跑得快15张," : "跑得快16张,"; _roomPlayInfo += " 人数:" + cargsData.GetUtfString(NewRequestKey.KeyPlen) + "人"; if (cargsData.GetUtfString(NewRequestKey.KeyHeisan) == "1") { _roomPlayInfo += ",黑三先出"; } } if (data.ContainsKey(NewRequestKey.KeyOwerId)) { _owerId = data.GetInt(NewRequestKey.KeyOwerId); } if (data.ContainsKey(NewRequestKey.KeyState) && data.GetInt(NewRequestKey.KeyState) == GlobalConstKey.StatusIdle) { if (data.ContainsKey(NewRequestKey.KeyCurRound) && data.GetInt(NewRequestKey.KeyCurRound) <= 1) { IsStartGame = false; return; } } IsStartGame = true; }
/// <summary> /// 当有人叫了分了 /// </summary> /// <param name="args"></param> protected void OnTypeGrab(DdzbaseEventArgs args) { var data = args.IsfObjData; var gdata = App.GetGameData <DdzGameData>(); //分数 var score = data.GetInt(GlobalConstKey.C_Score); var seat = data.GetInt(GlobalConstKey.C_Sit);//座位 var sex = gdata.GetOnePlayerInfo(seat, true).SexI; if (sex != 0 && sex != 1) { sex = 0; } string source = sex == 1 ? "man" : "woman"; //string soundName; //if (score > 0) //{ // soundName = string.Format("{0}{1}_{2}fen", LanguageType, sex, score); //LanguageType + sex + "_" + score + "fen"; //叫很喊出分数 //} //else //{ // soundName = string.Format("{0}{1}_{2}fen", LanguageType, sex, score); //LanguageType + sex + "_" + "bujiao"; //0分布叫 //} string soundName = string.Format("{0}{1}_{2}{3}", LanguageType, sex, score, gdata.RobModel ? "qiangdizhu" : "fen"); PlayAudioOneShot(soundName, source); }
/// <summary> /// 当确定地主后,看自己是不是地主,来判断是否显示按钮 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected override void OnFirstOut(object sender, DdzbaseEventArgs args) { base.OnFirstOut(sender, args); var data = args.IsfObjData; _landSeat = data.GetInt(RequestKey.KeySeat); if (_landSeat != App.GetGameData <GlobalData>().GetSelfSeat) { HideAllBtns(); return; } _lastOutData.PutInt(RequestKey.KeySeat, _landSeat); //如果没有加倍设置 if (!data.GetBool(NewRequestKey.KeyJiaBei)) { DisableAllBtns(); } else { HideAllBtns(); } }
/// <summary> /// 进入游戏,接受到数据 /// </summary> /// <param name="args"></param> protected virtual void OnGetGameInfo(DdzbaseEventArgs args) { var sfsObj = args.IsfObjData; if (sfsObj == null) { return; } if (!sfsObj.ContainsKey("cargs2")) { return; } var cargs2 = sfsObj.GetSFSObject("cargs2"); if (cargs2 == null) { return; } if (!cargs2.ContainsKey("-qt")) { return; } var qt = cargs2.GetUtfString("-qt"); _robModel = qt.Equals("1") || qt.Equals("2"); }
private void OnGetRejoionData(object obj, DdzbaseEventArgs args) { var data = args.IsfObjData; if (data.ContainsKey(NewRequestKey.KeyState) && data.GetInt(NewRequestKey.KeyState) == GlobalConstKey.StatusChoseBanker) { if (!DDzUtil.IsServDataContainAllKey( new[] { NewRequestKey.KeyCurrp, NewRequestKey.KeyQt, NewRequestKey.KeyMinScore }, data)) { SetAllBtnsActive(false); return; } //当前谁发言 int curCallSeat = data.GetInt(NewRequestKey.KeyCurrp); if (App.GetGameData <GlobalData>().GetSelfSeat == curCallSeat) { ServDataTemp = data; RefreshUiInfo(); } else { SetAllBtnsActive(false); } } }
/// <summary> /// 当收到加倍已经结束的信息 /// </summary> protected virtual void OnDoubleOver(object sender, DdzbaseEventArgs args) { if (UserDataTemp == null) { return; } var data = args.IsfObjData; var rates = data.GetIntArray("jiabei"); var len = rates.Length; var thisUserSeat = UserDataTemp.GetInt(RequestKey.KeySeat); for (int i = 0; i < len; i++) { if (thisUserSeat != i) { continue; } if (rates[i] > 1) { SetSpeakSpState(true, SpkJiabei); ShowJiaBeiSp.gameObject.SetActive(true); } else { SetSpeakSpState(true, SpkBuJiabei); } break; } StopCoroutine("HideJiabeiSp"); StartCoroutine("HideJiabeiSp"); }
/// <summary> /// 当轮到某人要准备要叫分时 /// </summary> protected void OnTypeGrabSpeaker(object obj, DdzbaseEventArgs args) { var data = args.IsfObjData; if (!DDzUtil.IsServDataContainAllKey( new[] { RequestKey.KeySeat, NewRequestKey.KeyTttype }, data)) { return; } if (App.GetGameData <GlobalData>().GetSelfSeat != data.GetInt(RequestKey.KeySeat)) { SetAllBtnsActive(false); return; } if (ServDataTemp == null) { ServDataTemp = new SFSObject(); } ServDataTemp = data; //把与"qt"相同引用值的 "ttype" 的值赋值过来 ServDataTemp.PutInt(NewRequestKey.KeyQt, data.GetInt(NewRequestKey.KeyTttype)); RefreshUiInfo(); }
protected virtual void OnUserOut(object sender, DdzbaseEventArgs args) { if (UserDataTemp == null) { return; } var data = args.IsfObjData; if (data == null || !data.ContainsKey(RequestKey.KeySeat)) { return; } if (UserDataTemp != null && data.GetInt(RequestKey.KeySeat) == UserDataTemp.GetInt(RequestKey.KeySeat)) { //如果已经开始游戏了,则不做玩家离开设置 if (App.GetGameData <GlobalData>().IsStartGame) { SetDuanXianSp(true); } else { gameObject.SetActive(false); } } }
/// <summary> /// 根据服务器数据设置用户信息 /// </summary> protected override void SetUserInfo(object sender, DdzbaseEventArgs args) { var data = args.IsfObjData; SetOtherPlayerData(data); /* //如果是选择加倍阶段则不显示出牌操作相关按钮 * if (data.ContainsKey(NewRequestKey.KeyState) && * data.GetInt(NewRequestKey.KeyState) == GlobalConstKey.StatusDouble) * { * * * var users = data.GetSFSArray(RequestKey.KeyUserList); * * for (int i = 0; i < users.Count; i++) * { * ISFSObject user = users.GetSFSObject(i); * int userSeat = user.GetInt("seat"); * if (userSeat != UserDataTemp.GetInt(RequestKey.KeySeat)) continue; * * * * var rate = user.GetInt("rate"); * if (rate > 0) * ShowSpeakSp.spriteName = rate > 1 ? SpkJiabei : SpkBuJiabei; * else * { * SeltingDoublelabel.gameObject.SetActive(true); * SeltingDoublelabel.text = "正在选择加倍"; * } * break; * } * }*/ }
protected override void OnAlloCateCds(DdzbaseEventArgs args) { base.OnAlloCateCds(args); var data = args.IsfObjData; CardCount = data.GetIntArray(GlobalConstKey.C_Cards).Length; }
/// <summary> /// 如果有人出牌 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected override void OnTypeOutCard(object sender, DdzbaseEventArgs args) { //_mayoutCdsTemp = null; //与ResetHdCds,AddHdCds,RemoveHdCds相关 if (HdCdctrlInstance != null) { HdCdctrlInstance.SetActiveHdcdsBack(false); } base.OnTypeOutCard(sender, args); _lastOutData = args.IsfObjData; if (App.GetGameData <GlobalData>().PlayerMaxNum == 3) { if (_lastOutData.GetInt(RequestKey.KeySeat) == App.GetGameData <GlobalData>().GetLeftPlayerSeat) { OnNotSelfOutCds(_lastOutData); return; } } else { if (_lastOutData.GetInt(RequestKey.KeySeat) == App.GetGameData <GlobalData>().GetRightPlayerSeat) { OnNotSelfOutCds(_lastOutData); return; } } HideAllBtns(); }
/// <summary> /// 当是上家出牌时,之前说的话要消失 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void OnTypeOutCard(object sender, DdzbaseEventArgs args) { if (!_isleftPlayerActive || UserDataTemp == null) { return; } var data = args.IsfObjData; var curSeat = data.GetInt(RequestKey.KeySeat); if (curSeat == UpSeatInt) { SetSpeakSpState(false); } else if (curSeat == OwnSeatInt) { SetSpeakSpState(false); var cdsLen = data.GetIntArray(RequestKey.KeyCards).Length; var curselfCdsNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum) - cdsLen; UserDataTemp.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum); var globalUserInfoLeft = App.GetGameData <GlobalData>().GetUserInfo(curSeat); if (globalUserInfoLeft != null) { globalUserInfoLeft.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum); } App.GetGameData <GlobalData>().OnSomePlayerHdcdsChange(curSeat, curselfCdsNum); CdNumLabel.text = curselfCdsNum.ToString(CultureInfo.InvariantCulture); if (curselfCdsNum > 0 && curselfCdsNum < 2 & JingDengAnim != null) { JingDengAnim.SetActive(true); } } }
/// <summary> /// 当游戏结算时 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> void OnTypeGameOver(object sender, DdzbaseEventArgs args) { //隐藏所有出牌操作按钮 HideAllBtns(); StartCoroutine(OnGameOverieumer()); }
/// <summary> /// 重连游戏 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected virtual void OnRejoinGame(object sender, DdzbaseEventArgs args) { var data = args.IsfObjData; if (!data.ContainsKey(RequestKey.KeyUser)) { return; } var userSelf = data.GetSFSObject(RequestKey.KeyUser); if (!userSelf.ContainsKey(GlobalConstKey.C_Cards)) { return; } var cards = userSelf.GetIntArray(GlobalConstKey.C_Cards); if (cards == null || cards.Length < 0) { return; } ResetHdCds(cards); RefreshUiInfo(); }
/// <summary> /// 当一局游戏结算时 /// </summary> /// <param name="args"></param> protected void OnTypeOneRoundOver(DdzbaseEventArgs args) { OneRoundRecordData = args.IsfObjData; if (OneRoundRecordData == null) { return; } if (BackToHallBtn) { SetActive(BackToHallBtn, !App.GetGameData <DdzGameData>().IsRoomGame); if (BtnGrid != null) { BtnGrid.repositionNow = true; BtnGrid.Reposition(); } } var userDataArray = OneRoundRecordData.GetSFSArray("users"); int ante = OneRoundRecordData.GetInt("ante"); int len = _userRecords.Length; for (int i = 0; i < len; i++) { SetUserRecord(_userRecords[i], userDataArray.GetSFSObject(i), i, ante); } RefreshPlayerInfo(args.IsfObjData); //刷新玩家信息 StartCoroutine(ShowUiInfoLater()); //延迟显示结算界面 }
private IEnumerator ShowHdCdOnGameOver(DdzbaseEventArgs args) { yield return(new WaitForSeconds(2f)); ClearAllOutCds(); ShowHandCds(App.GetGameData <GlobalData>().GetSelfSeat, args.IsfObjData.GetSFSArray("users")); var isfdata = args.IsfObjData; if (!isfdata.ContainsKey(NewRequestKey.KeySpring)) { yield break; } //判断是否显示春天特效 if (!isfdata.GetBool(NewRequestKey.KeySpring)) { yield break; } ParticalChunTian.SetActive(false); ParticalChunTian.SetActive(true); ParticalChunTian.GetComponent <ParticleSystem>().Stop(); ParticalChunTian.GetComponent <ParticleSystem>().Play(); if (isfdata.GetInt("gold") > 0) { Facade.Instance <MusicManager>().Play("winchuntian"); //Debug.Log("-><color=#9400D3>" + "春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn春天——WIn" + "</color>"); } else { Facade.Instance <MusicManager>().Play("losechuntian"); //Debug.Log("-><color=#9400D3>" + "春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost春天——Lost" + "</color>"); } }
protected void OnGameInfo(DdzbaseEventArgs args) { var data = args.IsfObjData; if (data.ContainsKey(NewRequestKey.KeyRule)) { if (RuleInfoLabel != null) { RuleInfoLabel.text = data.GetUtfString(NewRequestKey.KeyRule); } } FinishAnim = false; AllowReady = false; if (HeadImage == null) { return; } var selfInfo = App.GameData.GetPlayerInfo(); if (selfInfo == null) { return; } var ad = HeadImage.GetComponent <Common.Adapters.NguiTextureAdapter>(); YxFramwork.Common.DataBundles.PortraitDb.SetPortrait(selfInfo.AvatarX, ad, selfInfo.SexI); //只显示自己的头像 GetAllPlayerInfo(); //获取所有玩家信息 }
/// <summary> /// 当是上家出牌时,之前说的话要消失 /// </summary> /// <param name="args"></param> private void OnTypeOutCard(DdzbaseEventArgs args) { var data = args.IsfObjData; int seat = data.GetInt(GlobalConstKey.C_Sit); var sex = App.GetGameData <DdzGameData>().GetOnePlayerInfo(seat, true).SexI; if (sex != 0 && sex != 1) { sex = 0; } var cards = data.GetIntArray(RequestKey.KeyCards); string source = sex == 1 ? "man" : "woman"; //string soundName = string.Format("{0}{1}_{2}", LanguageType, sex, GetAudioName(cards)); // LanguageType + sex + "_" + GetAudioName(cards); string soundName; if (data.ContainsKey("ctype")) { int cardType = data.GetInt("ctype"); soundName = string.Format("{0}{1}_{2}", LanguageType, sex, GetAudioName(cards, (CardType)cardType)); } else { soundName = string.Format("{0}{1}_{2}", LanguageType, sex, GetAudioName(cards)); } PlayAudioOneShot(soundName, source); int cardCount = cards.Length; string outCardSoundName = cardCount > 3 ? "k_3morecard" : "k_outcard"; PlayAudioOneShot(outCardSoundName); }
/// <summary> /// 当确定地主后,看自己是不是地主,来判断是否显示按钮 /// </summary> /// <param name="args"></param> protected override void OnFirstOut(DdzbaseEventArgs args) { base.OnFirstOut(args); //底牌加入到手中 var data = args.IsfObjData; var gdata = App.GetGameData <DdzGameData>(); int speakerSeat = data.GetInt(RequestKey.KeySeat); //地主座位号 _isMyTurn = speakerSeat == gdata.SelfSeat; //因为注册委托先后顺序的问题,不能用gdata.ImBanker判断 if (!_isMyTurn) { HideAllBtns(); return; } if (data.ContainsKey(NewRequestKey.JiaBeiSeat)) { HideAllBtns(); } else { SetBtnActive(ChuPaiBtn, true); SetBtnState(ChuPaiBtn, false); } _lastOutData.PutInt(RequestKey.KeySeat, speakerSeat); //地主位置存入缓存 HdCdctrlInstance.ReSetHandCds(HdCdsListTemp.ToArray()); }
private void OnGetRejoionData(object obj, DdzbaseEventArgs args) { IvtWechatFriendBtn.SetActive(false); var data = args.IsfObjData; if (data.ContainsKey(NewRequestKey.KeyRoomId)) { _roomId = data.GetInt(NewRequestKey.KeyRoomId).ToString(CultureInfo.InvariantCulture); } if (data.ContainsKey(NewRequestKey.KeyMaxRound)) { _maxRound = data.GetInt(NewRequestKey.KeyMaxRound).ToString(CultureInfo.InvariantCulture); } if (data.ContainsKey(NewRequestKey.KeyJiaBei)) { _jiabei = data.GetInt(NewRequestKey.KeyJiaBei); } if (data.ContainsKey(NewRequestKey.KeyQt)) { _curGameType = (GlobalConstKey.GameType)data.GetInt(NewRequestKey.KeyQt); } if (data.ContainsKey(NewRequestKey.KeyState) && data.GetInt(NewRequestKey.KeyState) == GlobalConstKey.StatusIdle) { if (data.ContainsKey(NewRequestKey.KeyCurRound) && data.GetInt(NewRequestKey.KeyCurRound) <= 1) { IvtWechatFriendBtn.SetActive(true); } } }
public override void UserReady(int localSeat, ISFSObject responseData) { base.UserReady(localSeat, responseData); var eventArgs = new DdzbaseEventArgs(responseData); Facade.EventCenter.DispatchEvent(GlobalConstKey.KeyOnUserReady, eventArgs); }
protected virtual void OnTypeOneRoundOver(DdzbaseEventArgs args) { LandMark.SetActive(false); SetAutoState(false); SetSpeakSprite(string.Empty, false); ReadyState = false; }
private void OnRejoin(DdzbaseEventArgs args) { var data = args.IsfObjData; if (data.ContainsKey(RequestKey.KeyState) && data.GetInt(RequestKey.KeyState) > GlobalConstKey.StatusIdle) { OpenBoardBtn.SetActive(true); InitRecordItemCount(); if (data.ContainsKey(NewRequestKey.KeyAllOutCards)) { var cards = data.GetIntArray(NewRequestKey.KeyAllOutCards); RemoveCards(cards); } if (data.ContainsKey(RequestKey.KeyUser)) { var selfData = data.GetSFSObject(RequestKey.KeyUser); if (selfData.ContainsKey(RequestKey.KeyCards)) { var cards = selfData.GetIntArray(RequestKey.KeyCards); RemoveCards(cards); } } } }
/// <summary> /// 出牌阶段 /// </summary> /// <param name="args"></param> protected override void OnTypeOutCard(DdzbaseEventArgs args) { if (Info == null) { return; } var data = args.IsfObjData; var speakerSeat = data.GetInt(RequestKey.KeySeat); bool isMe = Info.Seat == speakerSeat; //刷新手牌个数 if (!isMe) { if (speakerSeat == GetEarlyHandSeat()) { SetSpeakSprite(string.Empty, false); } return; } var cdsLen = data.GetIntArray(RequestKey.KeyCards).Length; CardCount = CardCount - cdsLen; //少于3张报牌数 if (CardCount > 2) { return; } App.GetGameData <DdzGameData>().OnHdcdsChange(speakerSeat); }
private void OnTypeGrabSpeaker(DdzbaseEventArgs args) { var data = args.IsfObjData; int seat = data.GetInt(RequestKey.KeySeat); int cd = GetCountingTime(args, 10); ShowPointAndCuntDown(seat, cd); }
protected override void SetUserInfo(object sender, DdzbaseEventArgs args) { var data = args.IsfObjData; UserDataTemp = GetHostUserData(data); RefreshUiInfo(); }