/// <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)); } }
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()); }
/// <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); }
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(); }
/// <summary> /// 获取建筑数据 /// </summary> /// <returns></returns> public InnBuildBean GetInnBuildData() { if (innBuildData == null) { innBuildData = new InnBuildBean(); } return(innBuildData); }
/// <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); }
/// <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; }
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(); }
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()); } }
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); } }
/// <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); } }
/// <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); } }
/// <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("建"); } } } } }
/// <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(); } }
/// <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); } }
/// <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(); }
/// <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(); }
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); } }