Example #1
0
    /// <summary>
    /// 设置摄像头范围
    /// </summary>
    /// <param name="layer"></param>
    protected void InitCameraRange(int layer)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        InnBuildBean innBuild = gameData.GetInnBuildData();

        if (layer == 1)
        {
            //定义镜头的移动范围
            cameraMove.minMoveX = -0.1f;
            cameraMove.maxMoveX = innBuild.innWidth + 1;
            cameraMove.minMoveY = -0.1f;
            cameraMove.maxMoveY = innBuild.innHeight + 1;
            //定义镜头的初始位置
            SetFollowPosition(new Vector3(innBuild.innWidth / 2f, innBuild.innHeight / 2f, 0));
        }
        else if (layer == 2)
        {
            //定义镜头的移动范围
            cameraMove.minMoveX = -0.1f;
            cameraMove.maxMoveX = innBuild.innSecondWidth + 1;
            cameraMove.minMoveY = -0.1f + 100;
            cameraMove.maxMoveY = innBuild.innSecondHeight + 1 + 100;
            //定义镜头的初始位置
            SetFollowPosition(new Vector3(innBuild.innSecondWidth / 2f, 100 + innBuild.innSecondHeight / 2f, 0));
        }
    }
Example #2
0
    public override void Start()
    {
        base.Start();

        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        //初始化场景

        SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>();
        InnBuildBean    innBuildData    = gameData.GetInnBuildData();

        sceneInnManager.InitScene(innBuildData.innWidth, innBuildData.innHeight);

        //innBuildData.ChangeInnSize(2, innBuildManager, 9, 9);


        //构建地板
        InnBuildHandler.Instance.builderForFloor.StartBuild();
        //构建墙壁
        InnBuildHandler.Instance.builderForWall.StartBuild();
        //构建建筑
        InnBuildHandler.Instance.builderForFurniture.StartBuild();

        //初始化客栈处理
        InnHandler.Instance.InitInn();
        InnHandler.Instance.InitRecord();
        //其他场景切过来需要重置一下客栈数据
        InnHandler.Instance.CloseInn();
        //设置天气
        GameWeatherHandler.Instance.SetWeather(GameCommonInfo.CurrentDayData.weatherToday);
        //打开UI
        UIHandler.Instance.manager.OpenUI <UIGameMain>(UIEnum.GameMain);

        //增加回调
        GameTimeHandler.Instance.RegisterNotifyForTime(NotifyForTime);
        TimeBean timeData = gameData.gameTime;

        if (timeData.hour >= 24 ||
            timeData.hour < 6 ||
            GameTimeHandler.Instance.GetDayStatus() == GameTimeHandler.DayEnum.End)
        {
            //如果是需要切换第二天
            EndDay();
        }
        else
        {
            //如果是其他场景切换过来
            GameTimeHandler.Instance.SetTime(timeData.hour, timeData.minute);
            GameTimeHandler.Instance.SetTimeStatus(false);
            //建造NPC
            RefreshScene();
            //设置位置
            Vector3           startPosition = sceneInnManager.GetTownEntranceLeft();
            ControlForMoveCpt baseControl   = GameControlHandler.Instance.StartControl <ControlForMoveCpt>(GameControlHandler.ControlEnum.Normal);
            baseControl.SetFollowPosition(startPosition);
        }
        //改变四季
        GameSeasonsHandler.Instance.ChangeSeasons();

        StartCoroutine(BuildNavMesh());
    }
Example #3
0
    /// <summary>
    /// 计算生成顾客住宿概率
    /// </summary>
    /// <returns></returns>
    public float CalculationCustomerForHotelRate(InnBuildBean innBuild)
    {
        //如果没有2楼则不生成顾客
        float rate = 0;

        if (innBuild.buildSecondLevel == 0)
        {
            return(rate);
        }
        //美观所占比重
        GetAesthetics(out float maxAesthetics, out float aesthetics);
        float rateAesthetics = aesthetics / maxAesthetics;

        if (rateAesthetics > 1)
        {
            rateAesthetics = 1;
        }
        //点赞率所占比重
        GetPraise(out int maxPraise, out int praise);
        float ratePraise = (float)praise / maxPraise;

        if (ratePraise > 1)
        {
            ratePraise = 1;
        }
        rate = 0.5f * ratePraise + 0.5f * rateAesthetics;
        return(rate * 0.2f);
    }
