void ReflushTopDesc() { topDescText.text = ""; if (m_curPrizeConfig.nPrizeType == (int)EMActorPrizeType.ACTOR_PRIZE_RUNE) { int nRuneID = m_curPrizeConfig.nPrizeParam[0]; SSchemeRuneConfig runeConfig = null; RunePage.Instance.GetRuneInfo(nRuneID, ref runeConfig); if (runeConfig != null) { List <RuneItemInfo> runeList = null; int nRuneNum = 0; LogicDataCenter.runePageDataManager.dicRuneInlayTypeStoreInfo.TryGetValue(runeConfig.nRuneInlayType, out runeList); if (runeList != null) { for (int i = 0; i < runeList.Count; ++i) { if (runeList[i].nRuneId == nRuneID) { nRuneNum += runeList[i].nRuneNum; } } } topDescText.text = String.Format(ULocalizationService.Instance.Get("UIView", "PointShopBuyGoods", "HaveRuneNumDesc"), nRuneNum); } } else if (m_curPrizeConfig.nPrizeType == (int)EMActorPrizeType.ACTOR_PRIZE_HEROCARD) { if (m_curGoodsConfig.nNumLimitID > 0) { SPointShopNumLimitPrice limitConfig = PointShopConfig.Instance.GetShopNumLimitPriceConfig(m_curGoodsConfig.nNumLimitID); if (limitConfig != null && limitConfig.limitStepList.Count > 0) { int nMaxNum = limitConfig.limitStepList[limitConfig.limitStepList.Count - 1].nLimitNum; int nBoughtNum = 0; cmd_entity_update_pointshop_buynum_info buyNumInfo = new cmd_entity_update_pointshop_buynum_info(); if (LogicDataCenter.pointShopDataManager.BuyNumInfo.TryGetValue(m_curGoodsConfig.nSellID, out buyNumInfo)) { nBoughtNum = buyNumInfo.nBoughtNum; } int nLeftNum = nMaxNum - nBoughtNum; topDescText.text = String.Format(ULocalizationService.Instance.Get("UIView", "PointShopBuyGoods", "CanBuyCardNumDesc"), nLeftNum); } } } }
public int CalcNumLimitBuyMax(int nLimitID, int nSellID, int nResType, int nCurRes) { SPointShopNumLimitPrice limitConfig = PointShopConfig.Instance.GetShopNumLimitPriceConfig(nLimitID); if (limitConfig == null) { return(0); } int nBoughtNum = 0; cmd_entity_update_pointshop_buynum_info buyNumInfo = new cmd_entity_update_pointshop_buynum_info(); if (BuyNumInfo.TryGetValue(nSellID, out buyNumInfo)) { nBoughtNum = buyNumInfo.nBoughtNum; } int nIndex = 0; for (; nIndex < limitConfig.limitStepList.Count; ++nIndex) { int nLimitNum = limitConfig.limitStepList[nIndex].nLimitNum; if (nLimitNum == 0) { return(0); } if (nLimitNum < 0 || nBoughtNum < nLimitNum) { break; } } if (nIndex >= limitConfig.limitStepList.Count) { return(0); } int nResult = 0; while (nCurRes > 0) { if (nIndex >= limitConfig.limitStepList.Count) { break; } SPointShopNumLimitPriceSub config = limitConfig.limitStepList[nIndex]; int nSinglePrice = 0; if (nResType == 0) { nSinglePrice = config.nLimitPointPrice; } else { nSinglePrice = config.nLimitMoneyPrice; } if (nSinglePrice <= 0) { break; } int nCanBuyNum = config.nLimitNum - nBoughtNum; int nStepPrice = nSinglePrice * nCanBuyNum; if (nStepPrice >= nCurRes) { nResult += nCurRes / nSinglePrice; nCurRes = 0; } else { nResult += nCanBuyNum; nBoughtNum += nCanBuyNum; nCurRes -= nStepPrice; } ++nIndex; } return(nResult); }
public int CalcNumLimitPrice(int nLimitID, int nSellID, int nResType, int nBuyNum) { SPointShopNumLimitPrice limitConfig = PointShopConfig.Instance.GetShopNumLimitPriceConfig(nLimitID); if (limitConfig == null) { return(0); } int nBoughtNum = 0; cmd_entity_update_pointshop_buynum_info buyNumInfo = new cmd_entity_update_pointshop_buynum_info(); if (BuyNumInfo.TryGetValue(nSellID, out buyNumInfo)) { nBoughtNum = buyNumInfo.nBoughtNum; } int nIndex = 0; for (; nIndex < limitConfig.limitStepList.Count; ++nIndex) { int nLimitNum = limitConfig.limitStepList[nIndex].nLimitNum; if (nLimitNum == 0) { return(0); } if (nLimitNum < 0 || nBoughtNum < nLimitNum) { break; } } if (nIndex >= limitConfig.limitStepList.Count) { return(0); } long lRealPrice = 0; int nHasBuyNum = nBoughtNum; // 已经购买数量 int nToBuyNum = nBuyNum; // 本次将要购买数量 int nPriceTotal = 0; for (nIndex = 0; nIndex < limitConfig.limitStepList.Count; ++nIndex) { SPointShopNumLimitPriceSub node = limitConfig.limitStepList[nIndex]; if (nHasBuyNum > node.nLimitNum) { continue; } int nSinglePrice = ((nResType == 0) ? node.nLimitPointPrice : node.nLimitMoneyPrice); if (nSinglePrice <= 0) { return(0); } int nDiffNum = node.nLimitNum - nHasBuyNum; // 当次可购买数量,如果不够将下次循环中继续扣除本次的数量 int nCanBuyNum = (nDiffNum >= nToBuyNum ? nToBuyNum : nDiffNum); nPriceTotal += nSinglePrice * nCanBuyNum; nHasBuyNum += nCanBuyNum; nToBuyNum -= nCanBuyNum; if (nToBuyNum <= 0) { break; } } lRealPrice = nPriceTotal; if (lRealPrice > int.MaxValue) { return(0); } return((int)lRealPrice); }