protected static void CompleteRewardForAddChild(RewardTypeBean rewardTypeData) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); familyData.CreateChild(rewardTypeData.data, gameData.userCharacter, familyData.mateCharacter); }
/// <summary> /// 获取所有人员信息 /// </summary> /// <returns></returns> public List <CharacterBean> GetAllCharacterData() { List <CharacterBean> listData = new List <CharacterBean>(); //添加主角 if (userCharacter != null) { listData.Add(userCharacter); } //添加孩子 FamilyDataBean familyData = GetFamilyData(); List <CharacterForFamilyBean> listFamily = familyData.GetAllFamilyData(); for (int i = 0; i < listFamily.Count; i++) { CharacterForFamilyBean characterForFamily = listFamily[i]; if (characterForFamily.GetFamilyType() != FamilyTypeEnum.Mate && characterForFamily.CheckIsGrowUp(gameTime)) { listData.Add(characterForFamily); } } //添加工作者 if (listWorkerCharacter != null) { listData.AddRange(listWorkerCharacter); } return(listData); }
/// <summary> /// 获取家族数据 /// </summary> /// <returns></returns> public FamilyDataBean GetFamilyData() { if (familyData == null) { familyData = new FamilyDataBean(); } return(familyData); }
public override void OpenUI() { base.OpenUI(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); listFamilyData = familyData.GetAllFamilyData(); ui_FamilyList.SetCellCount(listFamilyData.Count); SetMarryDate(familyData.timeForMarry); SetBirthPro(familyData.birthPro); }
/// <summary> /// 获取触发条件详情 结婚 /// </summary> /// <param name="triggerData"></param> /// <param name="gameData"></param> private static void GetTriggerDetailsForMarry(EventTriggerBean triggerData, GameDataBean gameData) { FamilyDataBean familyData = gameData.GetFamilyData(); if (familyData.CheckIsMarryDay(gameData.gameTime)) { triggerData.isTrigger = true; } else { triggerData.isTrigger = false; } }
public override void RefreshUI() { base.RefreshUI(); //设置开火数量 MiniGameBirthBean miniGameBirthData = MiniGameHandler.Instance.handlerForBirth.miniGameData; SetFireNumber(miniGameBirthData.fireNumber, miniGameBirthData.winFireNumber); //设置怀孕进度 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); SetBirthPro(familyData.birthPro); }
/// <summary> /// 建造家族成员 /// </summary> public void BuildFamily() { //获取家族数据 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); List <CharacterForFamilyBean> listFamilyCharacterData = familyData.GetAllFamilyData(); for (int i = 0; i < listFamilyCharacterData.Count; i++) { CharacterForFamilyBean characterForFamily = listFamilyCharacterData[i]; CreateFamilyCharacter(characterForFamily); } }
/// <summary> /// 获取出现详情 是否结婚 /// </summary> /// <param name="gameData"></param> /// <param name="conditionData"></param> /// <returns></returns> protected static ShowConditionBean GetConditionDetailsForIsMarry(GameDataBean gameData, ShowConditionBean conditionData) { FamilyDataBean familyData = gameData.GetFamilyData(); if (familyData.CheckMarry(gameData.gameTime)) { conditionData.isCondition = true; } else { conditionData.isCondition = false; } return(conditionData); }
/// <summary> /// 到达卵子 /// </summary> public void ArriveEgg(MiniGameBirthSpermBean spermData) { //获取家族数据 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); //增加怀孕进度 familyData.addBirthPro(miniGameData.addBirthPro); DestroySperm(spermData); //刷新UI BaseUIComponent ui = UIHandler.Instance.manager.GetOpenUI(); ui.RefreshUI(); }
public void BuildSundry(NpcTeamBean npcTeam, Vector3 npcPosition) { if (listExistTeamId.Contains(npcTeam.id)) { return; } //获取小队成员数据 npcTeam.GetTeamCharacterData(out List <CharacterBean> listLeader, out List <CharacterBean> listMembers); //检测是否为结婚对象 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); for (int i = 0; i < listLeader.Count; i++) { CharacterBean itemCharacter = listLeader[i]; if (familyData.mateCharacter != null && familyData.mateCharacter.baseInfo != null && familyData.mateCharacter.baseInfo.characterId != null) { if (itemCharacter.baseInfo.characterId.Equals(familyData.mateCharacter.baseInfo.characterId)) { return; } } } //设置小队相关 string teamCode = SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N); int npcNumber = listLeader.Count + listMembers.Count; for (int i = 0; i < npcNumber; i++) { CharacterBean characterData = null; if (i < listLeader.Count) { characterData = listLeader[i]; } else { characterData = listMembers[i - listLeader.Count]; } //生成NPC GameObject npcObj = BuildNpc(listSundryHide, objSundryModel, characterData, npcPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f))); //设置意图 NpcAISundryCpt sundryCpt = npcObj.GetComponent <NpcAISundryCpt>(); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(long.Parse(characterData.baseInfo.characterId)); sundryCpt.SetTeamData(teamCode, npcTeam, i); sundryCpt.SetIntent(NpcAISundryCpt.SundryIntentEnum.GoToInn); } listExistTeamId.Add(npcTeam.id); }
/// <summary> /// 协程-下一天 /// </summary> /// <returns></returns> public IEnumerator CoroutineForNextDay() { yield return(new WaitForSeconds(animTimeForWaitNext)); //进入下一天 GameTimeHandler.Instance.GoToNextDay(1); GameTimeHandler.Instance.GetTime(out int newYear, out int newMonth, out int newDay); calendarView.ChangeData(newYear, newMonth, newDay); AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForShow); //展示是否营业框 yield return(new WaitForSeconds(animTimeForShowDialog)); GameTimeHandler.Instance.GetTime(out int year, out int month, out int day); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); List <CharacterBean> listWorker = gameData.GetAllCharacterData(); //如果有请假的员工 新的一天结束请假 foreach (CharacterBean itemWork in listWorker) { if (itemWork.baseInfo.GetWorkerStatus() == WorkerStatusEnum.Vacation) { itemWork.baseInfo.SetWorkerStatus(WorkerStatusEnum.Rest); } } FamilyDataBean familyData = gameData.GetFamilyData(); // 第一年和第二年 第一天默认不营业 if ((year == 221 || year == 222) && month == 1 && day == 1) { InnRest(); } //如果时建设中则不营业 else if (gameData.GetInnBuildData().listBuildDay.Count > 0) { InnRest(); } //如果是结婚日 else if (familyData.timeForMarry.year == year && familyData.timeForMarry.month == month && familyData.timeForMarry.day == day) { InnRest(); } else { objDialog.SetActive(true); objDialog.transform.localScale = new Vector3(1, 1, 1); objDialog.transform.DOScale(Vector3.zero, 0.5f).From().SetEase(Ease.OutBack); BirthForInit(); } }
/// <summary> /// 设置结婚日 /// </summary> public void SetMarryDay() { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); if (familyData != null && familyData.timeForMarry != null) { foreach (ItemGameCalendarCpt itemGameCalendar in mListItemDay) { if (itemGameCalendar.dateInfo.day == familyData.timeForMarry.day && itemGameCalendar.dateInfo.month == familyData.timeForMarry.month && year == familyData.timeForMarry.year) { itemGameCalendar.SetRemark("婚"); } } } }
/// <summary> /// 包括主角 /// </summary> /// <returns></returns> public List <string> GetAllFamilyCharacterIds() { List <string> listData = new List <string>(); if (userCharacter != null) { listData.Add(userCharacter.baseInfo.characterId); } FamilyDataBean familyData = GetFamilyData(); List <CharacterForFamilyBean> listFamily = familyData.GetAllFamilyData(); for (int i = 0; i < listFamily.Count; i++) { CharacterForFamilyBean characterForFamily = listFamily[i]; listData.Add(characterForFamily.baseInfo.characterId); } return(listData); }
/// <summary> /// 创建家族成员 /// </summary> /// <param name="characterForFamily"></param> public void CreateFamilyCharacter(CharacterForFamilyBean characterForFamily) { if (characterForFamily == null) { return; } FamilyTypeEnum familyType = characterForFamily.GetFamilyType(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); if (familyType == FamilyTypeEnum.Daughter || familyType == FamilyTypeEnum.Son) { //如果是女儿或者儿子 需要3年后才能移动 if (!characterForFamily.CheckIsGrowUp(gameData.gameTime)) { return; } } else if (familyType == FamilyTypeEnum.Mate) { //如果是伴侣需要结婚日之后才刷新 if (!familyData.CheckMarry(gameData.gameTime)) { return; } } //获取门的坐标 并在门周围生成NPC Vector3 doorPosition = InnHandler.Instance.GetRandomEntrancePosition(); //向下3个单位 doorPosition += new Vector3(0, -3f, 0); GameObject objFamily = BuildNpc(listHideNpc, objNormalModel, characterForFamily, doorPosition); if (objFamily == null) { return; } NpcAIFamilyCpt npcAIFamily = objFamily.GetComponent <NpcAIFamilyCpt>(); listFamilyCharacter.Add(npcAIFamily); }
public override void EndGame(MiniGameResultEnum gameResult, bool isSlow) { //每日限制减少 GameCommonInfo.DailyLimitData.numberForBirth--; listSperm.Clear(); //检测是否达到生孩子标准 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); //如果可以生孩子 if (familyData.birthPro >= 1) { familyData.birthPro = 0; if (familyData.listChildCharacter.Count >= 3) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1351)); } else { if (familyData.mateCharacter.body.GetSex() == gameData.userCharacter.body.GetSex()) { //同性 ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7032), 10); } else { //异性 ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7031), 10); } DialogBean dialogData = new DialogBean(); dialogData.title = TextHandler.Instance.manager.GetTextById(8011); DialogHandler.Instance.CreateDialog <InputTextDialogView>(DialogEnum.InputText, this, dialogData); //设置游戏数据 miniGameData.SetGameResult(MiniGameResultEnum.Win); return; } } base.EndGame(gameResult, isSlow); }
/// <summary> /// 生成NPC /// </summary> /// <param name="itemData"></param> public BaseNpcAI CreateNpc(StoryInfoDetailsBean itemData) { GameObject objNpcModel = StoryInfoHandler.Instance.manager.objNpcModel; GameObject objNpc = Instantiate(transform.gameObject, objNpcModel); objNpc.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y); listNpcObj.Add(objNpc); NpcAIStoryCpt aiNpc = objNpc.GetComponent <NpcAIStoryCpt>(); CharacterBean characterData; if (itemData.npc_id == 0) { //使用自己的数据 GameControlHandler.Instance.manager.GetControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story).SetCameraFollowObj(objNpc); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); characterData = gameData.userCharacter; } else if (itemData.npc_id == -1) { // 使用妻子的数据 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); characterData = familyData.mateCharacter as CharacterBean; } else { characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(itemData.npc_id); } //设置编号 objNpc.name = "character_" + itemData.num; CharacterBean copyCharacterData = ClassUtil.DeepCopyByBin <CharacterBean>(characterData); aiNpc.SetCharacterData(copyCharacterData); //默认设置NPC速度为1 aiNpc.characterMoveCpt.SetMoveSpeed(1); return(aiNpc); }
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); } }
public void Submit(DialogView dialogView, DialogBean dialogBean) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //送礼 if (dialogView is PickForItemsDialogView) { //获取选择物品 PickForItemsDialogView pickForItemsDialog = dialogView as PickForItemsDialogView; pickForItemsDialog.GetSelectedItems(out ItemsInfoBean itemsInfo, out ItemBean itemData); //获取赠送人 CharacterBean characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(mTalkNpcInfo.id); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(mTalkNpcInfo.id); int addFavorability; int favorabilityForTalk; //根据物品稀有度增加好感 switch (itemsInfo.GetItemRarity()) { case RarityEnum.Normal: addFavorability = 1; favorabilityForTalk = 1; break; case RarityEnum.Rare: addFavorability = 3; favorabilityForTalk = 3; break; case RarityEnum.SuperRare: addFavorability = 6; favorabilityForTalk = 3; break; case RarityEnum.SuperiorSuperRare: addFavorability = 10; favorabilityForTalk = 3; break; case RarityEnum.UltraRare: addFavorability = 15; favorabilityForTalk = 3; break; default: addFavorability = 1; favorabilityForTalk = 1; break; } //增加送礼次数 characterFavorability.AddGiftNumber(1); //删减物品 gameData.AddItemsNumber(itemData.itemId, -1); //增加每日限制 GameCommonInfo.DailyLimitData.AddGiftNpc(mTalkNpcInfo.id); //通过增加好感查询对话 TextInfoHandler.Instance.manager.listTextData = TextInfoHandler.Instance.manager.GetGiftTalkByFavorability(favorabilityForTalk); ShowText(TextInfoHandler.Instance.manager.listTextData); //文本里面会默认加好感 //先减去文本加的好感 再添加实际的好感加成 characterFavorability.AddFavorability(-favorabilityForTalk); characterFavorability.AddFavorability(addFavorability); } //求婚 else { //减去信物 gameData.AddItemsNumber(99900021, -1); //弹窗提示 ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1341)); //设置3天后结婚 FamilyDataBean familyData = gameData.GetFamilyData(); familyData.timeForMarry = GameTimeHandler.Instance.GetAfterDay(3); //设置妻子数据 CharacterForFamilyBean characterData = new CharacterForFamilyBean(mTalkNpcInfo, familyData.timeForMarry); characterData.SetFamilyType(FamilyTypeEnum.Mate); familyData.mateCharacter = characterData; } }
/// <summary> /// 获取交流对话选项 /// </summary> public void GetTextForTalkOptions(GameDataBean gameData, NpcInfoBean npcInfo, Action <List <TextInfoBean> > action) { //如果不是第一次对话则有以下选项 listTextData = new List <TextInfoBean>(); List <NpcTalkTypeEnum> npcTalkTypes = npcInfo.GetTalkTypes(); listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 0, TextHandler.Instance.manager.GetTextById(99101))); foreach (NpcTalkTypeEnum itemType in npcTalkTypes) { switch (itemType) { case NpcTalkTypeEnum.Talk: listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99102))); break; case NpcTalkTypeEnum.OneTalk: if (!GameCommonInfo.DailyLimitData.CheckIsTalkNpc(npcInfo.id)) { listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99102))); } break; case NpcTalkTypeEnum.Recruit: if (!gameData.CheckHasWorker(npcInfo.id + "")) { listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99104))); } break; case NpcTalkTypeEnum.Gift: if (!GameCommonInfo.DailyLimitData.CheckIsGiftNpc(npcInfo.id)) { listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99105))); } break; case NpcTalkTypeEnum.GuildCoinExchange: listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99201))); break; case NpcTalkTypeEnum.TrophyExchange: listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99202))); break; case NpcTalkTypeEnum.EquipExchange: listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99203))); break; case NpcTalkTypeEnum.ItemsExchange: listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99204))); break; } } CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(npcInfo.id); FamilyDataBean familyData = gameData.GetFamilyData(); //如果满足了结婚条件。添加结婚对话 if ( //该角色是否可以结婚 npcInfo.CheckCanMarry() //好感是否达到要求 && characterFavorability.CheckCanMarry() //是否已经向其他人求婚或者已经结婚 && (familyData.timeForMarry == null || familyData.timeForMarry.year == 0)) { listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99205))); } //离开选项 listTextData.Add(new TextInfoBean(TextInfoTypeEnum.Talk, 1, TextHandler.Instance.manager.GetTextById(99103))); //继续查询该人物的所有对话 GetTextForTalkByMinFavorability(npcInfo.id, characterFavorability.favorabilityLevel, action); action?.Invoke(listTextData); }