Exemplo n.º 1
0
    /// <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);
    }
Exemplo n.º 2
0
 /// <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);
         }
     }
 }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    /// <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);
    }
Exemplo n.º 8
0
    /// <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);
    }
Exemplo n.º 9
0
    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);
    }
Exemplo n.º 10
0
    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);
    }
Exemplo n.º 11
0
    /// <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);
    }
Exemplo n.º 12
0
    /// <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);
    }
Exemplo n.º 13
0
    /// <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;
            }
        }
    }
Exemplo n.º 14
0
    /// <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);
    }
Exemplo n.º 15
0
    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;
    }
Exemplo n.º 16
0
    /// <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);
    }
Exemplo n.º 17
0
    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;
        }
    }
Exemplo n.º 18
0
    /// <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;
        }
    }
Exemplo n.º 19
0
    /// <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);
    }
Exemplo n.º 20
0
 /// <summary>
 /// 设置角色好感度
 /// </summary>
 /// <param name="characterFavorabilityData"></param>
 public virtual void SetFavorabilityData(CharacterFavorabilityBean characterFavorabilityData)
 {
     this.characterFavorabilityData = characterFavorabilityData;
 }