示例#1
0
    /// <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);
    }
示例#2
0
    /// <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);
        }
    }
示例#3
0
    /// <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);
    }
示例#4
0
    /// <summary>
    /// 设置角色形象
    /// </summary>
    /// <param name="characterData"></param>
    public void SetCharacterUI(CharacterForFamilyBean characterData)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (characterData.GetFamilyType() != FamilyTypeEnum.Mate && !characterData.CheckIsGrowUp(gameData.gameTime))
        {
            ui_CharacterChild.gameObject.SetActive(true);
            ui_CharacterUI.gameObject.SetActive(false);
        }
        else
        {
            ui_CharacterChild.gameObject.SetActive(false);
            ui_CharacterUI.gameObject.SetActive(true);
        }
        if (ui_CharacterUI)
        {
            ui_CharacterUI.SetCharacterData(characterData.body, characterData.equips);
        }
    }
示例#5
0
    /// <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);
    }
示例#6
0
    public CharacterForFamilyBean CreateChild(string name, CharacterBean userData, CharacterBean mateData)
    {
        GameDataBean           gameData  = GameDataHandler.Instance.manager.GetGameData();
        CharacterForFamilyBean childData = new CharacterForFamilyBean(gameData.gameTime);

        childData.baseInfo.name = name;

        childData.body.eye        = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.eye : mateData.body.eye;
        childData.body.eyeColor   = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.eyeColor : mateData.body.eyeColor;
        childData.body.hair       = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.hair : mateData.body.hair;
        childData.body.hairColor  = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.hairColor : mateData.body.hairColor;
        childData.body.mouth      = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.mouth : mateData.body.mouth;
        childData.body.mouthColor = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.mouthColor : mateData.body.mouthColor;
        childData.body.skin       = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.skin : mateData.body.skin;
        childData.body.skinColor  = UnityEngine.Random.Range(0, 2) == 0 ? userData.body.skinColor : mateData.body.skinColor;

        childData.attributes.cook    = 1;
        childData.attributes.speed   = 1;
        childData.attributes.account = 1;
        childData.attributes.charm   = 1;
        childData.attributes.force   = 1;
        childData.attributes.lucky   = 1;
        childData.attributes.life    = 50;

        int sex = UnityEngine.Random.Range(0, 2);

        if (sex == 0)
        {
            childData.SetFamilyType(FamilyTypeEnum.Son);
            childData.body.SetSex(SexEnum.Man);
        }
        else
        {
            childData.SetFamilyType(FamilyTypeEnum.Daughter);
            childData.body.SetSex(SexEnum.Woman);
        }

        listChildCharacter.Add(childData);
        return(childData);
    }
示例#7
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;
        }
    }
示例#8
0
    /// <summary>
    /// 开始新的一天
    /// </summary>
    public void SetNewDay()
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        //初始化世界种子
        GameCommonInfo.RandomSeed = UnityEngine.Random.Range(int.MinValue, int.MaxValue);
        GameCommonInfo.InitRandomSeed();
        //解除每日
        GameCommonInfo.DailyLimitData.InitData(gameData);
        //初始化时间
        SetTimeStatus(true);
        hour = 6;
        min  = 0;
        //如果有建筑日则建筑日减一天
        InnBuildBean innBuildData = gameData.GetInnBuildData();

        if (innBuildData.listBuildDay.Count > 0)
        {
            //检测当前日子是否包含在建筑日内
            TimeBean timeData   = gameData.gameTime;
            bool     isBuildDay = false;
            foreach (TimeBean itemTime in innBuildData.listBuildDay)
            {
                if (itemTime.year == timeData.year && itemTime.month == timeData.month && itemTime.day == timeData.day)
                {
                    isBuildDay = true;
                }
            }
            if (!isBuildDay)
            {
                innBuildData.listBuildDay.Clear();
                //检测是1楼还是2楼
                if (innBuildData.buildInnWidth != 0 || innBuildData.buildInnHeight != 0)
                {
                    innBuildData.ChangeInnSize(1, innBuildData.buildInnWidth, innBuildData.buildInnHeight);
                    innBuildData.buildInnWidth  = 0;
                    innBuildData.buildInnHeight = 0;
                }
                else if (innBuildData.buildInnSecondWidth != 0 || innBuildData.buildInnSecondHeight != 0)
                {
                    innBuildData.ChangeInnSize(2, innBuildData.buildInnSecondWidth, innBuildData.buildInnSecondHeight);
                    innBuildData.buildInnSecondWidth  = 0;
                    innBuildData.buildInnSecondHeight = 0;
                }


                InnBuildHandler.Instance.builderForFloor.StartBuild();
                InnBuildHandler.Instance.builderForWall.StartBuild();
            }
        }
        //增加家族成员日子
        List <CharacterForFamilyBean> listFamilyData = gameData.GetFamilyData().GetAllFamilyData();

        if (!CheckUtil.ListIsNull(listFamilyData))
        {
            for (int i = 0; i < listFamilyData.Count; i++)
            {
                CharacterForFamilyBean itemData = listFamilyData[i];
                itemData.AddBirthDay(1);
            }
        }

        //通知新的一天
        notifyForTime?.Invoke(NotifyTypeEnum.NewDay, -1);
        SystemUtil.GCCollect();
    }
示例#9
0
 public void SetData(CharacterForFamilyBean characterData)
 {
     SetName(characterData.baseInfo.name);
     SetCall(characterData.GetFamilyName());
     SetCharacterUI(characterData);
 }