/// <summary> /// 请求大师分排行榜数据消息 /// </summary> /// <param name="beginindex">排行榜等级</param> public void Ask4RankInfo(short beginindex = 0) { rankDataPromptUpdateState = true; GameKind_Enum currentGameID = (GameKind_Enum)currentgameid; if (0 == beginindex) { if (currentGameID == GameKind_Enum.GameKind_LandLords) { if (llrMasterList.Count > 0) { RankDataPrompt(false); return; } } else if (currentGameID == GameKind_Enum.GameKind_GuanDan) { if (terMasterList.Count > 0) { RankDataPrompt(false); return; } } } UMessage ask4RankDataMsg = new UMessage((uint)GameCity.EMSG_ENUM.CrazyCityMsg_APPLYMASTERRANKTOLOGIN); ask4RankDataMsg.Add(currentgameid); ask4RankDataMsg.Add(beginindex); NetWorkClient.GetInstance().SendMsg(ask4RankDataMsg); }
/// <summary> /// 设置游戏类型 /// </summary> /// <returns></returns> public void SetGameType(GameKind_Enum gametype) { if (gametype > GameKind_Enum.GameKind_None && gametype < GameKind_Enum.GameKind_Max) { GameType = gametype; } }
/// <summary> /// 刷新排行榜数据 /// </summary> /// <returns></returns> IEnumerator RefreshMasterRankPanel() { ResetRankPanel(); if (ismaster) { GameKind_Enum CurGameKind = (GameKind_Enum)currentgameid; if (CurGameKind == GameKind_Enum.GameKind_LandLords) { yield return(new WaitUntil(() => llrMasterList.Count > 0)); for (int index = 0; index < llrMasterList.Count;) { if (!ismaster) { yield break; } if (LoadMasterItemResource(index, llrMasterList[index])) { index++; yield return(new WaitForSecondsRealtime(0.1f)); } } RefreshSelfRank(); } else if (CurGameKind == GameKind_Enum.GameKind_GuanDan) { yield return(new WaitUntil(() => terMasterList.Count > 0)); for (int index = 0; index < terMasterList.Count;) { if (!ismaster) { yield break; } if (LoadMasterItemResource(index, terMasterList[index])) { index++; yield return(new WaitForSecondsRealtime(0.1f)); } } RefreshSelfRank(); } } else { yield return(new WaitUntil(() => championList.Count > 0)); for (int index = 0; index < championList.Count; ++index) { if (ismaster) { yield break; } LoadChampionItemResource(championList[index]); yield return(new WaitForSecondsRealtime(0.1f)); } } yield break; }
/// <summary> /// 获得界面资源名称 /// </summary> /// <param name="GameUIName"></param> /// <param name="GameKind"></param> /// <returns></returns> public string GetGameUIPrefabName(string GameUIName, GameKind_Enum GameKind) { if (GameUIDataDictionary.ContainsKey(GameUIName)) { if (GameKind == GameKind_Enum.GameKind_Chess) { return(GameUIDataDictionary[GameUIName].VerticalPrefab); } return(GameUIDataDictionary[GameUIName].HorizontalPrefab); } return(string.Empty); }
/// <summary> /// 加载匹配桌子资源 /// </summary> /// <param name="gameKind">游戏类型</param> /// <param name="bundle">AB资源包</param> public void LoadMatchingTableResource(GameKind_Enum gameKind, AssetBundle bundle) { if (bundle == null || TableTfm != null) { return; } Transform canvasTfm = GameObject.Find("Canvas/Root").transform; if (canvasTfm == null) { return; } byte playerNumPerDesk = 4; GameObject obj = null; string TableName = CCsvDataManager.Instance.GameUIDataMgr.GetGameUIPrefabName("MatchReady", GameMain.hall_.GameBaseObj.GetGameType()); switch (gameKind) { case GameKind_Enum.GameKind_GouJi: playerNumPerDesk = 6; TableName = "matching_table_Ready_6"; break; case GameKind_Enum.GameKind_Chess: playerNumPerDesk = 2; break; case GameKind_Enum.GameKind_LandLords: playerNumPerDesk = 3; break; } obj = (GameObject)Instantiate(bundle.LoadAsset(TableName)); obj.SetActive(false); TableTfm = obj.transform; TableTfm.SetParent(canvasTfm, false); Button btn = TableTfm.Find("bottom/Button_Invitation").GetComponent <Button>(); btn.onClick.AddListener(OnClickDeskInvitate); btn = TableTfm.Find("bottom/Button_Ready").GetComponent <Button>(); btn.onClick.AddListener(OnClickDeskReady); btn.gameObject.SetActive(false); btn = TableTfm.Find("Top/Button_Return").GetComponent <Button>(); btn.onClick.AddListener(() => OnClickReturn(0)); m_TipText = TableTfm.Find("Pop-up/ImagereadyTip/Text_time").GetComponent <Text>(); UpdateMatchTablePlayerInfo(playerNumPerDesk); }
bool BackTellRankInfo(uint msgType, UMessage msg) { GameKind_Enum gameid = (GameKind_Enum)msg.ReadByte(); switch (gameid) { case GameKind_Enum.GameKind_LandLords: terMasterList.Clear(); break; case GameKind_Enum.GameKind_GuanDan: llrMasterList.Clear(); break; } return(true); }
/// <summary> /// 初始化游戏文档界面 /// </summary> public void InitGameDocumentPanelResource() { if (RootGameObject == null) { RootGameObject = GameObject.Find("Canvas/Root"); } if (GameDocumentDictionary == null) { GameDocumentDictionary = new Dictionary <byte, GameObject>(); } if (DocumentPanelGameObject == null) { GameDocumentDictionary.Clear(); AssetBundle assetBundle = AssetBundleManager.GetAssetBundle(GameDefine.HallAssetbundleName); if (assetBundle) { Object LobbyGameRule = assetBundle.LoadAsset("Lobby_Game_Rule"); DocumentPanelGameObject = (GameObject)GameMain.instantiate(LobbyGameRule); DocumentPanelGameObject.SetActive(false); DocumentPanelGameObject.transform.SetParent(RootGameObject.transform, false); //收集游戏规则介绍列表对象 string childUiName; UnityEngine.Transform gameTransform = null; for (GameKind_Enum gameKind = GameKind_Enum.GameKind_CarPort; gameKind < GameKind_Enum.GameKind_Max; ++gameKind) { childUiName = "Left/Toggle_" + (byte)gameKind; gameTransform = DocumentPanelGameObject.transform.Find(childUiName); if (gameTransform) { gameTransform.gameObject.SetActive(false); GameDocumentDictionary.Add((byte)gameKind, gameTransform.gameObject); } } RightGameRule = DocumentPanelGameObject.transform.Find("Right/Game_Rule").gameObject; } InitGameDocumentPanelUIEvents(); } }
/// <summary> /// 创建约据房间数据 /// </summary> /// <param name="GameID"></param> /// <returns></returns> public static AppointmentData CreateAppointmentData(GameKind_Enum GameID) { AppointmentData publicAppointmentData = null; switch (GameID) { case GameKind_Enum.GameKind_GuanDan: publicAppointmentData = new GuanDanAppointmentData(4); break; case GameKind_Enum.GameKind_Mahjong: publicAppointmentData = new MahjongAppointmentData(4); break; case GameKind_Enum.GameKind_CzMahjong: publicAppointmentData = new CzMahjongAppointmentData(4); break; case GameKind_Enum.GameKind_YcMahjong: publicAppointmentData = new YcMahjongAppointmentData(4); break; case GameKind_Enum.GameKind_GouJi: publicAppointmentData = new GoujiAppointmentData(6); break; case GameKind_Enum.GameKind_HongZhong: publicAppointmentData = new HzMahjongAppointmentData(4); break; case GameKind_Enum.GameKind_Chess: publicAppointmentData = new ChessAppointmentData(2); break; default: publicAppointmentData = new AppointmentData(3); break; } return(publicAppointmentData); }
/// <summary> /// 获得约据游戏自定义规则。 /// </summary> /// <param name="RuleTextData">游戏规则</param> /// <param name="GameID">游戏ID</param> public static void GetAppointmentRuleTextData(ref string RuleTextData, GameKind_Enum GameID) { AppointmentData data = AppointmentDataManager.AppointmentDataInstance().GetCurrentAppointment(); RuleTextData = ""; if (data == null) { return; } if (GameID == GameKind_Enum.GameKind_LandLords) { if (data.maxpower == 250) { RuleTextData = "打" + data.playtimes.ToString() + "局 不封顶"; } else { RuleTextData = "打" + data.playtimes.ToString() + "局 最高" + data.maxpower + "倍"; } } else if (GameID == GameKind_Enum.GameKind_GuanDan) { GuanDanAppointmentData appointmentData = (GuanDanAppointmentData)data; if (appointmentData.terData_.playType == TePlayType.Times) { if (appointmentData.terData_.cp == CurrentPoker.Two) { RuleTextData = "打" + appointmentData.terData_.times.ToString() + "局 双下" + appointmentData.terData_.score.ToString() + "分 打2"; } else { RuleTextData = "打" + appointmentData.terData_.times.ToString() + "局 双下" + appointmentData.terData_.score.ToString() + "分 随机打"; } } else { if (appointmentData.terData_.vectory == 1) { RuleTextData = "连续打 过A胜利"; } else { RuleTextData = "连续打 过" + appointmentData.terData_.vectory.ToString() + "胜利"; } } } else if (GameID == GameKind_Enum.GameKind_Mahjong || GameID == GameKind_Enum.GameKind_YcMahjong || GameID == GameKind_Enum.GameKind_CzMahjong) { if (data.maxpower == 250 || data.maxpower == 0) { RuleTextData = "打" + data.playtimes.ToString() + "局 不封顶"; } else { RuleTextData = "打" + data.playtimes.ToString() + "局 最高" + data.maxpower + "倍"; } if (GameID == GameKind_Enum.GameKind_Mahjong) { MahjongAppointmentData mahjongData = (MahjongAppointmentData)data; RuleTextData += GameKind.HasFlag(0, mahjongData.palyType) ? "\n自摸加底" : "\n自摸加翻"; RuleTextData += GameKind.HasFlag(1, mahjongData.palyType) ? "\n点杠花(点炮)\n" : "\n点杠花(自摸)\n"; RuleTextData += GameKind.HasFlag(2, mahjongData.palyType) ? " 幺九将对" : ""; RuleTextData += GameKind.HasFlag(3, mahjongData.palyType) ? " 门清中张" : ""; RuleTextData += GameKind.HasFlag(4, mahjongData.palyType) ? " 天地胡" : ""; } else if (GameID == GameKind_Enum.GameKind_CzMahjong) { CzMahjongAppointmentData mahjongData = (CzMahjongAppointmentData)data; RuleTextData += "\n"; string[] wanFaName = { "包三口", " 包四口", " 擦背", " 吃" }; for (int index = 0; index < 4; ++index) { if (GameKind.HasFlag(index, mahjongData.wanFa)) { RuleTextData += wanFaName[index]; } } string[] qiHuName = { "", "\n一番起胡", "\n硬一番起胡", "\n3花起胡", "\n4花起胡" }; RuleTextData += qiHuName.Count() > 5 ? "" : qiHuName[mahjongData.qiHu]; RuleTextData += "\n" + mahjongData.diHua + "底花"; } } else if (GameID == GameKind_Enum.GameKind_GouJi) { GoujiAppointmentData gouJiData = (GoujiAppointmentData)(data); RuleTextData = "打" + gouJiData.playtimes.ToString() + "局 \n"; string[] wanFaName = { "宣点\n", "开点发4\n", "憋三\n", "大王二杀一\n", "进贡\n" }; for (int index = 0; index < 5; ++index) { if (GameKind.HasFlag(index, gouJiData.wanFa)) { RuleTextData += wanFaName[index]; } } } else if (GameID == GameKind_Enum.GameKind_HongZhong) { HzMahjongAppointmentData mahjongData = (HzMahjongAppointmentData)(data); RuleTextData = "打" + mahjongData.playtimes.ToString() + "局 \n" + "抓鸟" + mahjongData.birdNum + "张 \n"; string[] wanFaName = { "红中是赖子\n", "可以点炮\n", }; for (int index = 0; index < 2; ++index) { if (GameKind.HasFlag(index, mahjongData.wanFa)) { RuleTextData += wanFaName[index]; } } } else if (GameID == GameKind_Enum.GameKind_Chess) { ChessAppointmentData chessData = (ChessAppointmentData)(data); RuleTextData = "打" + chessData.playtimes.ToString() + "局 局时 " + chessData.ChessTime + "分"; } }
public CGameBase(GameKind_Enum gametype) { GameType = gametype; GameMode = GameTye_Enum.GameType_Normal; Bystander = false; }
public CGameBase() { GameType = GameKind_Enum.GameKind_None; GameMode = GameTye_Enum.GameType_Normal; Bystander = false; }
/// <summary> /// 登陆成功处理 /// </summary> /// <param name="_msgType"></param> /// <param name="_ms"></param> /// <returns></returns> bool LoginSuccess(uint _msgType, UMessage _ms) { PlayerData playerdata = GameMain.hall_.GetPlayerData(); uint lastLoginPlayerId = playerdata.GetPlayerID(); playerdata.ReadPlayerData(_ms, ref CRankUI.Instance.m_fLeftCoinRankTime); //检测是否切换角色了 if (lastLoginPlayerId != 0 && lastLoginPlayerId != playerdata.GetPlayerID()) { } GameMain.hall_.IntelentType = Application.internetReachability; WriteAccountConfig(); //GameMain.hall_.SendGetCoinRankData(); //m_bIsSendMobileNum = false; CCustomDialog.CloseCustomWaitUI(); GameMain.hall_.AfterLogin(); #if ScFish GameMain.hall_.OnClickRoomIconBtn((byte)GameKind_Enum.GameKind_Fishing, 1); return(true); #endif //GameMain.hall_.LoadHallResource(); if (playerdata.nGameMode_Before >= 0) { Debug.Log("断线重连GameId:" + playerdata.nGameKind_Before + ",GameMode:" + playerdata.nGameMode_Before); string strSign = string.Empty; GameKind_Enum CurbeforeGameKind = (GameKind_Enum)playerdata.nGameKind_Before; if (playerdata.nGameMode_Before == 0) { CurbeforeGameKind = (GameKind_Enum)(Mathf.Log(playerdata.nGameKind_Before, 2)); for (GameKind_Enum gameKind = GameKind_Enum.GameKind_CarPort; gameKind < GameKind_Enum.GameKind_Max; ++gameKind) { if (gameKind != GameKind_Enum.GameKind_LandLords && gameKind != GameKind_Enum.GameKind_Mahjong && gameKind != GameKind_Enum.GameKind_GuanDan && gameKind != GameKind_Enum.GameKind_YcMahjong && gameKind != GameKind_Enum.GameKind_CzMahjong && gameKind != GameKind_Enum.GameKind_GouJi && gameKind != GameKind_Enum.GameKind_HongZhong && gameKind != GameKind_Enum.GameKind_Answer && gameKind != GameKind_Enum.GameKind_Chess) { if (GameKind.HasFlag((int)gameKind, (int)playerdata.nGameKind_Before)) { GameData gamedata = CCsvDataManager.Instance.GameDataMgr.GetGameData((byte)CurbeforeGameKind); if (gamedata != null) { strSign += gamedata.GameName; } else { strSign += "未知游戏"; } } } } } if (!string.IsNullOrEmpty(strSign)) { CCustomDialog.OpenCustomWaitUI(2014, strSign); } else { if (GameMain.hall_.contestui_) { GameMain.hall_.contestui_.SetActive(false); } GameMain.hall_.ReconnectLoadGame(CurbeforeGameKind, (GameTye_Enum)playerdata.nGameMode_Before); } } else { if (Application.platform == RuntimePlatform.Android) { #if UNITY_ANDROID && !UNITY_EDITOR AlipayWeChatPay.GetAndroidActivity().Call("GetGameRoomID"); #endif } } GameMain.hall_.ReconnectGameServer(); UMessage activemsg = new UMessage((uint)GameCity.EMSG_ENUM.CrazyCityMsg_GETTODAYREDBAGINFO); activemsg.Add(GameMain.hall_.GetPlayerId()); NetWorkClient.GetInstance().SendMsg(activemsg); BagDataManager.GetBagDataInstance(); if (GameMain.hall_.GetPlayerData().itemNumber > 0) { UMessage bagmsg = new UMessage((uint)GameCity.EMSG_ENUM.CrazyCityMsg_REQUESTPLAYERPACKETINFO); bagmsg.Add(GameMain.hall_.GetPlayerId()); NetWorkClient.GetInstance().SendMsg(bagmsg); } PlayerInfoUI.Instance.Ask4PlayerTotalData(); return(true); }
void InitRuleEvent(Transform rulebg, ESlefContestType createtype, GameKind_Enum gameKind) { if (rulebg == null) { return; } switch (createtype) { case ESlefContestType.TimeContest: { GameObject timebtn = rulebg.Find("shijian/Button_TimeSet").gameObject; XPointEvent.AutoAddListener(timebtn, OnOpenTimeSet, rulebg); } break; case ESlefContestType.PlayerNumberContest: { GameObject llfirstGroup = rulebg.Find("renshu").Find("ImageBG").gameObject; for (int index = 0; index < llfirstGroup.transform.childCount; index++) { Toggle toggle = llfirstGroup.transform.GetChild(index).gameObject.GetComponent <Toggle>(); int temp = index; toggle.onValueChanged.AddListener(delegate(bool value) { CustomAudio.GetInstance().PlayCustomAudio(1004); switch (gameKind) { case GameKind_Enum.GameKind_LandLords: scr_.playernumber = SelfContestRule.llrplayerNumberList[temp]; break; case GameKind_Enum.GameKind_GuanDan: scr_.playernumber = SelfContestRule.gdplayerNumberList[temp]; break; } RefreshPlayerNumber((int)gameKind, createtype, true); }); } } break; } GameObject llsecondGroup = rulebg.Find("yusai").Find("ImageBG").gameObject; for (int index = 0; index < llsecondGroup.transform.childCount; index++) { Toggle toggle = llsecondGroup.transform.GetChild(index).gameObject.GetComponent <Toggle>(); int temp = index; toggle.onValueChanged.AddListener(delegate(bool vale) { CustomAudio.GetInstance().PlayCustomAudio(1004); switch (gameKind) { case GameKind_Enum.GameKind_LandLords: scr_.precontest = SelfContestRule.llrprecontestList[temp]; break; case GameKind_Enum.GameKind_GuanDan: scr_.precontest = SelfContestRule.gdprecontestList[temp]; break; case GameKind_Enum.GameKind_Chess: scr_.precontest = SelfContestRule.gdprecontestChessList[temp]; scr_.finalcontest = scr_.precontest; break; } RefreshPlayerNumber((int)gameKind, createtype, true); }); } GameObject llthirdGroup = rulebg.Find("juesai").Find("ImageBG").gameObject; for (int index = 0; index < llthirdGroup.transform.childCount; index++) { Toggle toggle = llthirdGroup.transform.GetChild(index).gameObject.GetComponent <Toggle>(); int temp = index; toggle.onValueChanged.AddListener(delegate(bool vale) { CustomAudio.GetInstance().PlayCustomAudio(1004); switch (gameKind) { case GameKind_Enum.GameKind_LandLords: scr_.finalcontest = SelfContestRule.llrprecontestList[temp]; break; case GameKind_Enum.GameKind_GuanDan: scr_.finalcontest = SelfContestRule.gdprecontestList[temp]; break; case GameKind_Enum.GameKind_Chess: scr_.finalcontest = SelfContestRule.gdprecontestChessList[temp]; break; } RefreshPlayerNumber((int)gameKind, createtype, true); }); } GameObject llforthGroup = rulebg.Find("feiyong").Find("ImageBG").gameObject; for (int index = 0; index < llforthGroup.transform.childCount; index++) { Toggle toggle = llforthGroup.transform.GetChild(index).gameObject.GetComponent <Toggle>(); int temp = index; toggle.onValueChanged.AddListener(delegate(bool vale) { CustomAudio.GetInstance().PlayCustomAudio(1004); scr_.cost = SelfContestRule.costList[temp]; RefreshPlayerNumber((int)gameKind, createtype, true); }); } }