Example #4
0
    public void SetAesthetics(InnBuildBean innBuildData)
    {
        if (innBuildData == null)
        {
            return;
        }
        this.aesthetics = 0;
        List <InnResBean> listFurnitureData = innBuildData.GetFurnitureList(1);
        List <InnResBean> listFloorData     = innBuildData.GetFloorList(1);
        List <InnResBean> listWallData      = innBuildData.GetWallList(1);

        List <InnResBean> listData = new List <InnResBean>();

        listData.AddRange(listFurnitureData);
        listData.AddRange(listFloorData);
        listData.AddRange(listWallData);

        foreach (InnResBean itemData in listData)
        {
            BuildItemBean buildItem = InnBuildHandler.Instance.manager.GetBuildDataById(itemData.id);
            aesthetics += buildItem.aesthetics;
        }
        aesthetics = (float)Math.Round(aesthetics, 2);
        LimitAestheticsMax();
    }
Example #5
0
 /// <summary>
 /// 获取建筑数据
 /// </summary>
 /// <returns></returns>
 public InnBuildBean GetInnBuildData()
 {
     if (innBuildData == null)
     {
         innBuildData = new InnBuildBean();
     }
     return(innBuildData);
 }
Example #6
0
    /// <summary>
    /// 找到所有桌子
    /// </summary>
    /// <returns></returns>
    public List <BuildBedCpt> InitBedList(InnBuildBean innBuildData)
    {
        if (bedContainer == null)
        {
            return(listBedCpt);
        }
        BuildBedCpt[] tableArray = bedContainer.GetComponentsInChildren <BuildBedCpt>();
        listBedCpt = TypeConversionUtil.ArrayToList(tableArray);
        //设置每张床的美观值
        try
        {
            List <InnResBean> listFurnitureData = innBuildData.GetFurnitureList(2);
            List <InnResBean> listFloorData     = innBuildData.GetFloorList(2);
            List <InnResBean> listWallData      = innBuildData.GetWallList(2);

            Dictionary <Vector3, InnResBean> mapFurnitureData = new Dictionary <Vector3, InnResBean>();
            Dictionary <Vector3, InnResBean> mapFloorData     = new Dictionary <Vector3, InnResBean>();
            Dictionary <Vector3, InnResBean> mapWallData      = new Dictionary <Vector3, InnResBean>();

            foreach (InnResBean innResData in listFurnitureData)
            {
                mapFurnitureData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }
            foreach (InnResBean innResData in listFloorData)
            {
                mapFloorData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }
            foreach (InnResBean innResData in listWallData)
            {
                mapWallData.Add(TypeConversionUtil.Vector3BeanToVector3(innResData.startPosition), innResData);
            }

            if (listBedCpt != null)
            {
                for (int i = 0; i < listBedCpt.Count; i++)
                {
                    BuildBedCpt buildBedCpt        = listBedCpt[i];
                    float       totalAddAesthetics = 0;
                    float       totalSubAesthetics = 0;
                    GetAroundAesthetics(mapFurnitureData, buildBedCpt.transform.position, 3, out float addFurnitureAesthetics, out float subFurnitureAesthetics);
                    totalAddAesthetics += addFurnitureAesthetics;
                    totalSubAesthetics += subFurnitureAesthetics;
                    GetAroundAesthetics(mapFloorData, buildBedCpt.transform.position - new Vector3(0.5f, 0.5f), 3, out float addFloorAesthetics, out float subFloorAesthetics);
                    totalAddAesthetics += addFloorAesthetics;
                    totalSubAesthetics += subFloorAesthetics;
                    GetAroundAesthetics(mapWallData, buildBedCpt.transform.position - new Vector3(0.5f, 0.5f), 3, out float addWallAesthetics, out float subWallAesthetics);
                    totalAddAesthetics += addWallAesthetics;
                    totalSubAesthetics += subWallAesthetics;
                    buildBedCpt.SetAddAesthetics((float)decimal.Round(decimal.Parse(totalAddAesthetics + ""), 1), (float)decimal.Round(decimal.Parse(totalSubAesthetics + ""), 1));
                }
            }
        }
        catch
        {
        }
        return(listBedCpt);
    }
