public void UITextSelectResult(TextInfoBean textData, List <CharacterBean> listPickCharacterData) { if (!CheckUtil.StringIsNull(textData.pre_data_minigame)) { //小游戏初始化 List <PreTypeForMiniGameBean> listPre = PreTypeForMiniGameEnumTools.GetListPreData(textData.pre_data_minigame); List <RewardTypeBean> listReward = RewardTypeEnumTools.GetListRewardData(textData.reward_data); MiniGameBaseBean miniGameData = PreTypeForMiniGameEnumTools.GetMiniGameData(null, textData.pre_data_minigame, listPickCharacterData); miniGameData.listReward = listReward; switch (miniGameData.gameType) { case MiniGameEnum.Combat: MiniGameHandler.Instance.handlerForCombat.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus); MiniGameHandler.Instance.handlerForCombat.InitGame((MiniGameCombatBean)miniGameData); break; case MiniGameEnum.Debate: MiniGameHandler.Instance.handlerForDebate.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus); MiniGameHandler.Instance.handlerForDebate.InitGame((MiniGameDebateBean)miniGameData); break; } //隐藏重要NPC if (NpcHandler.Instance.buildForImportant) { NpcHandler.Instance.buildForImportant.HideNpc(); } if (NpcHandler.Instance.builderForFamily) { NpcHandler.Instance.builderForFamily.HideNpc(); } } notifyForEvent?.Invoke(NotifyEventTypeEnum.TextSelectResult, new object[] { textData }); }
/// <summary> /// 提交按钮 /// </summary> public void OnClickSubmit() { UIGameText uiGameText = (UIGameText)uiComponent; GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal); //检测是否启用小游戏 if (CheckUtil.StringIsNull(textData.pre_data_minigame)) { List <PreTypeBean> listPre = PreTypeEnumTools.GetListPreData(textData.pre_data); foreach (PreTypeBean itemPreData in listPre) { PreTypeEnumTools.GetPreDetails(itemPreData, gameData); if (!itemPreData.isPre) { ToastHandler.Instance.ToastHint(itemPreData.spPreIcon, itemPreData.preFailStr); return; } } //完成前置条件 PreTypeEnumTools.CompletePre(listPre, gameData); //完成所有奖励 RewardTypeEnumTools.CompleteReward(null, textData.reward_data); uiGameText.SelectText(textData); } else { DialogBean dialogBean = new DialogBean(); PickForCharacterDialogView dialogView = DialogHandler.Instance.CreateDialog <PickForCharacterDialogView>(DialogEnum.PickForCharacter, this, dialogBean); PreTypeForMiniGameEnumTools.GetPlayerNumber(textData.pre_data_minigame, out int playerNumber); dialogView.SetPickCharacterMax(playerNumber); } }
/// <summary> /// 完成成就 /// </summary> public void SubmitAchievement() { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (achievementInfo == null) { return; } if (status == AchievementStatusEnum.ToBeConfirmed) { //添加该成就和奖励 gameData.GetAchievementData().AddAchievement(achievementInfo.id); RewardTypeEnumTools.CompleteReward(null, achievementInfo.reward_data); //设置状态 SetAchStatus(AchievementStatusEnum.Completed); //刷新UI if (GetUIComponent <UITownGuildAchievement>() != null) { GetUIComponent <UITownGuildAchievement>().InitDataByType(achievementInfo.type); } //弹出特效提示 AchievementDialogView achDialog = DialogHandler.Instance.CreateDialog <AchievementDialogView>(DialogEnum.Achievement, null, null); achDialog.SetData(achievementInfo); //播放音效 AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal); //解锁steam成就 SteamHandler.Instance.UnLockAchievement(achievementInfo.id); } }
/// <summary> /// 提交晋升 /// </summary> public void OnClickSubmit() { AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (isAllPre) { //前置如果有需要临时支付的条件 PreTypeEnumTools.CompletePre(storeInfo.pre_data, gameData); //获取所有奖励 RewardTypeEnumTools.CompleteReward(null, storeInfo.reward_data); //客栈升级 gameData.innAttributes.SetInnLevelUp(); ToastHandler.Instance.ToastHint(ivTitleIcon.sprite, TextHandler.Instance.manager.GetTextById(1062)); UIHandler.Instance.manager.OpenUIAndCloseOther <UIGameMain>(UIEnum.GameMain); DialogBean dialogData = new DialogBean(); AchievementDialogView achievementDialog = DialogHandler.Instance.CreateDialog <AchievementDialogView>(DialogEnum.Achievement, this, dialogData); achievementDialog.SetData(storeInfo); } else { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1061)); } }
/// <summary> /// 增加奖励 /// </summary> /// <param name="reward"></param> public void AddReward(string reward) { if (CheckUtil.StringIsNull(reward)) { return; } RewardTypeEnumTools.CompleteReward(null, reward); }
/// <summary> /// 设置奖励 /// </summary> public void SetReward(string rewardData) { float animTimeDelay = 1f; CptUtil.RemoveChildsByActive(objRewardContent.transform); List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(rewardData); foreach (var itemRewardData in listRewardData) { RewardTypeEnumTools.GetRewardDetails(itemRewardData); Sprite spReward = itemRewardData.spRewardIcon; CreateRewardItem(spReward, animTimeDelay); animTimeDelay += 0.1f; } }
/// <summary> /// 设置奖励 /// </summary> /// <param name="listReward"></param> public void SetReward(List <RewardTypeBean> listReward) { foreach (RewardTypeBean itemReward in listReward) { GameObject objReward = Instantiate(objRewardContainer, objRewardModel); Image ivIcon = CptUtil.GetCptInChildrenByName <Image>(objReward, "Icon"); Text tvNumber = CptUtil.GetCptInChildrenByName <Text>(objReward, "Text"); RewardTypeEnumTools.GetRewardDetails(itemReward); ivIcon.sprite = itemReward.spRewardIcon; tvNumber.text = "x" + itemReward.rewardNumber; if (itemReward.dataType == RewardTypeEnum.AddItems) { PopupItemsButton infoItemsPopup = objReward.GetComponent <PopupItemsButton>(); ItemsInfoBean itemsInfo = GameItemsHandler.Instance.manager.GetItemsById(itemReward.rewardId); infoItemsPopup.SetData(itemsInfo, itemReward.spRewardIcon); } } }
/// <summary> /// 创建奖励数据 /// </summary> /// <param name="rewardData"></param> public void CreateRewardDataItem(string rewardData) { List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(rewardData); foreach (var itemData in listRewardData) { GameObject objReward = Instantiate(objRewardContainer, objRewardModel); RewardTypeEnumTools.GetRewardDetails(itemData); //设置图标 Sprite spIcon = itemData.spRewardIcon; Image ivIcon = CptUtil.GetCptInChildrenByName <Image>(objReward, "Icon"); ivIcon.sprite = spIcon; //设置描述 string rewardDes = itemData.rewardDescribe; Text tvContent = CptUtil.GetCptInChildrenByName <Text>(objReward, "Text"); tvContent.text = rewardDes; tvContent.color = colorPre; } GameUtil.RefreshRectViewHight((RectTransform)objRewardContainer.transform, true); GameUtil.RefreshRectViewHight((RectTransform)transform, true); }
/// <summary> /// 创建迷你游戏数据 /// </summary> /// <returns></returns> private List<MiniGameBaseBean> CreateMiniGameData(TrophyTypeEnum type) { List<MiniGameBaseBean> listMiniGameData = new List<MiniGameBaseBean>(); int arenaNumber = UnityEngine.Random.Range(5, 15); for (int i = 0; i < arenaNumber; i++) { MiniGameEnum gameType = MiniGameEnumTools.GetRandomMiniGameTypeForArena(); StoreInfoBean storeInfo = null; MiniGameBaseBean miniGameData = MiniGameEnumTools.GetMiniGameData(gameType); miniGameData.gameReason = MiniGameReasonEnum.Fight; switch (gameType) { case MiniGameEnum.Cooking: storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Chef); miniGameData = CreateCookingGameData((MiniGameCookingBean)miniGameData, storeInfo, type); break; case MiniGameEnum.Barrage: storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Waiter); miniGameData = CreateBarrageGameData((MiniGameBarrageBean)miniGameData, storeInfo, type); break; case MiniGameEnum.Account: storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Accountant); miniGameData = CreateAccountGameData((MiniGameAccountBean)miniGameData, storeInfo, type); break; case MiniGameEnum.Debate: storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Accost); miniGameData = CreateDebateGameData((MiniGameDebateBean)miniGameData, storeInfo, type); break; case MiniGameEnum.Combat: storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Beater); miniGameData = CreateCombatGameData((MiniGameCombatBean)miniGameData, storeInfo, type); break; } PreTypeForMiniGameEnumTools.GetMiniGameData(miniGameData, storeInfo.pre_data_minigame); //奖励添加 miniGameData.listReward = new List<RewardTypeBean>(); List<RewardTypeBean> listReward = RewardTypeEnumTools.GetListRewardData(storeInfo.reward_data); //固定奖励 List<RewardTypeBean> listFixedReward = new List<RewardTypeBean>(); //随机奖励 List<RewardTypeBean> listRandomReward = new List<RewardTypeBean>(); foreach (RewardTypeBean itemReward in listReward) { switch (itemReward.GetRewardType()) { case RewardTypeEnum.AddMoneyL: case RewardTypeEnum.AddMoneyM: case RewardTypeEnum.AddMoneyS: case RewardTypeEnum.AddArenaTrophyElementary: case RewardTypeEnum.AddArenaTrophyIntermediate: case RewardTypeEnum.AddArenaTrophyAdvanced: case RewardTypeEnum.AddArenaTrophyLegendary: if (miniGameData.winBringDownNumber > 0) { //针对多人战 奖励提升 itemReward.data = long.Parse(itemReward.data) * miniGameData.winBringDownNumber + ""; } listFixedReward.Add(itemReward); break; default: listRandomReward.Add(itemReward); break; } } miniGameData.listReward.AddRange(listFixedReward); if (!CheckUtil.ListIsNull(listRandomReward)) { RewardTypeBean randomReward = RandomUtil.GetRandomDataByList(listRandomReward); miniGameData.listReward.Add(randomReward); } //添加对应的奖杯 switch (type) { case TrophyTypeEnum.Elementary: break; case TrophyTypeEnum.Intermediate: break; case TrophyTypeEnum.Advanced: break; case TrophyTypeEnum.Legendary: break; } //设置游戏时间 if (storeInfo.mark != null) miniGameData.preGameTime = int.Parse(storeInfo.mark); //设置前置金钱 miniGameData.preMoneyL = storeInfo.price_l; miniGameData.preMoneyM = storeInfo.price_m; miniGameData.preMoneyS = storeInfo.price_s; //添加游戏数据 listMiniGameData.Add(miniGameData); } return listMiniGameData; }
/// <summary> /// 创建胜利数据 /// </summary> private void CreateWinItems() { CptUtil.RemoveChildsByActive(objResultContainer.transform); if (miniGameData == null) { return; } //通常列表 string reasonStr = ""; GameObject objReasonItem = Instantiate(objResultContainer, objResultWinModel); ItemMiniGameEndResultWinCpt itemReasonWin = objReasonItem.GetComponent <ItemMiniGameEndResultWinCpt>(); switch (miniGameData.gameReason) { case MiniGameReasonEnum.Improve: //晋升成功 reasonStr = TextHandler.Instance.manager.GetTextById(43); //数据添加 Sprite attributeIcon = null; string attributeRewardContent = ""; foreach (MiniGameCharacterBean miniGameCharacterData in miniGameData.listUserGameData) { switch (miniGameData.gameType) { case MiniGameEnum.Cooking: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Cook) + " +5"; miniGameCharacterData.characterData.baseInfo.chefInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Barrage: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Speed) + " +5"; miniGameCharacterData.characterData.baseInfo.waiterInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Account: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Account) + " +5"; miniGameCharacterData.characterData.baseInfo.accountantInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Debate: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Charm) + " +5"; miniGameCharacterData.characterData.baseInfo.accostInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Combat: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Force) + " +5"; miniGameCharacterData.characterData.baseInfo.beaterInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; } } //创建属性奖励 attributeIcon = IconDataHandler.Instance.manager.GetIconSpriteByName("keyboard_button_up_1"); CreateWinReward(attributeIcon, null, attributeRewardContent); break; case MiniGameReasonEnum.Fight: //决斗胜利 reasonStr = TextHandler.Instance.manager.GetTextById(44); break; case MiniGameReasonEnum.Recruit: //决斗胜利 reasonStr = TextHandler.Instance.manager.GetTextById(45); break; default: reasonStr = TextHandler.Instance.manager.GetTextById(901); break; } itemReasonWin.SetContent(reasonStr); itemReasonWin.SetIcon(IconDataHandler.Instance.manager.GetIconSpriteByName("text_win_1")); //添加奖励 RewardTypeEnumTools.CompleteReward(miniGameData.GetListUserCharacterData(), miniGameData.listReward); //遍历奖励列表 foreach (var itemReward in miniGameData.listReward) { CreateWinReward(itemReward.spRewardIcon, itemReward.workerCharacterData, itemReward.rewardDescribe); } }
/// <summary> /// 设置奖励 /// </summary> /// <param name="data"></param> public void SetReward(AchievementInfoBean data) { CptUtil.RemoveChildsByActive(objRewardContent.transform); if (data == null) { return; } List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(data.reward_data); GameObject objTitle = Instantiate(objRewardContent, objRewardTitle); foreach (var itemRewardData in listRewardData) { RewardTypeEnumTools.GetRewardDetails(itemRewardData); string rewardDes = itemRewardData.rewardDescribe; Sprite spReward = itemRewardData.spRewardIcon; CreateRewardItem(rewardDes, spReward); } //} ////奖励-道具 //if (!CheckUtil.StringIsNull(data.reward_items_ids)) //{ // List<long> listItems = data.GetRewardItems(); // foreach (long itemId in listItems) // { // ItemsInfoBean itemsInfo = GameItemsHandler.Instance.manager.GetItemsById(itemId); // if (itemsInfo == null) // continue; // Sprite spIcon; // if (itemsInfo.items_type == (int)GeneralEnum.Hat) // { // spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_hat_1"); // } // else if (itemsInfo.items_type == (int)GeneralEnum.Clothes) // { // spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_clothes_1"); // } // else if (itemsInfo.items_type == (int)GeneralEnum.Shoes) // { // spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_shoes_1"); // } // else // { // spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName(itemsInfo.icon_key); // } // CreateRewardItem(itemsInfo.name, 0, spIcon); // } //} ////奖励-建筑材料 //if (!CheckUtil.StringIsNull(data.reward_build_ids)) //{ // List<long> listBuild = data.GetRewardBuild(); // foreach (long buildId in listBuild) // { // BuildItemBean buildItem = InnBuildHandler.Instance.manager.GetBuildDataById(buildId); // if (buildItem == null) // continue; // Sprite spIcon = innBuildManager.GetFurnitureSpriteByName(buildItem.icon_key); // CreateRewardItem(buildItem.name, 0, spIcon); // } //} }
public void Submit(DialogView dialogView, DialogBean dialogBean) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //支付金钱 gameData.PayMoney(levelData.price_l, levelData.price_m, levelData.price_s); //扣除时间 int preGameTime = int.Parse(levelData.mark); //扣除时间 GameTimeHandler.Instance.AddHour(preGameTime); //如果有研究菜谱 菜谱增加经验 GameDataHandler.Instance.AddTimeProcess(preGameTime * 60); //判断玩哪个游戏 MiniGameBaseBean miniGameData = null; switch (workerType) { case WorkerEnum.Chef: miniGameData = InitChefGame(); break; case WorkerEnum.Waiter: //设置弹幕游戏数据 miniGameData = InitWaiterGame(); break; case WorkerEnum.Accountant: //设置算账游戏 miniGameData = InitAccountantGame(); break; case WorkerEnum.Accost: //设置辩论游戏 miniGameData = InitAccostGame(); break; case WorkerEnum.Beater: miniGameData = InitBeaterGame(); break; default: break; } miniGameData.preGameTime = preGameTime; miniGameData.gameReason = MiniGameReasonEnum.Improve; if (dialogBean.dialogPosition == 0) { //设置竞技场数据 GameCommonInfo.SetArenaPrepareData(miniGameData); //保存之前的位置 GameCommonInfo.ScenesChangeData.beforeUserPosition = GameControlHandler.Instance.manager.GetControl <BaseControl>(ControlEnum.Normal).transform.position; //跳转到竞技场 GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameArenaScene); } else { bool isWin = characterData.CalculationGuildSendWin(miniGameData.gameType); if (isWin) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7021)); AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward); //完成奖励 RewardTypeEnumTools.CompleteReward(miniGameData.GetListUserCharacterData(), miniGameData.listReward); //数据添加 Sprite attributeIcon = IconDataHandler.Instance.manager.GetIconSpriteByName("keyboard_button_up_1"); string attributeRewardContent = ""; foreach (MiniGameCharacterBean miniGameCharacterData in miniGameData.listUserGameData) { switch (miniGameData.gameType) { case MiniGameEnum.Cooking: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Cook) + " +5"; miniGameCharacterData.characterData.baseInfo.chefInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Barrage: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Speed) + " +5"; miniGameCharacterData.characterData.baseInfo.waiterInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Account: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Account) + " +5"; miniGameCharacterData.characterData.baseInfo.accountantInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Debate: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Charm) + " +5"; miniGameCharacterData.characterData.baseInfo.accostInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; case MiniGameEnum.Combat: attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Force) + " +5"; miniGameCharacterData.characterData.baseInfo.beaterInfo.LevelUp(miniGameCharacterData.characterData.attributes); break; } } ToastHandler.Instance.ToastHint(attributeIcon, attributeRewardContent); //刷新UI ((UITownGuildImprove)uiComponent).RefreshUI(); } else { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7022)); AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive); } } }
public void Submit(DialogView dialogView, DialogBean dialogBean) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (dialogView as PickForCharacterDialogView) { //判断时间是否过晚 GameTimeHandler.Instance.GetTime(out float hour, out float min); if (hour >= 21 || hour < 6) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1034)); return; } //支付金钱 gameData.PayMoney(miniGameData.preMoneyL, miniGameData.preMoneyM, miniGameData.preMoneyS); //扣除时间 GameTimeHandler.Instance.AddHour(miniGameData.preGameTime); //如果有研究菜谱 菜谱增加经验 GameDataHandler.Instance.AddTimeProcess(miniGameData.preGameTime * 60); //设置参赛人员 PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView; List <CharacterBean> listCharacter = pickForCharacterDialog.GetPickCharacter(); miniGameData.InitData(listCharacter); //今日不能再参加 GameCommonInfo.DailyLimitData.AddArenaAttendedCharacter(listCharacter); //删除该条数据 GameCommonInfo.DailyLimitData.RemoveArenaDataByType(trophyType, miniGameData); if (arenaJoinType == 1) { //设置竞技场数据 GameCommonInfo.SetArenaPrepareData(miniGameData); //保存之前的位置 GameCommonInfo.ScenesChangeData.beforeUserPosition = GameControlHandler.Instance.manager.GetControl <BaseControl>(GameControlHandler.ControlEnum.Normal).transform.position; //跳转到竞技场 GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameArenaScene); } else if (arenaJoinType == 2) { //刷新UI ((UITownArena)uiComponent).RefreshUI(); CharacterBean character = listCharacter[0]; bool isWin = character.CalculationArenaSendWin(miniGameData.gameType); if (isWin) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7011)); AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward); //设置不记录 foreach (RewardTypeBean rewardData in miniGameData.listReward) { if (rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyAdvanced || rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyElementary || rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyIntermediate || rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyLegendary) { rewardData.isRecord = false; } } //完成奖励 RewardTypeEnumTools.CompleteReward(listCharacter, miniGameData.listReward); } else { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7012)); AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive); } } } else { //弹出选人界面 DialogBean dialogData = new DialogBean(); PickForCharacterDialogView pickForCharacterDialog = DialogHandler.Instance.CreateDialog <PickForCharacterDialogView>(DialogEnum.PickForCharacter, this, dialogData); pickForCharacterDialog.SetPickCharacterMax(1); List <string> listExpelCharacterId = new List <string>(); //排出今日已经参加过的人 List <string> listAttendedCharacterId = GameCommonInfo.DailyLimitData.GetArenaAttendedCharacter(); //排出等级不符合的人 List <CharacterBean> listWorker = gameData.GetAllCharacterData(); foreach (CharacterBean itemWorker in listWorker) { bool isExpel = false; CharacterWorkerBaseBean workerInfo = null; switch (gameType) { case MiniGameEnum.Cooking: workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef); break; case MiniGameEnum.Barrage: workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter); break; case MiniGameEnum.Account: workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant); break; case MiniGameEnum.Debate: workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost); break; case MiniGameEnum.Combat: workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater); break; } int workLevel = workerInfo.GetLevel(); switch (trophyType) { case TrophyTypeEnum.Elementary: if (workLevel != 0 && workLevel != 1) { isExpel = true; } break; case TrophyTypeEnum.Intermediate: if (workLevel != 2 && workLevel != 3) { isExpel = true; } break; case TrophyTypeEnum.Advanced: if (workLevel != 4 && workLevel != 5) { isExpel = true; } break; case TrophyTypeEnum.Legendary: if (workLevel != 6) { isExpel = true; } break; } if (isExpel) { listExpelCharacterId.Add(itemWorker.baseInfo.characterId); } } listExpelCharacterId.AddRange(listAttendedCharacterId); pickForCharacterDialog.SetExpelCharacter(listExpelCharacterId); if (miniGameData.gameType == MiniGameEnum.Combat) { pickForCharacterDialog.SetPickCharacterMax(miniGameData.winBringDownNumber); } } }
public MiniGameCombatBean InitCombat(UserInfiniteTowersBean infiniteTowersData) { SceneInfiniteTowersManager infiniteTowersManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInfiniteTowersManager>(); //设置标牌 infiniteTowersManager.SetSignForLayer(infiniteTowersData.layer); //设置战斗数据 MiniGameCombatBean miniGameCombat = (MiniGameCombatBean)MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Combat); //设置战斗地点 miniGameCombat.miniGamePosition = infiniteTowersManager.GetCombatPostionByLayer(infiniteTowersData.layer); //获取战斗成员数据 //获取友方数据 List <CharacterBean> listUserData = new List <CharacterBean>(); int totalLucky = 0; GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); foreach (string memberId in infiniteTowersData.listMembers) { CharacterBean itemCharacterData = gameData.GetCharacterDataById(memberId); if (itemCharacterData != null) { listUserData.Add(itemCharacterData); itemCharacterData.GetAttributes(out CharacterAttributesBean characterAttributes); totalLucky += characterAttributes.lucky; } } //如果没有就启动测试数据 if (listUserData.Count == 0) { CharacterBean itemCharacterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(10001); listUserData.Add(itemCharacterData); listUserData.Add(itemCharacterData); listUserData.Add(itemCharacterData); } //获取敌方数据 List <CharacterBean> listEnemyData = infiniteTowersManager.GetCharacterDataByInfiniteTowersLayer(infiniteTowersData.layer); //设置敌方能力 foreach (CharacterBean itemEnemyData in listEnemyData) { CharacterAttributesBean enemyAttributes = infiniteTowersManager.GetEnemyAttributesByLayer(itemEnemyData, infiniteTowersData.layer); if (enemyAttributes != null) { itemEnemyData.attributes.InitAttributes(enemyAttributes); } } //初始化战斗数据 miniGameCombat.gameReason = MiniGameReasonEnum.Fight; miniGameCombat.winSurvivalNumber = 1; miniGameCombat.winBringDownNumber = listEnemyData.Count; miniGameCombat.InitData(listUserData, listEnemyData); //添加奖励装备 List <RewardTypeBean> listRewardEquip = RewardTypeEnumTools.GetRewardEnemyEquipForInfiniteTowers(listEnemyData, infiniteTowersData.layer, totalLucky); if (!CheckUtil.ListIsNull(listRewardEquip)) { miniGameCombat.listReward.AddRange(listRewardEquip); } //添加奖励物品 List <RewardTypeBean> listRewardItems = RewardTypeEnumTools.GetRewardItemsForInfiniteTowers(listEnemyData, infiniteTowersData.layer, totalLucky, false); if (!CheckUtil.ListIsNull(listRewardItems)) { miniGameCombat.listReward.AddRange(listRewardItems); } return(miniGameCombat); }
/// <summary> /// 增加爬塔进度 /// </summary> /// <param name="time"></param> public void AddInfiniteTowers(int time) { GameDataBean gameData = manager.GetGameData(); List <UserInfiniteTowersBean> listInfiniteTowersData = gameData.listInfinteTowers; if (CheckUtil.ListIsNull(listInfiniteTowersData)) { return; } float addTime = 0.01f * time; List <UserInfiniteTowersBean> listSendData = new List <UserInfiniteTowersBean>(); for (int i = 0; i < listInfiniteTowersData.Count; i++) { UserInfiniteTowersBean itemInfiniteTowerData = listInfiniteTowersData[i]; if (itemInfiniteTowerData.isSend == false) { //如果不是派遣数据则不处理 continue; } listSendData.Add(itemInfiniteTowerData); itemInfiniteTowerData.proForSend += addTime; if (itemInfiniteTowerData.proForSend >= 1) { //计算总计攀登层数 int addLayer = (int)Mathf.Floor(itemInfiniteTowerData.proForSend); List <CharacterBean> listCharacterData = gameData.GetCharacterDataByIds(itemInfiniteTowerData.listMembers); for (int f = 0; f < addLayer; f++) { itemInfiniteTowerData.proForSend = 0; bool isSuccessNextLayer = itemInfiniteTowerData.CheckIsSccessNextLayer(); if (isSuccessNextLayer) { //如果是成功攻略 //弹出提示 if (manager.gameConfig.isShowDetailsForTower) { AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1331), itemInfiniteTowerData.layer + "")); } else { if (itemInfiniteTowerData.layer % 10 == 0) { AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1331), itemInfiniteTowerData.layer + "")); } } //添加奖励物品 int totalLucky = 0; for (int c = 0; c < listCharacterData.Count; c++) { CharacterBean itemCharacterData = listCharacterData[c]; itemCharacterData.GetAttributes(out CharacterAttributesBean characterAttributes); totalLucky += characterAttributes.lucky; } List <RewardTypeBean> listRewardItems = RewardTypeEnumTools.GetRewardItemsForInfiniteTowers(null, itemInfiniteTowerData.layer, totalLucky, true); if (!CheckUtil.ListIsNull(listRewardItems)) { RewardTypeEnumTools.CompleteReward(listCharacterData, listRewardItems); } //增加层数 itemInfiniteTowerData.layer++; //达到最大层数 UserAchievementBean userAchievement = gameData.GetAchievementData(); if (itemInfiniteTowerData.layer > userAchievement.maxInfiniteTowersLayer - 1) { //弹出提示 AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1332), (itemInfiniteTowerData.layer - 1) + "")); itemInfiniteTowerData.proForSend = -1; //还原员工状态 for (int c = 0; c < listCharacterData.Count; c++) { CharacterBean itemCharacterData = listCharacterData[c]; itemCharacterData.baseInfo.SetWorkerStatus(WorkerStatusEnum.Rest); } //移除数据 listInfiniteTowersData.Remove(itemInfiniteTowerData); i--; break; } } else { //弹出提示 AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1333), itemInfiniteTowerData.layer + "")); //如果是失败攻略 itemInfiniteTowerData.proForSend = -1; //还原员工状态 for (int c = 0; c < listCharacterData.Count; c++) { CharacterBean itemCharacterData = listCharacterData[c]; itemCharacterData.baseInfo.SetWorkerStatus(WorkerStatusEnum.Rest); } //移除数据 listInfiniteTowersData.Remove(itemInfiniteTowerData); i--; break; } } } } notifyForData?.Invoke(NotifyTypeEnum.InfiniteTowerProChange, new object[] { listSendData }); }