Пример #1
0
    /// <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);
    }
Пример #2
0
    /// <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;
        }
    }
Пример #3
0
 /// <summary>
 /// 初始化商品数据
 /// </summary>
 /// <param name="sCGoodInfo"></param>
 public void Initial(CSWareHouseStruct houseStruct)
 {
     _id     = houseStruct.GoodId;
     _number = houseStruct.GoodNum;
     _isLock = houseStruct.IsLock;
     _data   = WarehouseTool.GetGameItemData(_id);
 }
Пример #4
0
 /// <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();
 }
Пример #5
0
    /// <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);
    }
Пример #6
0
 /// <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);
     }
 }
Пример #7
0
    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);
    }
Пример #8
0
    /// <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("礼盒使用失败");
            }
        }
    }
Пример #9
0
    /// <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);
    }
Пример #10
0
    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();
    }
Пример #11
0
    /// <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);
        });
    }
Пример #12
0
    /// <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);
    }
Пример #13
0
 /// <summary>
 /// 生成领取奖励UI
 /// </summary>
 /// <param name="awardInfo"></param>
 private void CreateReceiveBoxUI(CSWareHouseStruct awardInfo)
 {
     uiBoxReceive = UIComponent.CreateUI(UIType.UIManorBoxReceive);
     //设置显示信息
     uiBoxReceive.GetComponent <UIManorMouseBox>().SetInfo(awardInfo, this);
 }
Пример #14
0
    /// <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;
            }
        }
    }
Пример #15
0
    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();
        });
    }