Example #7
0
    /// <summary>
    /// 处理NPC刷新时间
    /// </summary>
    /// <param name="hour"></param>
    /// <returns></returns>
    private void HandleNpcBuildTime(int hour)
    {
        if (hour > 6 && hour <= 9)
        {
            buildInterval = 3.5f;
        }
        else if (hour > 9 && hour <= 12)
        {
            buildInterval = 2.5f;
        }
        else if (hour > 12 && hour <= 18)
        {
            buildInterval = 1.5f;
        }
        else if (hour > 18 && hour <= 21)
        {
            buildInterval = 2.5f;
        }
        else if (hour > 21 && hour <= 24)
        {
            buildInterval = 3.5f;
        }
        else
        {
            buildInterval = 5;
        }
        //天气加成
        buildInterval -= GameWeatherHandler.Instance.manager.weatherData.weatherAddition;

        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        gameData.GetInnAttributesData().GetInnLevel(out int levelTitle, out int levelStar);
        if (levelTitle == 1)
        {
            buildInterval = buildInterval * 0.9f;
        }
        else if (levelTitle == 2)
        {
            buildInterval = buildInterval * 0.65f;
        }
        else if (levelTitle == 3)
        {
            buildInterval = buildInterval * 0.4f;
        }
        InnAttributesBean innAttributes = gameData.GetInnAttributesData();
        InnBuildBean      innBuild      = gameData.GetInnBuildData();

        buildCustomerForHotelRate = innAttributes.CalculationCustomerForHotelRate(innBuild);
        buildTeamGustomerRate     = innAttributes.CalculationTeamCustomerBuildRate();
        float buildGustomerRate = innAttributes.CalculationCustomerBuildRate();

        buildInterval = buildInterval / buildGustomerRate;
    }
Example #8
0
    private void Start()
    {
        GameDataBean      gameData      = GameDataHandler.Instance.manager.GetGameData();
        InnAttributesBean innAttributes = gameData.GetInnAttributesData();
        InnBuildBean      innBuild      = gameData.GetInnBuildData();

        buildCustomerForHotelRate = innAttributes.CalculationCustomerForHotelRate(innBuild);
        buildTeamGustomerRate     = innAttributes.CalculationTeamCustomerBuildRate();
        buildMaxNumber            = 500;
        GameTimeHandler.Instance.RegisterNotifyForTime(NotifyForTime);
        StartBuildCustomer();
    }
Example #9
0
 public void NotifyForTime(GameTimeHandler.NotifyTypeEnum notifyType, float timeHour)
 {
     if (notifyType == GameTimeHandler.NotifyTypeEnum.NewDay)
     {
         //初始化场景
         GameDataBean    gameData        = GameDataHandler.Instance.manager.GetGameData();
         InnBuildBean    innBuildData    = gameData.GetInnBuildData();
         SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>();
         sceneInnManager.InitScene(innBuildData.innWidth, innBuildData.innHeight);
         //StartCoroutine(CoroutineForBuildNavMesh());
     }
 }
Example #10
0
    public void SetCustomBed()
    {
        //设置是否展示定制床位功能
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        InnBuildBean innBuild = gameData.GetInnBuildData();

        //innBuild.GetInnSize(2, out int innWidth, out int innHeight, out int offsetHeight);
        if (innBuild.buildSecondLevel != 0)
        {
            btCustomBed.gameObject.SetActive(true);
        }
        else
        {
            btCustomBed.gameObject.SetActive(false);
        }
    }
Example #11
0
    /// <summary>
    /// 购买确认
    /// </summary>
    public override void OnClickSubmitBuy()
    {
        base.OnClickSubmitBuy();

        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        InnBuildBean innBuildData = gameData.GetInnBuildData();

        if (storeInfo == null)
        {
            return;
        }

        //检测是否正在修建客栈
        if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion && innBuildData.listBuildDay.Count != 0)
        {
            ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1019));
            return;
        }
        //检测金钱
        if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion && !gameData.HasEnoughMoney(storeInfo.price_l, storeInfo.price_m, storeInfo.price_s))
        {
            ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005));
            return;
        }
        if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion)
        {
            //生成普通的对话框
            DialogBean dialogBean = new DialogBean();
            if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion)
            {
                dialogBean.content = string.Format(TextHandler.Instance.manager.GetTextById(3010), 1 + "");
            }
            else
            {
                dialogBean.content = string.Format(TextHandler.Instance.manager.GetTextById(3002), buildItemData.name);
            }
            DialogHandler.Instance.CreateDialog <DialogView>(DialogEnum.Normal, this, dialogBean);
        }
        else
        {
            DialogBean dialogBean = new DialogBean();
            PickForNumberDialogView dialogView = DialogHandler.Instance.CreateDialog <PickForNumberDialogView>(DialogEnum.PickForNumber, this, dialogBean);
            dialogView.SetData(ivIcon.sprite, 999);
        }
    }
