/// <summary> /// 初始化数据 /// </summary> public void InitData() { listFavorabilityData.Clear(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); List <CharacterFavorabilityBean> listData = gameData.listCharacterFavorability; if (listData == null) { return; } for (int i = 0; i < listData.Count; i++) { CharacterFavorabilityBean characterFavorability = listData[i]; CharacterBean characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(characterFavorability.characterId); //只显示小镇居民数据 if (characterData.npcInfoData.npc_type != (int)NpcTypeEnum.Town) { continue; } //只显示好感1以上的 if (characterFavorability.favorability <= 0) { continue; } listFavorabilityData.Add(characterFavorability); } gridVertical.SetCellCount(listFavorabilityData.Count); }
/// <summary> /// 增加好感 /// </summary> /// <param name="characterId"></param> /// <param name="favorablility"></param> public void AddFavorability(long characterId, int favorablility) { if (favorablility != 0) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); CharacterFavorabilityBean favorabilityData = gameData.GetCharacterFavorability(characterId); favorabilityData.AddFavorability(favorablility); //好感动画 if (ivFavorability != null && favorablility > 0) { ivFavorability.transform.localScale = new Vector3(1, 1, 1); ivFavorability.transform.DOComplete(); ivFavorability.gameObject.SetActive(true); ivFavorability.transform.DOScale(new Vector3(0, 0, 0), 1).From().SetEase(Ease.OutBack).OnComplete(delegate() { ivFavorability.gameObject.SetActive(false); }); ivFavorability.DOColor(new Color(1, 1, 1, 0), 1).From(); } //回调 if (uiComponent.callBack != null) { uiComponent.callBack.UITextAddFavorability(characterId, favorablility); } } }
public void BuildConvert(NpcTeamBean npcTeam, Vector3 npcPosition) { if (npcTeam == null || listExistTeamId.Contains(npcTeam.id)) { return; } //获取小队成员数据 npcTeam.GetTeamCharacterData(out List <CharacterBean> listLeader, out List <CharacterBean> listMembers); //设置小队相关 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(listConvertHide, objConvertModel, characterData, npcPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f))); //设置意图 NpcAIConvertCpt convertCpt = npcObj.GetComponent <NpcAIConvertCpt>(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(long.Parse(characterData.baseInfo.characterId)); convertCpt.SetTeamData(teamCode, npcTeam, i); convertCpt.SetIntent(NpcAISundryCpt.SundryIntentEnum.GoToInn); } listExistTeamId.Add(npcTeam.id); }
public void OnCellForItem(ScrollGridCell itemCell) { CharacterFavorabilityBean characterFavorability = listFavorabilityData[itemCell.index]; CharacterBean characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(characterFavorability.characterId); ItemGameFavorabilityCpt itemFavorability = itemCell.GetComponent <ItemGameFavorabilityCpt>(); itemFavorability.SetData(characterFavorability, characterData); }
public void BuildTownFriendsForOne(long npcId) { Vector3 npcPosition = GetRandomStartPosition(); CharacterBean characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(npcId); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(characterData.npcInfoData.id); BuildTownFriendsForOne(characterData, characterFavorability, npcPosition); }
public void BuildTownFriendsForTeam(NpcTeamBean teamData, Vector3 npcPosition) { if (teamData == null) { return; } if (listExistTeamId.Contains(teamData.id)) { return; } //设置小队相关 string teamCode = SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N); Color teamColor = new Color(UnityEngine.Random.Range(0f, 1f), UnityEngine.Random.Range(0f, 1f), UnityEngine.Random.Range(0f, 1f)); //获取小队成员数据 teamData.GetTeamCharacterData(out List <CharacterBean> listLeader, out List <CharacterBean> listMembers); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //设置小队人数(团队领袖全生成,小队成员随机生成) 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]; } //获取好感 CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(characterData.npcInfoData.id); GameObject npcObj = Instantiate(objContainer, objFriendModel); npcObj.transform.localScale = new Vector3(1, 1); npcObj.transform.position = npcPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f)); BaseNpcAI baseNpcAI = npcObj.GetComponent <BaseNpcAI>(); baseNpcAI.SetCharacterData(characterData); baseNpcAI.AddStatusIconForFriend(); baseNpcAI.AddStatusIconForGuestTeam(teamColor); baseNpcAI.SetFavorabilityData(characterFavorability); NpcAICostomerForFriendCpt customerAI = baseNpcAI.GetComponent <NpcAICostomerForFriendCpt>(); customerAI.SetTeamData(teamCode, teamData, i, teamColor); customerAI.SetIntent(NpcAICustomerCpt.CustomerIntentEnum.Want); } listExistTeamId.Add(teamData.id); }
/// <summary> /// 设置数据 /// </summary> /// <param name="characterFavorability"></param> /// <param name="characterData"></param> public void SetData(CharacterFavorabilityBean characterFavorability, CharacterBean characterData) { SetCharacterUI(characterData); SetName(characterData.baseInfo.titleName, characterData.baseInfo.name); SetSex(characterData.body.sex); SetFavorabilityLevel(characterData.npcInfoData.CheckCanMarry(), characterFavorability.favorabilityLevel); characterFavorability.GetFavorability(characterData.npcInfoData.CheckCanMarry(), out int favorability, out int favorabilityMax); SetFavorability(favorability, favorabilityMax); bool isTalk = GameCommonInfo.DailyLimitData.CheckIsTalkNpc(characterFavorability.characterId); bool isGift = GameCommonInfo.DailyLimitData.CheckIsGiftNpc(characterFavorability.characterId); SetInteractive(isTalk, isGift); }
/// <summary> /// 获取角色好感数据 /// </summary> /// <param name="characterId"></param> /// <returns></returns> public CharacterFavorabilityBean GetCharacterFavorability(long characterId) { foreach (CharacterFavorabilityBean itemData in listCharacterFavorability) { if (itemData.characterId == characterId) { return(itemData); } } CharacterFavorabilityBean characterFavorability = new CharacterFavorabilityBean(characterId); listCharacterFavorability.Add(characterFavorability); return(characterFavorability); }
public void BuildRascal(NpcTeamBean npcTeam, Vector3 npcPosition) { if (npcTeam == null) { return; } //if (listExistTeamId.Contains(npcTeam.id)) //改成了每日一次 if (listExistTeamId.Count > 0) { return; } //获取小队成员数据 npcTeam.GetTeamCharacterData(out List <CharacterBean> listLeader, out List <CharacterBean> listMembers); //设置小队相关 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(listRascalHide, objRascalModel, characterData, npcPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f))); //设置意图 NpcAIRascalCpt rascalCpt = npcObj.GetComponent <NpcAIRascalCpt>(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(long.Parse(characterData.baseInfo.characterId)); rascalCpt.SetTeamData(teamCode, npcTeam, i); rascalCpt.SetFavorabilityData(characterFavorability); rascalCpt.AddStatusIconForRascal(); rascalCpt.SetIntent(NpcAIRascalCpt.RascalIntentEnum.GoToInn); //设置捣乱者血量 characterData.GetAttributes(out CharacterAttributesBean characterAttributes); rascalCpt.characterMaxLife = characterAttributes.life; rascalCpt.characterLife = characterAttributes.life; } listExistTeamId.Add(npcTeam.id); }
public void BuildTownFriendsForOne(CharacterBean characterData, CharacterFavorabilityBean characterFavorability, Vector3 npcPosition) { //生成NPC GameObject npcObj = BuildNpc(listFriendHide, objFriendModel, characterData, npcPosition); BaseNpcAI baseNpcAI = npcObj.GetComponent <BaseNpcAI>(); baseNpcAI.SetCharacterData(characterData); baseNpcAI.SetFavorabilityData(characterFavorability); baseNpcAI.AddStatusIconForFriend(); NpcAICostomerForFriendCpt customerAI = baseNpcAI.GetComponent <NpcAICostomerForFriendCpt>(); customerAI.SetIntent(NpcAICustomerCpt.CustomerIntentEnum.Want); listExistNpcId.Add(characterData.npcInfoData.id); }
/// <summary> /// 获取出现详情 NPC好感 /// </summary> /// <param name="gameData"></param> /// <param name="conditionData"></param> /// <returns></returns> protected static ShowConditionBean GetConditionDetailsForNpcFavorability(GameDataBean gameData, ShowConditionBean conditionData) { long[] listData = StringUtil.SplitBySubstringForArrayLong(conditionData.data, ','); long npcId = listData[0]; long npcFavorability = listData[1]; CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(npcId); if (characterFavorability.favorability >= npcFavorability) { conditionData.isCondition = true; } else { conditionData.isCondition = false; } return(conditionData); }
/// <summary> /// 设置数据-聊天 /// </summary> /// <param name="userId"></param> /// <param name="npcType"></param> public void SetDataForTalk(NpcInfoBean npcInfo) { this.mTalkNpcInfo = npcInfo; mTextEnum = TextEnum.Talk; textOrder = 1; GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(mTalkNpcInfo.id); //如果是小镇居民的第一次对话 if (mTalkNpcInfo.GetNpcType() == NpcTypeEnum.Town && characterFavorability.firstMeet) { characterFavorability.firstMeet = false; TextInfoHandler.Instance.manager.GetTextForTownFirstMeet(mTalkNpcInfo.id, SetTextInfoData); return; } //获取对话选项 TextInfoHandler.Instance.manager.GetTextForTalkOptions(gameData, mTalkNpcInfo, SetTextInfoData); }
/// <summary> /// 获取触发条件详情 好感 /// </summary> /// <param name="triggerData"></param> /// <param name="gameData"></param> private static void GetTriggerDetailsForFavorability(EventTriggerBean triggerData, GameDataBean gameData) { long[] favorabilityData = StringUtil.SplitBySubstringForArrayLong(triggerData.triggerData, ','); CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(favorabilityData[0]); if (characterFavorability == null) { triggerData.isTrigger = false; } else { if (characterFavorability.favorabilityLevel < favorabilityData[1]) { triggerData.isTrigger = false; } else { triggerData.isTrigger = true; } } }
/// <summary> /// 列表回调 /// </summary> /// <param name="cell"></param> public void OnCellForItem(ScrollGridCell cell) { ItemTownBeautySalonCpt itemTownBeautySalon = cell.GetComponent <ItemTownBeautySalonCpt>(); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); bool isLock = false; //获取美颜庄老板的好感 CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(130011); int level = characterFavorability.GetFavorabilityLevel(); float unlockNumber = (listSelectData.Count / 6f) * (level + 1); if (cell.index < unlockNumber) { isLock = false; } else { isLock = true; } itemTownBeautySalon.SetData(bodyType, listSelectData[cell.index], isLock); itemTownBeautySalon.SetCallBack(this); }
public void InitData(GameDataBean gameData) { gameData.GetInnAttributesData().GetInnLevel(out int levelTitle, out int levelStar); //交换金钱限额 if (levelTitle == 0) { exchangeMoneyL = 0; } else { exchangeMoneyL = (levelStar + (levelTitle - 1) * 5) * 8; } //莫友乾好感 加成 CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorabilityNoAdd(50001); if (characterFavorability != null) { int favlevel = characterFavorability.GetFavorabilityLevel(); exchangeMoneyL = (favlevel == 0 ? exchangeMoneyL : exchangeMoneyL * favlevel); } //每日事件数量 numberForEvent = (levelTitle == 0 ? 3 : (levelTitle - 1) * 5 + levelStar + 3); //每日爱爱次数 numberForBirth = 1; listNpcGift.Clear(); listNpcTalk.Clear(); listArenaAttendedCharacter.Clear(); listRecruitmentCharacter = null; listArenaDataForElementary = null; listArenaDataForIntermediate = null; listArenaDataForAdvanced = null; listArenaDataForLegendary = null; }
/// <summary> /// 创建小镇好友 /// </summary> public void BuildTownFriendsForOne() { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); List <CharacterFavorabilityBean> listFavorabilityData = gameData.listCharacterFavorability; //获取小镇角色 List <CharacterFavorabilityBean> listTownFavorabilityData = new List <CharacterFavorabilityBean>(); foreach (CharacterFavorabilityBean itemFavorability in listFavorabilityData) { CharacterBean characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(itemFavorability.characterId); if (characterData == null) { continue; } if (characterData.npcInfoData.npc_type == (int)NpcTypeEnum.Town //生成的NPC中不包含这个角色 && !listExistNpcId.Contains(characterData.npcInfoData.id) //好感度大于1 && itemFavorability.GetFavorabilityLevel() >= 1) { listTownFavorabilityData.Add(itemFavorability); } } //符合条件的NPC中随机取一人 CharacterFavorabilityBean randomFavorabilityData = RandomUtil.GetRandomDataByList(listTownFavorabilityData); if (randomFavorabilityData == null) { return; } CharacterBean randomCharacterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(randomFavorabilityData.characterId); Vector3 npcPosition = GetRandomStartPosition(); BuildTownFriendsForOne(randomCharacterData, randomFavorabilityData, npcPosition); }
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> /// <param name="textData"></param> public void SelectText(TextInfoBean textData) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); switch (mTextEnum) { case TextEnum.Look: case TextEnum.Story: NextText(textData.next_order); break; case TextEnum.Talk: //不同的对话选项 //对话 //如果是对话选项 if (textData.GetTextType() == TextInfoTypeEnum.Talk) { if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99102))) { //对话 TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkNormalData); NextText(1); //增加好感 if (GameCommonInfo.DailyLimitData.AddTalkNpc(mTalkNpcInfo.id)) { gameData.GetCharacterFavorability(mTalkNpcInfo.id).AddFavorability(1); } //增加数据记录 CharacterFavorabilityBean characterFavorability = gameData.GetCharacterFavorability(mTalkNpcInfo.id); characterFavorability.AddTalkNumber(1); } //退出 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99103))) { NextText(); } //招募 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99104))) { if (gameData.CheckIsMaxWorker()) { ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1051)); } else { TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkRecruitData); NextText(1); } } //送礼 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99105))) { DialogBean dialogData = new DialogBean(); PickForItemsDialogView pickForItemsDialog = DialogHandler.Instance.CreateDialog <PickForItemsDialogView>(DialogEnum.PickForItems, this, dialogData); pickForItemsDialog.SetData(null, ItemsSelectionDialogView.SelectionTypeEnum.Gift); } //换取公会勋章 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99201))) { //对话 TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkExchangeData); NextText(1); } //换取奖杯 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99202))) { //对话 TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkExchangeData); NextText(1); } //换取装备 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99203))) { //对话 TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkExchangeData); NextText(1); } //换取道具 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99204))) { //对话 TextInfoHandler.Instance.manager.listTextData = RandomUtil.GetRandomDataByDictionary(TextInfoHandler.Instance.manager.mapTalkExchangeData); NextText(1); } //求婚 else if (textData.content.Equals(TextHandler.Instance.manager.GetTextById(99205))) { gameData.CheckHasItems(99900021, out bool hasItems, out long number); //判断是否有信物 if (hasItems) { DialogBean dialogData = new DialogBean(); dialogData.content = string.Format(TextHandler.Instance.manager.GetTextById(3121), mTalkNpcInfo.name); DialogHandler.Instance.CreateDialog <DialogView>(DialogEnum.Normal, this, dialogData); NextText(textData.next_order); } else { ItemsInfoBean itemsInfo = GameItemsHandler.Instance.manager.GetItemsById(99900021); ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(5023), itemsInfo.name, "1")); } } } else { NextText(textData.next_order); } break; } }
/// <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); }
/// <summary> /// 设置角色好感度 /// </summary> /// <param name="characterFavorabilityData"></param> public virtual void SetFavorabilityData(CharacterFavorabilityBean characterFavorabilityData) { this.characterFavorabilityData = characterFavorabilityData; }