/// <summary> /// 领取奖励 /// </summary> /// <param name="define"></param> /// <param name="endAction"></param> public static void GetTaskAward(List <TaskDefine> defines, bool isOneKey, Action <bool, SCGetTaskAward> endAction) { List <CSWareHouseStruct> datas = new List <CSWareHouseStruct>(); Dictionary <int, CSWareHouseStruct> dataDic = new Dictionary <int, CSWareHouseStruct>(); for (int i = 0; i < defines.Count; i++) { TaskDefine taskDefine = defines[i]; for (int e = 0; e < taskDefine.TaskAward.Count; e++) { GoodIDCount data = taskDefine.TaskAward[e]; if (dataDic.ContainsKey(data.ID)) { dataDic[data.ID].GoodNum = dataDic[data.ID].GoodNum + (int)data.Count; } else { CSWareHouseStruct cSWareHouseStruct = new CSWareHouseStruct(); cSWareHouseStruct.GoodId = data.ID; cSWareHouseStruct.GoodNum = (int)data.Count; dataDic.Add(cSWareHouseStruct.GoodId, cSWareHouseStruct); } } } foreach (var item in dataDic) { datas.Add(item.Value); } StaticData.OpenCommonReceiveAwardTips(StaticData.GetMultilingual(120246), StaticData.GetMultilingual(120195), "", () => { GetTaskAwardAction(defines, isOneKey, endAction); }, null, datas); }
/// <summary> /// 展示奖励 /// </summary> void ShowAward() { //Debug.Log("展示奖励"); if (_prizes != null && _currShowDataIndex < _prizes.Count) { CSWareHouseStruct data = _prizes[_currShowDataIndex]; //Debug.Log("奖品展示:" + data.GoodId); _showMoveGiftItem.transform.localPosition = Vector3.zero; _showMoveGiftItem.ShowPrize(data); _showMoveGiftItem.Show(true); ReceiveAwardGiftItemController item = GameObject.Instantiate(_receiveAwardGiftItemController, _giftBoxTra).GetComponent <ReceiveAwardGiftItemController>(); item.ShowPrize(data); item.Show(false); _receiveAwardGiftItemControllers.Add(item); _currShowDataIndex++; LayoutRebuilder.ForceRebuildLayoutImmediate(_giftBoxTra.GetComponent <RectTransform>()); StartCoroutine(ItemShowMove(item)); } else { //Debug.Log("奖品展示完毕"); StopAllCoroutines(); _maskBtn.enabled = true; } }
/// <summary> /// 初始化商品数据 /// </summary> /// <param name="sCGoodInfo"></param> public void Initial(CSWareHouseStruct houseStruct) { _id = houseStruct.GoodId; _number = houseStruct.GoodNum; _isLock = houseStruct.IsLock; _data = WarehouseTool.GetGameItemData(_id); }
/// <summary> /// 初始化item /// </summary> /// <param name="tra"></param> /// <param name="data"></param> public void Initial(Transform tra, CSWareHouseStruct data) { _tra = tra; _currData = data; _icon = _tra.Find("Icon").GetComponent <Image>(); _showNumber = _tra.Find("Text").GetComponent <Text>(); Show(); }
/// <summary> /// 判断是否开启红点 /// </summary> /// <returns></returns> public static bool IsOpenDot() { List <GoodsData> goods = new List <GoodsData>(); for (int i = 0; i < StaticData.playerInfoData.userInfo.WareHoseInfo.Count; i++) { CSWareHouseStruct cSData = StaticData.playerInfoData.userInfo.WareHoseInfo[i]; if (cSData.GoodNum > 0 && IsBePutInStorage(cSData.GoodId)) { GoodsData goodsData = new GoodsData(); goodsData.Initial(cSData); goods.Add(goodsData); } } for (int i = 0; i < goods.Count; i++) { if (goods[i]._data.ItemType != TypeGameItem.TreasureChest && IsNewGoods(goods[i])) { return(true); } } List <GoodsData> treasureChaests = GetTreasureChests(goods); Dictionary <int, int> treasureChaestsIndex = new Dictionary <int, int>(); for (int i = 0; i < treasureChaests.Count; i++) { GoodsData treasureChaestsData = treasureChaests[i]; TypeRarity key = treasureChaestsData._data.Rarity; int keyNumber = (int)key; if (treasureChaestsIndex.ContainsKey(keyNumber)) { int index = treasureChaestsIndex[keyNumber]; treasureChaestsIndex[keyNumber] = index + 1; } else { treasureChaestsIndex.Add(keyNumber, 1); } } foreach (var item in treasureChaestsIndex) { int index = GetTreasureChaestsValue(item.Key); if (index < item.Value) { return(true); } } //for (int i = 0; i < treasureChaests.Count; i++) //{ // if (IsThereAnUnlock(treasureChaests[i]._id)) // { // return true; // } //} return(false); }
/// <summary> /// 创建item /// </summary> /// <param name="datas"></param> void CreationItem(List <CSWareHouseStruct> datas) { for (int i = 0; i < datas.Count; i++) { CSWareHouseStruct data = datas[i]; UICommonReceiveAwardTipsItem item = new UICommonReceiveAwardTipsItem(); GameObject itemObj = GameObject.Instantiate(_itemCloning.gameObject, _showItemScrollRect.content); item.Initial(itemObj.transform, data); } }
internal async void SetInfo(CSWareHouseStruct awardInfo, MouseManorManager mouseManorManager) { var itemConfig = StaticData.configExcel.GetGameItemByID(awardInfo.GoodId); iconBox.sprite = await ABManager.GetAssetAsync <Sprite>(itemConfig.Icon); ButtonGetOne.onClick.RemoveAllListeners(); ButtonGetOne.onClick.AddListener(mouseManorManager.OnSingleReceiveClick); ButtonGetDouble.onClick.RemoveAllListeners(); ButtonGetDouble.onClick.AddListener(mouseManorManager.OnDoubleReceiveClick); }
/// <summary> /// 使用成功回调 /// </summary> /// <param name="isSucceed"></param> public void UseResult(bool isSucceed, SCUseWarehouseGoods data, WebErrorCode code) { if (isSucceed) { switch (_data._data.Use) { case Company.Cfg.GoodsUseType.ExtendBag: ExtendBagIDCount extendBagIDCount = StaticData.configExcel.GetVertical().UserExtendBag; if (extendBagIDCount.GoodsID == _data._id) { int number = extendBagIDCount.Count; number = number * _currNumber; StaticData.playerInfoData.userInfo.WarehouseCount = StaticData.playerInfoData.userInfo.WarehouseCount + number; } Debug.Log("扩容使用完毕"); break; case Company.Cfg.GoodsUseType.GiftBox: List <CSWareHouseStruct> newGoods = new List <CSWareHouseStruct>(); for (int i = 0; i < data.GetGoodsInfo.Count; i++) { SCBuyGoodsStruct sCBuyGoodsStruct = data.GetGoodsInfo[i]; //获取这次获得数量 int number = sCBuyGoodsStruct.Count; number = number - StaticData.GetWareHouseItem(sCBuyGoodsStruct.GoodsId).GoodNum; CSWareHouseStruct goodsData = new CSWareHouseStruct(); goodsData.GoodId = sCBuyGoodsStruct.GoodsId; goodsData.GoodNum = number; newGoods.Add(goodsData); StaticData.UpdateWareHouseItems(sCBuyGoodsStruct.GoodsId, sCBuyGoodsStruct.Count); } StaticData.OpenReceiveAward(newGoods, _data._id); Debug.Log("礼盒使用完毕"); break; } StaticData.UpdateWareHouseItem(_data._id, -_currNumber); Close(); WarehouseController.Instance.RefreshNewData(); } else { if (code == WebErrorCode.Good_Warehouse_Insufficient) { StaticData.CreateToastTips("仓库空间不足!领取礼盒失败!"); } else { Debug.Log("礼盒使用失败"); } } }
/// <summary> /// 解析数据 /// </summary> /// <param name="cSWareHouseStructs"></param> public static void ParseData(RepeatedField <CSWareHouseStruct> cSWareHouseStructs, Action <List <GoodsData>, Dictionary <int, GoodsData> > AcceptCurrTotalDataAction) { List <GoodsData> goods = new List <GoodsData>(); for (int i = 0; i < cSWareHouseStructs.Count; i++) { CSWareHouseStruct cSData = cSWareHouseStructs[i]; if (cSData.GoodNum > 0 && IsBePutInStorage(cSData.GoodId)) { GoodsData goodsData = new GoodsData(); goodsData.Initial(cSData); goods.Add(goodsData); } } DataSort(goods, AcceptCurrTotalDataAction); }
private async void SubmintDealCallback(SCSubmintDeal sCSubmintDeal) { if (sCSubmintDeal == null) { _butSubmint.interactable = true; return; } _showAwardDatas.Clear(); _curDealType = _currDeal.DealType; //发放奖励 道具入库 for (int i = 0; i < _currDeal.DealAwardInfo.Count; i++) { //需要展示的物品 CSWareHouseStruct cSWareHouseStruct = new CSWareHouseStruct(); cSWareHouseStruct.GoodId = _currDeal.DealAwardInfo[i].GoodId; cSWareHouseStruct.GoodNum = _currDeal.DealAwardInfo[i].GoodNum; cSWareHouseStruct.IsLock = true; _showAwardDatas.Add(cSWareHouseStruct); var item = StaticData.configExcel.GetGameItemByID(cSWareHouseStruct.GoodId); var itemSprite = await ABManager.GetAssetAsync <Sprite>(item.Icon); //世界坐标转换为屏幕坐标 var pos = Camera.main.WorldToScreenPoint(transform.position); StaticData.OpenPickupItemEffectNew(itemSprite, 0.35f, pos, cSWareHouseStruct.GoodId, cSWareHouseStruct.GoodNum, null /*PickUpItemEffectComplete*/); } //移除需要的物品 for (int i = 0; i < _currDeal.DealNeedGoods.Count; i++) { StaticData.UpdateWareHouseItem(_currDeal.DealNeedGoods[i].GoodId, _currDeal.DealNeedGoods[i].GoodNum * -1); } //更新完成订单数 int dealLevel = (int)_currDeal.DealType - 1; dealLevel = dealLevel >= 0 ? dealLevel : 0; StaticData.AddDealCompleteValue(dealLevel); //更新订单数据 _currDeal = sCSubmintDeal.NewDealInfo; StaticData.UpdateDeal(_currDeal); //道具入库 ItemPropsWarehousing(); }
/// <summary> /// 领取邮件中的附件 /// </summary> /// <param name="id"></param> /// <param name="endActionk"></param> public static void GetMailAccessoryInWareHouse(int id, Action <List <int>, List <CSMailAccessory> > endActionk) { //领取附件 CSAccessoryInWarehouse cSAccessoryInWarehouse = new CSAccessoryInWarehouse(); cSAccessoryInWarehouse.MailId = id; ProtocalManager.Instance().SendCSAccessoryInWarehouse(cSAccessoryInWarehouse, (data) => { Debug.Log("领取成功"); List <int> ids = new List <int>(); for (int i = 0; i < data.MailId.Count; i++) { ids.Add(data.MailId[i]); } List <CSMailAccessory> cSMailAccessories = new List <CSMailAccessory>(); for (int i = 0; i < data.GoodsInfo.Count; i++) { cSMailAccessories.Add(data.GoodsInfo[i]); } List <CSWareHouseStruct> datas = new List <CSWareHouseStruct>(); for (int i = 0; i < cSMailAccessories.Count; i++) { CSWareHouseStruct wareHouseData = new CSWareHouseStruct(); wareHouseData.GoodId = cSMailAccessories[i].GoodsId; wareHouseData.GoodNum = cSMailAccessories[i].GoodsNum; datas.Add(wareHouseData); } if (datas != null && datas.Count > 0) { StaticData.OpenCommonReceiveAwardTips(StaticData.GetMultilingual(120265), StaticData.GetMultilingual(120119), "", () => { Debug.Log("弹窗结束"); }, null, datas); } GameSoundPlayer.Instance.PlaySoundEffect(MusicHelper.SoundEffectEarnRewards); endActionk?.Invoke(ids, cSMailAccessories); }, (er) => { Debug.Log("领取失败Code:" + er.webErrorCode + "Message:" + er.ErrorMessage); }); }
/// <summary> /// 展示奖品 /// </summary> /// <param name="data"></param> public async void ShowPrize(CSWareHouseStruct data) { if (!_isInitial) { Initial(); } _data = data; _showNumberText.text = data.GoodNum.ToString(); GameItemDefine gameItemDefine = WarehouseTool.GetGameItemData(data.GoodId); if (gameItemDefine != null) { _showNameText.text = StaticData.GetMultilingual(gameItemDefine.ItemName); Transform grade = transform.Find("Grade"); grade.gameObject.SetActive(gameItemDefine.Grade > 0); _showGradeText.text = gameItemDefine.Grade.ToString(); //根据稀有度设置背景 int index = 0; switch (gameItemDefine.Rarity) { case TypeRarity.None: case TypeRarity.Primary: index = 0; break; case TypeRarity.Intermediate: case TypeRarity.Senior: index = (int)gameItemDefine.Rarity - 1; break; } _bgIcon.sprite = _gradeSprites[index]; _maskImage.sprite = _maskSprites[index]; } else { _showNameText.text = "获取不到配置数据"; _showGradeText.text = "获取不到配置数据"; } _icon.sprite = await ABManager.GetAssetAsync <Sprite>(gameItemDefine.Icon); gameObject.SetActive(true); }
/// <summary> /// 生成领取奖励UI /// </summary> /// <param name="awardInfo"></param> private void CreateReceiveBoxUI(CSWareHouseStruct awardInfo) { uiBoxReceive = UIComponent.CreateUI(UIType.UIManorBoxReceive); //设置显示信息 uiBoxReceive.GetComponent <UIManorMouseBox>().SetInfo(awardInfo, this); }
/// <summary> /// 打开番外购买弹窗 /// </summary> /// <param name="OADdata"></param> public async void OpenBuyOAD(ExtraStoryDefine OADdata, int Index, OADItem currItem, Action BuySucceedCallBack = null) {//购买番外逻辑 //点击解锁直接判断 //1、货币足够 → 直接扣 //2、不够 → 询问购买紫金币纯文本弹窗 → 点击购买 弹出增减页面 → 钻石不够 → 弹出提示钻石充值纯文本弹窗 → 确认购买 钻石充值界面 CurrencyType currencyType = CurrencyType.PurpleGold;//默认为紫金币类型 CSWareHouseStruct item = new CSWareHouseStruct(); if (OADdata.Price[0].ID == StaticData.configExcel.GetVertical().PurpleGoldsId) {//紫金币 currencyType = CurrencyType.PurpleGold; item = StaticData.GetWareHouseItem(StaticData.configExcel.GetVertical().PurpleGoldsId); } else if (OADdata.Price[0].ID == StaticData.configExcel.GetVertical().JewelGoodsId) {//钻石 currencyType = CurrencyType.Diamond; item = StaticData.GetWareHouseItem(StaticData.configExcel.GetVertical().JewelGoodsId); } else if (OADdata.Price[0].ID == StaticData.configExcel.GetVertical().GoldGoodsId) {//金币 currencyType = CurrencyType.Gold; item = StaticData.GetWareHouseItem(StaticData.configExcel.GetVertical().GoldGoodsId); } if (item.GoodNum >= OADdata.Price[0].Count) {//货币足够 //请求解锁 CSBuyExtraStory cSBuyExtraStory = new CSBuyExtraStory() { ExtraStoryId = OADdata.ExtraStoryId }; ProtocalManager.Instance().SendCSBuyExtraStory(cSBuyExtraStory, (SCBuyExtraStory sCBuyExtraStory) => { if (currencyType == CurrencyType.PurpleGold) { StaticData.UpdateWareHouseItems(StaticData.configExcel.GetVertical().PurpleGoldsId, (int)(StaticData.GetWareHouseItem(StaticData.configExcel.GetVertical().PurpleGoldsId).GoodNum - OADdata.Price[0].Count)); } StaticData.CreateToastTips(StaticData.GetMultilingual(120234));//章节购买成功 ChapterHelper.UnlockOAD(OADdata.ExtraStoryId); foreach (var goodsInfo in sCBuyExtraStory.CurrencyInfo) { StaticData.UpdateWareHouseItems(goodsInfo.GoodsId, (int)goodsInfo.Count); } BuySucceedCallBack?.Invoke(); }, (ErrorInfo e) => { Debug.LogError("番外解锁请求失败"); }); } else {//货币不足 Debug.Log("货币不足"); switch (currencyType) { case CurrencyType.Gold: UnlockOAD_Gold(); break; case CurrencyType.Diamond: UnlockOAD_Diamond(); break; case CurrencyType.PurpleGold: UnlockOAD_PurpleGold(); break; } } }
private void OnButtonFertilizerClick(TypeFertilizer typeFertilizer) { CSWareHouseStruct currFertilizerData = null; switch (typeFertilizer) { case TypeFertilizer.fertilizer2: currFertilizerData = StaticData.GetFertilizerCountByWhich(1); //第二种化肥 break; case TypeFertilizer.fertilizer3: currFertilizerData = StaticData.GetFertilizerCountByWhich(2); //第二种化肥 break; default: break; } if (currFertilizerData.GoodNum <= 0) { //关闭UI uiWorldHandleManager.SetHandleTileUIClose(); string FertilizerName = StaticData.GetMultiLanguageByGameItemId(currFertilizerData.GoodId); string Tips = string.Format(StaticData.GetMultilingual(120068), FertilizerName); StaticData.OpenCommonTips(Tips, 120010, async() => { //跳转商城 await StaticData.OpenShopUI(1); }); return; } CSFertilizer csFertilizer = new CSFertilizer() { SoilId = seedGrowComponent.tileComponent.SoilId, FertilizerId = currFertilizerData.GoodId }; ManorProtocalHelper.UseFertilizer(csFertilizer, async(succ) => { //关闭UI uiWorldHandleManager.SetHandleTileUIClose(); //施肥特效 string iconFretilizer = string.Empty; int propId = csFertilizer.FertilizerId; iconFretilizer = StaticData.configExcel.GetGameItemByID(propId).Icon; uiWorldHandleManager.uiFertilizerEffectComponent.ShowInfo(iconFretilizer); uiWorldHandleManager.uiFertilizerEffectComponent.GetComponent <RectTransform>().anchoredPosition = StaticData.ManorWorldPointToUICameraAnchorPos(seedGrowComponent.tileComponent.transform.position); uiWorldHandleManager.uiFertilizerEffectComponent.gameObject.SetActive(true); uiWorldHandleManager.isFertiliezeringAnimPlay = true; await UniTask.Delay(1000); uiWorldHandleManager.uiFertilizerEffectComponent.gameObject.SetActive(false); uiWorldHandleManager.isFertiliezeringAnimPlay = false; //end 施肥特效 SeedGrowComponent.PeriodGrow nextPeriod = SeedGrowComponent.PeriodGrow.Seed; var remainTime = seedGrowComponent.remainTime - StaticData.GetFertilizerAddTimeMilliSeconds(currFertilizerData.GoodId) / 1000f; if (remainTime <= 0) { //下一个时期 switch (seedGrowComponent.currCropPeriod) { case SeedGrowComponent.PeriodGrow.Seed: nextPeriod = SeedGrowComponent.PeriodGrow.Germinate; break; case SeedGrowComponent.PeriodGrow.Germinate: nextPeriod = SeedGrowComponent.PeriodGrow.GrowUp; //成长期减去对应的时间 remainTime = StaticData.GetSeedGrowComponentTotalSecond(seedGrowComponent, nextPeriod) + remainTime; if (remainTime <= 0) { //跳过了成长期,直接到成熟期 remainTime = 0f; nextPeriod = SeedGrowComponent.PeriodGrow.Ripe; } break; case SeedGrowComponent.PeriodGrow.GrowUp: nextPeriod = SeedGrowComponent.PeriodGrow.Ripe; break; case SeedGrowComponent.PeriodGrow.Ripe: //如果成熟阶段继续施肥还是成熟阶段 nextPeriod = SeedGrowComponent.PeriodGrow.Ripe; break; } } else { nextPeriod = seedGrowComponent.currCropPeriod; } seedGrowComponent.SetPeriod(nextPeriod, (long)remainTime * 1000); //化肥数量-1 StaticData.UpdateFertilizerMinus1(currFertilizerData.GoodId); }, (error) => { //关闭UI uiWorldHandleManager.SetHandleTileUIClose(); }); }