Example #12
0
    /// <summary>
    /// 设置客栈楼层
    /// </summary>
    /// <param name="layer"></param>
    public void SetInnLayer(int layer)
    {
        this.innLayer = layer;
        btDismantle.gameObject.SetActive(true);

        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        InnBuildBean innBuild = gameData.GetInnBuildData();

        if (innBuild.innSecondWidth == 0 || innBuild.innSecondHeight == 0)
        {
            objLayerSelect.SetActive(false);
        }
        else
        {
            objLayerSelect.SetActive(true);
        }

        //镜头初始化
        ControlForBuildCpt controlForBuild = GameControlHandler.Instance.manager.GetControl <ControlForBuildCpt>(GameControlHandler.ControlEnum.Build);

        controlForBuild.SetLayer(innLayer);
        if (innLayer == 1)
        {
            rbTypeBed.gameObject.SetActive(false);
            rbTypeStairs.gameObject.SetActive(false);
            rbTypeTable.gameObject.SetActive(true);
            rbTypeCounter.gameObject.SetActive(true);
            rbTypeStove.gameObject.SetActive(true);
            rbTypeDoor.gameObject.SetActive(true);
            rgType.SetPosition(1, true);
        }
        else if (innLayer == 2)
        {
            rbTypeBed.gameObject.SetActive(true);
            rbTypeStairs.gameObject.SetActive(true);
            rbTypeTable.gameObject.SetActive(false);
            rbTypeCounter.gameObject.SetActive(false);
            rbTypeStove.gameObject.SetActive(false);
            rbTypeDoor.gameObject.SetActive(false);
            rgType.SetPosition(0, true);
        }
    }
Example #13
0
    /// <summary>
    /// 设置建筑日
    /// </summary>
    /// <param name="buildDay"></param>
    public void SetBuildDay()
    {
        GameDataBean gameData     = GameDataHandler.Instance.manager.GetGameData();
        InnBuildBean innBuildData = gameData.GetInnBuildData();

        if (innBuildData.listBuildDay.Count > 0)
        {
            foreach (TimeBean itemBuildDay in innBuildData.listBuildDay)
            {
                foreach (ItemGameCalendarCpt itemGameCalendar in mListItemDay)
                {
                    if (itemGameCalendar.dateInfo.day == itemBuildDay.day &&
                        itemGameCalendar.dateInfo.month == itemBuildDay.month &&
                        year == itemBuildDay.year)
                    {
                        itemGameCalendar.SetRemark("建");
                    }
                }
            }
        }
    }
Example #14
0
    /// <summary>
    /// 创建商品列表
    /// </summary>
    /// <param name="listData"></param>
    public void CreateCarpenterData(List <StoreInfoBean> listData, StoreForCarpenterTypeEnum type)
    {
        CptUtil.RemoveChildsByActive(objCarpenterContent.transform);
        if (listData == null || objCarpenterContent == null)
        {
            return;
        }
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        for (int i = 0; i < listData.Count; i++)
        {
            StoreInfoBean itemData = listData[i];
            //如果扩建
            InnBuildBean innBuild = gameData.GetInnBuildData();
            if (itemData.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion)
            {
                if (itemData.mark_type == 1)
                {
                    if (innBuild.buildLevel + 1 != int.Parse(itemData.mark))
                    {
                        continue;
                    }
                }
                else if (itemData.mark_type == 2)
                {
                    if (innBuild.buildSecondLevel + 1 != int.Parse(itemData.mark) || innBuild.buildSecondLevel > innBuild.buildLevel)
                    {
                        continue;
                    }
                }
            }

            GameObject           itemObj      = Instantiate(objCarpenterContent, objCarpenterModel);
            ItemTownCerpenterCpt cerpenterCpt = itemObj.GetComponent <ItemTownCerpenterCpt>();
            cerpenterCpt.SetData(itemData);
            //itemObj.transform.DOScale(new Vector3(0, 0, 0), 0.5f).SetEase(Ease.OutBack).SetDelay(i * 0.05f).From();
        }
    }
