/// <summary> /// 设置装备 /// </summary> /// <param name="itemInfo"></param> /// <param name="isTFequip">是否是幻化</param> public void SetEquip(ItemsInfoBean itemInfo, bool isTFequip) { if (itemInfo == null) { return; } GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); ItemGameBackpackEquipCpt itemCpt = null; long unloadEquipId = 0; GeneralEnum itemType = itemInfo.GetItemsType(); switch (itemType) { case GeneralEnum.Hat: if (isTFequip) { itemCpt = equipTFHat; unloadEquipId = characterData.equips.hatTFId; characterData.equips.hatTFId = itemInfo.id; } else { itemCpt = equipHat; unloadEquipId = characterData.equips.hatId; characterData.equips.hatId = itemInfo.id; } break; case GeneralEnum.Clothes: if (isTFequip) { itemCpt = equipTFClothes; unloadEquipId = characterData.equips.clothesTFId; characterData.equips.clothesTFId = itemInfo.id; } else { itemCpt = equipClothes; unloadEquipId = characterData.equips.clothesId; characterData.equips.clothesId = itemInfo.id; } break; case GeneralEnum.Shoes: if (isTFequip) { itemCpt = equipTFShoes; unloadEquipId = characterData.equips.shoesTFId; characterData.equips.shoesTFId = itemInfo.id; } else { itemCpt = equipShoes; unloadEquipId = characterData.equips.shoesId; characterData.equips.shoesId = itemInfo.id; } break; case GeneralEnum.Chef: case GeneralEnum.Waiter: case GeneralEnum.Accoutant: case GeneralEnum.Accost: case GeneralEnum.Beater: if (isTFequip) { itemCpt = equipTFHand; unloadEquipId = characterData.equips.handTFId; characterData.equips.handTFId = itemInfo.id; } else { itemCpt = equipHand; unloadEquipId = characterData.equips.handId; characterData.equips.handId = itemInfo.id; } break; } itemCpt.SetData(characterData, itemInfo, null); //如果有卸载的装备 则添加到背包 if (unloadEquipId != 0) { gameData.AddItemsNumber(unloadEquipId, 1); } //刷新场景中的人物 if (SceneUtil.GetCurrentScene() == ScenesEnum.GameInnScene) { NpcHandler.Instance.builderForWorker.RefreshWorkerData(); NpcHandler.Instance.builderForFamily.RefreshFamilyData(); } }
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 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); }
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); } } }
/// <summary> /// 增加一个用户数据 /// </summary> /// <param name="gameData"></param> public void AddGameData(GameDataBean gameData) { string userId = "UserId_" + SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N); gameData.userCharacter.baseInfo.characterId = userId; gameData.userId = userId; gameData.moneyS = 3000; gameData.moneyM = 0; gameData.moneyL = 0; gameData.innBuildData = new InnBuildBean(); gameData.listBuild = new List <ItemBean>(); gameData.listItems = new List <ItemBean>(); gameData.listWorkerCharacter = new List <CharacterBean>(); gameData.listMenu = new List <MenuOwnBean>(); //添加门 List <Vector3> doorPositionList = new List <Vector3>(); doorPositionList.Add(new Vector3(4, 0, 0)); doorPositionList.Add(new Vector3(5, 0, 0)); doorPositionList.Add(new Vector3(6, 0, 0)); InnResBean innResDoor = new InnResBean(90001, new Vector3(4.5f, 0.5f, 0), doorPositionList, Direction2DEnum.Left); //添加家具 List <Vector3> counterPositionList = new List <Vector3>(); counterPositionList.Add(new Vector3(7, 1, 0)); counterPositionList.Add(new Vector3(6, 1, 0)); counterPositionList.Add(new Vector3(7, 2, 0)); counterPositionList.Add(new Vector3(6, 2, 0)); counterPositionList.Add(new Vector3(7, 3, 0)); counterPositionList.Add(new Vector3(6, 3, 0)); counterPositionList.Add(new Vector3(8, 2, 0)); InnResBean innResCounter = new InnResBean(50001, new Vector3(6.5f, 2.5f, 0), counterPositionList, Direction2DEnum.Right); List <Vector3> stovePositionList = new List <Vector3>(); stovePositionList.Add(new Vector3(3, 6, 0)); stovePositionList.Add(new Vector3(4, 6, 0)); stovePositionList.Add(new Vector3(3, 5, 0)); stovePositionList.Add(new Vector3(4, 5, 0)); stovePositionList.Add(new Vector3(3, 4, 0)); stovePositionList.Add(new Vector3(4, 4, 0)); stovePositionList.Add(new Vector3(2, 5, 0)); InnResBean innResStove = new InnResBean(40001, new Vector3(2.5f, 5.5f, 0), stovePositionList, Direction2DEnum.Left); List <Vector3> tablePositionList = new List <Vector3>(); tablePositionList.Add(new Vector3(2, 2, 0)); tablePositionList.Add(new Vector3(3, 2, 0)); InnResBean innResTable = new InnResBean(30001, new Vector3(1.5f, 2.5f, 0), tablePositionList, Direction2DEnum.Left); gameData.innBuildData.AddFurniture(1, innResDoor); gameData.innBuildData.AddFurniture(1, innResCounter); gameData.innBuildData.AddFurniture(1, innResStove); gameData.innBuildData.AddFurniture(1, innResTable); //修改客栈大小 gameData.innBuildData.ChangeInnSize(1, new List <InnResBean>() { innResDoor }, 9, 9); //母亲的信 gameData.listItems.Add(new ItemBean(1500001, 1)); //添加家具 gameData.listBuild.Add(new ItemBean(30001, 2)); //添加菜单 gameData.listMenu.Add(new MenuOwnBean(1)); gameData.listMenu.Add(new MenuOwnBean(2)); //设置时间 TimeBean gameTime = new TimeBean(); gameTime.SetTimeForYMD(221, 1, 0); gameData.gameTime = gameTime; SetGameDataByUserId(userId, gameData); }
/// <summary> /// 游戏结束 /// </summary> /// <param name="isWinGame"></param> /// <param name="isSlow">是否开启慢镜头</param> public virtual void EndGame(MiniGameResultEnum gameResulte, bool isSlow) { if (GetMiniGameStatus() == MiniGameStatusEnum.Gameing) { SetMiniGameStatus(MiniGameStatusEnum.GameEnd); StopAllCoroutines(); //拉近尽头 BaseControl baseControl = GameControlHandler.Instance.manager.GetControl(); if (baseControl) { baseControl.SetCameraOrthographicSize(6); } if (isSlow) { //开启慢镜头 Time.timeScale = 0.1f; } transform.DOScale(new Vector3(1, 1, 1), 0.3f).OnComplete(delegate() { Time.timeScale = 1f; if (baseControl) { baseControl.SetCameraOrthographicSize(); } if (miniGameBuilder) { miniGameBuilder.DestroyAll(); } //设置游戏数据 miniGameData.SetGameResult(gameResulte); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //经验加成 List <MiniGameCharacterBean> listUserData = miniGameData.GetListUserGameData(); List <CharacterBean> listWorkerData = gameData.GetAllCharacterData(); foreach (MiniGameCharacterBean itemCharacterData in listUserData) { foreach (CharacterBean itemWorkerData in listWorkerData) { if (itemWorkerData.baseInfo.characterId == null || itemCharacterData.characterData.baseInfo.characterId == null) { continue; } if (itemWorkerData.baseInfo.characterId.Equals(itemCharacterData.characterData.baseInfo.characterId)) { WorkerEnum workerType = MiniGameEnumTools.GetWorkerTypeByMiniGameType(miniGameData.gameType); CharacterWorkerBaseBean characterWorker = itemWorkerData.baseInfo.GetWorkerInfoByType(workerType); if (miniGameData.GetGameResult() == MiniGameResultEnum.Win) { characterWorker.AddExp(10, out bool isLevelUp); } else { characterWorker.AddExp(5, out bool isLevelUp); } } } } //打开游戏结束UI UIMiniGameEnd uiMiniGameEnd = UIHandler.Instance.manager.OpenUIAndCloseOther <UIMiniGameEnd>(UIEnum.MiniGameEnd); uiMiniGameEnd.SetData(miniGameData); uiMiniGameEnd.SetCallBack(this); }); //通知 游戏结束 notifyForMiniGameStatus?.Invoke(MiniGameStatusEnum.GameEnd, new object[] { miniGameData }); AudioHandler.Instance.StopMusic(); } }
/// <summary> /// 游玩时间处理 /// </summary> public void HandleForPlayTime() { GameDataBean gameData = manager.GetGameData(); gameData.playTime.AddTimeForHMS(0, 0, 1); }
/// <summary> /// 通过用户ID保存用户数据 /// </summary> /// <param name="userId"></param> /// <param name="gameData"></param> public void SetGameDataByUserId(string userId, GameDataBean gameData) { mGameDataService.UpdateDataByUserId(userId, gameData); }
public void Submit(DialogView dialogView, DialogBean dialogData) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (dialogView as PickForNumberDialogView) { PickForNumberDialogView pickForNumberDialog = dialogView as PickForNumberDialogView; long number = pickForNumberDialog.GetPickNumber(); //检测金钱 if (!gameData.HasEnoughMoney(storeInfo.price_l * number, storeInfo.price_m * number, storeInfo.price_s * number)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005)); return; } if (!gameData.HasEnoughGuildCoin(storeInfo.guild_coin * number)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1012)); return; } if (!gameData.HasEnoughTrophy(storeInfo.trophy_elementary * number, storeInfo.trophy_intermediate * number, storeInfo.trophy_advanced * number, storeInfo.trophy_legendary * number)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1021)); return; } gameData.PayMoney(storeInfo.price_l * number, storeInfo.price_m * number, storeInfo.price_s * number); gameData.PayGuildCoin(storeInfo.guild_coin * number); gameData.PayTrophy(storeInfo.trophy_elementary * number, storeInfo.trophy_intermediate * number, storeInfo.trophy_advanced * number, storeInfo.trophy_legendary * number); //加上获取数量 int getNumber = 1; if (storeInfo.get_number != 0) { getNumber = storeInfo.get_number; } gameData.AddBuildNumber(buildItemData.id, number * getNumber); RefreshUI(); string toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1010), buildItemData.name + "x" + (number * getNumber)); ToastHandler.Instance.ToastHint(ivIcon.sprite, toastStr); } else { //检测金钱 if (!gameData.HasEnoughMoney(storeInfo.price_l, storeInfo.price_m, storeInfo.price_s)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005)); return; } if (!gameData.HasEnoughGuildCoin(storeInfo.guild_coin)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1012)); return; } if (!gameData.HasEnoughTrophy(storeInfo.trophy_elementary, storeInfo.trophy_intermediate, storeInfo.trophy_advanced, storeInfo.trophy_legendary)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1021)); return; } gameData.PayMoney(storeInfo.price_l, storeInfo.price_m, storeInfo.price_s); gameData.PayGuildCoin(storeInfo.guild_coin); gameData.PayTrophy(storeInfo.trophy_elementary, storeInfo.trophy_intermediate, storeInfo.trophy_advanced, storeInfo.trophy_legendary); string toastStr; if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion) { InnBuildBean innBuildData = gameData.GetInnBuildData(); if (storeInfo.mark_type == 1) { //1楼扩建 innBuildData.buildLevel = int.Parse(storeInfo.mark); innBuildData.buildInnWidth = storeInfo.mark_x; innBuildData.buildInnHeight = storeInfo.mark_y; } else if (storeInfo.mark_type == 2) { //2楼扩建 innBuildData.buildSecondLevel = int.Parse(storeInfo.mark); innBuildData.buildInnSecondWidth = storeInfo.mark_x; innBuildData.buildInnSecondHeight = storeInfo.mark_y; } //设置修建天数 List <TimeBean> listBuildDay = new List <TimeBean>(); listBuildDay.Add(GameTimeHandler.Instance.GetAfterDay(1)); innBuildData.listBuildDay = listBuildDay; GetUIComponent <UITownCarpenter>().RefreshUI(); toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1011), storeInfo.name); } else { //加上获取数量 int getNumber = 1; if (storeInfo.get_number != 0) { getNumber = storeInfo.get_number; } gameData.AddBuildNumber(buildItemData.id, 1 * getNumber); RefreshUI(); toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1010), buildItemData.name + "x" + 1 * getNumber); } ToastHandler.Instance.ToastHint(ivIcon.sprite, toastStr); } }
/// <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 }); }
public static void CompleteReward(List <CharacterBean> listCharacterData, List <RewardTypeBean> listRewardData) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); foreach (var itemData in listRewardData) { GetRewardDetails(itemData); RewardTypeEnum dataType = itemData.dataType; switch (dataType) { case RewardTypeEnum.AddWorkerNumber: int addWorkerNumber = itemData.rewardNumber; gameData.workerNumberLimit += addWorkerNumber; break; case RewardTypeEnum.AddWorker: gameData.AddWorkCharacter(itemData.workerCharacterData); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(6011), itemData.workerCharacterData.baseInfo.name)); break; case RewardTypeEnum.AddGuildCoin: long addGuildCoin = itemData.rewardNumber; gameData.AddGuildCoin(addGuildCoin); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddMoneyL: long addMoneyL = itemData.rewardNumber; gameData.AddMoney(addMoneyL, 0, 0); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6014), addMoneyL + "")); break; case RewardTypeEnum.AddMoneyM: long addMoneyM = itemData.rewardNumber; gameData.AddMoney(0, addMoneyM, 0); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6013), addMoneyM + "")); break; case RewardTypeEnum.AddMoneyS: long addMoneyS = itemData.rewardNumber; gameData.AddMoney(0, 0, addMoneyS); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6012), addMoneyS + "")); break; case RewardTypeEnum.AddArenaTrophyElementary: long addTrophy1 = itemData.rewardNumber; gameData.AddArenaTrophy(addTrophy1, 0, 0, 0, itemData.isRecord); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6006), addTrophy1 + ""))); break; case RewardTypeEnum.AddArenaTrophyIntermediate: long addTrophy2 = itemData.rewardNumber; gameData.AddArenaTrophy(0, addTrophy2, 0, 0, itemData.isRecord); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6007), addTrophy2 + ""))); break; case RewardTypeEnum.AddArenaTrophyAdvanced: long addTrophy3 = itemData.rewardNumber; gameData.AddArenaTrophy(0, 0, addTrophy3, 0, itemData.isRecord); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6008), addTrophy3 + ""))); break; case RewardTypeEnum.AddArenaTrophyLegendary: long addTrophy4 = itemData.rewardNumber; gameData.AddArenaTrophy(0, 0, 0, addTrophy4, itemData.isRecord); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6009), addTrophy4 + ""))); break; case RewardTypeEnum.AddItems: case RewardTypeEnum.RandomAddItems: gameData.AddItemsNumber(itemData.rewardId, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddBuildItems: gameData.AddBuildNumber(itemData.rewardId, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngOilsalt: gameData.AddIng(IngredientsEnum.Oilsalt, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngMeat: gameData.AddIng(IngredientsEnum.Meat, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngRiverfresh: gameData.AddIng(IngredientsEnum.Riverfresh, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngSeafood: gameData.AddIng(IngredientsEnum.Seafood, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngVegetables: gameData.AddIng(IngredientsEnum.Vegetables, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngMelonfruit: gameData.AddIng(IngredientsEnum.Melonfruit, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngWaterwine: gameData.AddIng(IngredientsEnum.Waterwine, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddIngFlour: gameData.AddIng(IngredientsEnum.Flour, itemData.rewardNumber); ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe)); break; case RewardTypeEnum.AddChefExp: CompleteRewardForExp(listCharacterData, WorkerEnum.Chef, itemData.rewardNumber); break; case RewardTypeEnum.AddWaiterExp: CompleteRewardForExp(listCharacterData, WorkerEnum.Waiter, itemData.rewardNumber); break; case RewardTypeEnum.AddAccountantExp: CompleteRewardForExp(listCharacterData, WorkerEnum.Accountant, itemData.rewardNumber); break; case RewardTypeEnum.AddAccostExp: CompleteRewardForExp(listCharacterData, WorkerEnum.Accost, itemData.rewardNumber); break; case RewardTypeEnum.AddBeaterExp: CompleteRewardForExp(listCharacterData, WorkerEnum.Beater, itemData.rewardNumber); break; case RewardTypeEnum.AddChild: CompleteRewardForAddChild(itemData); break; } } }
private NpcAIImportantCpt BuildNpc(CharacterBean characterData) { GameObject npcObj = null; try { if (objNpcModel == null || objNpcContainer == null) { return(null); } //检测是否已经招募 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (gameData.CheckHasWorker(characterData.baseInfo.characterId)) { return(null); } //检测是否是老婆 FamilyDataBean familyData = gameData.GetFamilyData(); if (familyData.CheckIsMate(characterData.npcInfoData.id)) { return(null); } if (gameData.gameTime.year == 0 && gameData.gameTime.month == 0 && gameData.gameTime.day == 0) { //如果是测试 这默认生成所有NPC } else { //检测是否满足出现条件 if (!CheckUtil.StringIsNull(characterData.npcInfoData.condition) && !ShowConditionTools.CheckIsMeetAllCondition(gameData, characterData.npcInfoData.condition)) { return(null); } } npcObj = Instantiate(objNpcContainer, objNpcModel); npcObj.transform.position = new Vector3(characterData.npcInfoData.position_x, characterData.npcInfoData.position_y); npcObj.transform.localScale = new Vector3(1, 1); NpcAIImportantCpt aiCpt = npcObj.GetComponent <NpcAIImportantCpt>(); aiCpt.SetCharacterData(characterData); if (characterData.npcInfoData.GetNpcType() == NpcTypeEnum.Special || characterData.npcInfoData.GetNpcType() == NpcTypeEnum.RecruitTown) { if (!GameCommonInfo.DailyLimitData.CheckIsTalkNpc(characterData.npcInfoData.id)) { if (characterData.npcInfoData.GetTalkTypes().Contains(NpcTalkTypeEnum.OneTalk) || characterData.npcInfoData.GetTalkTypes().Contains(NpcTalkTypeEnum.Recruit)) { aiCpt.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Doubt, -1); } } } //如果没有对话选项则不能互动 BoxCollider2D talkBox = npcObj.GetComponent <BoxCollider2D>(); if (talkBox != null) { if (CheckUtil.StringIsNull(characterData.npcInfoData.talk_types)) { talkBox.enabled = false; } } return(aiCpt); } catch { if (npcObj != null) { Destroy(npcObj); } return(null); } }
/// <summary> /// 保存游戏数据 /// </summary> /// <param name="data"></param> public void SetGameDataData(GameDataBean data) { serviceGameData.UpdateData(data); }
public void Submit(DialogView dialogView, DialogBean dialogBean) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (dialogView is PickForCharacterDialogView) { buildBedData.GetResearchPrice(out long researchPriceL, out long researchPriceM, out long researchPriceS); //先判断一下是否有钱支付 if (!gameData.HasEnoughMoney(researchPriceL, researchPriceM, researchPriceS)) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005)); return; } //扣除金钱 gameData.PayMoney(researchPriceL, researchPriceM, researchPriceS); //角色选择 PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView; List <CharacterBean> listPickCharacter = pickForCharacterDialog.GetPickCharacter(); if (!CheckUtil.ListIsNull(listPickCharacter)) { //开始研究 buildBedData.StartResearch(listPickCharacter); string toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1201), listPickCharacter[0].baseInfo.name, buildBedData.bedName); ToastHandler.Instance.ToastHint(toastStr); } } else if (dialogView is InputTextDialogView) { InputTextDialogView inputTextDialog = dialogView as InputTextDialogView; string bedName = inputTextDialog.GetText(); if (!CheckUtil.StringIsNull(bedName)) { buildBedData.bedName = bedName; } } else { if (dialogBean.dialogPosition == 1) { if (buildBedData.GetBedStatus() == ResearchStatusEnum.Researching) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1313)); return; } if (buildBedData.isSet) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1314)); return; } //丢弃确认 gameData.RemoveBed(buildBedData); uiComponent.RefreshUI(); } else if (dialogBean.dialogPosition == 2) { //普通弹窗(取消研究) buildBedData.CancelResearch(gameData); } } //重新设置数据 if (gameObject) { SetData(buildBedData); } }
/// <summary> /// 设置数据 /// </summary> /// <param name="textData"></param> /// <param name="listTextInfo"></param> public void SetData(TextInfoBean textData, List <TextInfoBean> listTextInfo) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //清空选项 CptUtil.RemoveChildsByName(objSelectContent.transform, "SelectButton", true); //清空文本 tvContent.text = ""; tvName.text = ""; //回到顶部 scrollRect.verticalNormalizedPosition = 0; this.textData = textData; //选择对话 特殊处理 增加选择框 if (textData.GetTextType() == TextInfoTypeEnum.Select || textData.GetTextType() == TextInfoTypeEnum.Talk) { objNext.gameObject.SetActive(false); foreach (TextInfoBean itemData in listTextInfo) { //提示文本 if (itemData.select_type == 0) { this.textData = itemData; } // 选项 else { GameObject objSelect = Instantiate(objSelectModel, objSelectContent.transform); objSelect.SetActive(true); ItemGameTextSelectCpt itemCpt = objSelect.GetComponent <ItemGameTextSelectCpt>(); itemCpt.SetData(itemData); } } } else { objNext.gameObject.SetActive(true); //添加奖励 AddReward(textData.reward_data); } //正常文本处理 //查询角色数据 CharacterBean characterData; if (textData.user_id == 0) { characterData = gameData.userCharacter; } else { characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(textData.user_id); } if (characterData == null) { LogUtil.LogError("文本展示没有找到该文本发起者"); return; } //名字设置 SetName(characterData.baseInfo.titleName, characterData.baseInfo.name, textData.name); //设置角色形象 SetCharacterUI(characterData); //设置正文内容 SetContent(textData.content); //添加好感度 AddFavorability(textData.user_id, textData.add_favorability); //场景人物表情展示 ShowSceneExpression(textData.scene_expression); }