Example #15
0
    /// <summary>
    /// 初始化客栈数据
    /// </summary>
    public void InitInnData()
    {
        GameDataBean      gameData      = GameDataHandler.Instance.manager.GetGameData();
        InnAttributesBean innAttributes = gameData.GetInnAttributesData();

        if (innAttributes == null)
        {
            return;
        }

        if (popupWorker != null)
        {
            popupWorker.SetContent(TextHandler.Instance.manager.GetTextById(2031));
        }
        if (popupBuild != null)
        {
            popupBuild.SetContent(TextHandler.Instance.manager.GetTextById(2032));
        }
        if (popupMenu != null)
        {
            popupMenu.SetContent(TextHandler.Instance.manager.GetTextById(2033));
        }
        if (popupBackpack != null)
        {
            popupBackpack.SetContent(TextHandler.Instance.manager.GetTextById(2034));
        }
        if (popupFavorability != null)
        {
            popupFavorability.SetContent(TextHandler.Instance.manager.GetTextById(2035));
        }
        if (popupDebug != null)
        {
            popupDebug.SetContent(TextHandler.Instance.manager.GetTextById(2036));
        }
        if (popupInnData != null)
        {
            popupInnData.SetContent(TextHandler.Instance.manager.GetTextById(2037));
        }
        if (popupSetting != null)
        {
            popupSetting.SetContent(TextHandler.Instance.manager.GetTextById(2038));
        }
        if (popupHelp != null)
        {
            popupHelp.SetContent(TextHandler.Instance.manager.GetTextById(2039));
        }
        if (popupJumpTime != null)
        {
            popupJumpTime.SetContent(TextHandler.Instance.manager.GetTextById(2040));
        }
        if (popupHotel != null)
        {
            popupHotel.SetContent(TextHandler.Instance.manager.GetTextById(2041));
        }
        if (popupFamily != null)
        {
            popupFamily.SetContent(TextHandler.Instance.manager.GetTextById(2042));
        }
        SetInnPraise(innAttributes);
        SetInnAesthetics(innAttributes);
        SetInnRichNess(innAttributes);
        SetInnLevel(innAttributes);

        //设置是否显示时间缩放
        if (SceneUtil.GetCurrentScene() != ScenesEnum.GameInnScene)
        {
            rgTimeScale.gameObject.SetActive(false);
            objLayerSelect.SetActive(false);
        }
        else
        {
            if (InnHandler.Instance.GetInnStatus() == InnHandler.InnStatusEnum.Close)
            {
                rgTimeScale.gameObject.SetActive(false);
                objLayerSelect.SetActive(false);
            }
            else
            {
                rgTimeScale.gameObject.SetActive(true);
                InnBuildBean innBuild = gameData.GetInnBuildData();
                if (innBuild.innSecondWidth != 0 && innBuild.innSecondHeight != 0)
                {
                    objLayerSelect.SetActive(true);
                }
                else
                {
                    objLayerSelect.SetActive(false);
                }
            }
        }

        //设置是否显示时间跳跃
        //if (uiGameManager.gameTimeHandler == null)
        //{
        //    btJumpTime.gameObject.SetActive(false);
        //}
        //else
        //{
        //    if(GameTimeHandler.Instance.GetDayStatus()== GameTimeHandler.DayEnum.Rest)
        //    {
        //        btJumpTime.gameObject.SetActive(true);
        //    }
        //    else
        //    {
        //        btJumpTime.gameObject.SetActive(false);
        //    }
        //}
        GameConfigBean gameConfig = GameDataHandler.Instance.manager.GetGameConfig();

        if (gameConfig.statusForWorkerNumber == 0)
        {
            workerNumber.Close();
        }
        else
        {
            if (GameTimeHandler.Instance.GetDayStatus() == GameTimeHandler.DayEnum.Work)
            {
                workerNumber.Open();
            }
            else
            {
                workerNumber.Close();
            }
        }

        //是否展示住店相关
        if (gameData.listBed.Count != 0)
        {
            btHotel.gameObject.SetActive(true);
        }
        else
        {
            btHotel.gameObject.SetActive(false);
        }
        //是否展示建造按钮
        if (SceneUtil.GetCurrentScene() == ScenesEnum.GameInnScene)
        {
            btBuild.gameObject.SetActive(true);
        }
        else
        {
            btBuild.gameObject.SetActive(false);
        }
        //是否展示家族按钮
        if (gameData.GetFamilyData().CheckMarry(gameData.gameTime))
        {
            btFamily.gameObject.SetActive(true);
        }
        else
        {
            btFamily.gameObject.SetActive(false);
        }
        //是否展示测试按钮
        if (ProjectConfigInfo.BUILD_TYPE == ProjectBuildTypeEnum.Debug)
        {
            btDebug.gameObject.SetActive(true);
        }
        else
        {
            btDebug.gameObject.SetActive(false);
        }
    }
Example #16
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();
    }
Example #17
0
    /// <summary>
    /// 拆除
    /// </summary>
    /// <param name="buildPosition">家具的位置</param>
    /// <param name="sceneFurniturePosition">家具在场景中的位置</param>
    protected void BuildItemForDismantle(int dismantleLayer, Vector3 buildPosition, Vector3 sceneFurniturePosition)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        //获取拆除位置的家具数据
        InnBuildBean buildData         = gameData.GetInnBuildData();
        InnResBean   itemFurnitureData = buildData.GetFurnitureByPosition(dismantleLayer, buildPosition);
        //因为在保存tile时坐标减过1 所以查询是也要-1
        InnResBean itemWallData = buildData.GetWallByPosition(dismantleLayer, buildPosition - new Vector3(1, 0, 0));

        //如果拆除的是家具
        if (itemFurnitureData != null)
        {
            BuildItemBean buildItemData = InnBuildHandler.Instance.manager.GetBuildDataById(itemFurnitureData.id);
            //如果是最后一扇门则不能删除
            if (buildItemData.build_type == (int)BuildItemTypeEnum.Door && buildData.GetDoorList().Count <= 1)
            {
                //只有一次点击时才出提示
                if (Input.GetButtonDown(InputInfo.Confirm))
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1004));
                }
            }
            else
            {
                //移除数据
                buildData.GetFurnitureList(dismantleLayer).Remove(itemFurnitureData);
                //移除场景中的建筑物
                InnBuildHandler.Instance.builderForFurniture.DestroyFurnitureByPosition(sceneFurniturePosition);
                if (buildItemData.build_type == (int)BuildItemTypeEnum.Bed)
                {
                    //如果是床
                    BuildBedBean buildBedData = gameData.GetBedByRemarkId(itemFurnitureData.remarkId);
                    buildBedData.isSet = false;
                }
                else if (buildItemData.build_type == (int)BuildItemTypeEnum.Stairs)
                {
                    //背包里添加一个
                    gameData.AddBuildNumber(itemFurnitureData.id, 1);
                    InnResBean itemStarisData = null;
                    if (dismantleLayer == 1)
                    {
                        itemStarisData = buildData.GetFurnitureByPosition(2, buildPosition + new Vector3(0, 100));
                        buildData.GetFurnitureList(2).Remove(itemStarisData);
                        //移除场景中的建筑物
                        InnBuildHandler.Instance.builderForFurniture.DestroyFurnitureByPosition(sceneFurniturePosition + new Vector3(0, 100));
                    }
                    else if (dismantleLayer == 2)
                    {
                        itemStarisData = buildData.GetFurnitureByPosition(1, buildPosition - new Vector3(0, 100));
                        buildData.GetFurnitureList(1).Remove(itemStarisData);
                        //移除场景中的建筑物
                        InnBuildHandler.Instance.builderForFurniture.DestroyFurnitureByPosition(sceneFurniturePosition - new Vector3(0, 100));
                    }
                }
                else
                {
                    //背包里添加一个
                    gameData.AddBuildNumber(itemFurnitureData.id, 1);
                }
            }
        }
        //如果拆除的是墙壁
        if (itemWallData != null)
        {
            //判断是否是最外的墙壁
            Vector3 startPosition = itemWallData.GetStartPosition();
            gameData.GetInnBuildData().GetInnSize(buildLayer, out int innWidth, out int innHeight, out int offsetHeight);
            bool isOutWall = false;
            if (buildLayer == 1)
            {
                isOutWall = (startPosition.x == 0 || startPosition.x == (innWidth - 1)) || startPosition.y == (innHeight - 1) + offsetHeight;
            }
            else if (buildLayer == 2)
            {
                isOutWall = (startPosition.x == 0 || startPosition.x == (innWidth - 1)) || startPosition.y == 0 + offsetHeight || startPosition.y == (innHeight - 1) + offsetHeight;
            }
            if (isOutWall)
            {
                //只有一次点击时才出提示
                if (Input.GetButtonDown(InputInfo.Confirm))
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1023));
                }
            }
            else
            {
                //移除数据
                buildData.GetWallList(buildLayer).Remove(itemWallData);
                //移除场景中的建筑物
                InnBuildHandler.Instance.builderForWall.ClearWall(Vector3Int.RoundToInt(startPosition));
                //背包里添加一个
                gameData.AddBuildNumber(itemWallData.id, 1);
            }
        }
        //更新一下数据
        InitBuildingExist();
    }
Example #18
0
    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);
        }
    }