public void Apply(NGoodsInfo goodsInfo, GoodsDefine goodsDefine) { GoodsLimit goodsLimit = null; if (GoodsLimits.TryGetValue(goodsInfo.Id, out goodsLimit)) { if (goodsLimit.Count + goodsInfo.Count <= goodsDefine.Limit) { goodsLimit.Add(goodsInfo.Count); } } else if (goodsInfo.Count <= goodsDefine.Limit) { TGoodsLimit limit = new TGoodsLimit() { GoodsID = goodsInfo.Id, Purchased = (short)goodsInfo.Count, TCharacter = Owner.Data }; Owner.Data.GoodsLimits.Add(limit); GoodsLimits.Add(goodsInfo.Id, new GoodsLimit(limit)); } Owner.statusManager.AddStatus(StatusType.Goodslimit, StatusAction.Add, goodsInfo.Id, goodsInfo.Count); }
public void ApplyCurrency(Character character, GoodsDefine goodsDefine, int count) { character.Gold -= goodsDefine.Price * count; if (goodsDefine.CurrencyID != null) { for (int i = 0; i < goodsDefine.CurrencyID.Count; i++) { character.itemManager.RemoveItem(goodsDefine.CurrencyID[i], goodsDefine.CurrencyPrice[i] * count); } } }
public bool HasCurrency(Character character, GoodsDefine goodsDefine, int count) { if (goodsDefine.Price * count > character.Gold) { return(false); } if (goodsDefine.CurrencyID != null) { for (int i = 0; i < goodsDefine.CurrencyID.Count; i++) { if (!character.itemManager.HasItem(goodsDefine.CurrencyID[i], goodsDefine.CurrencyPrice[i] * count)) { return(false); } } } return(true); }
public bool CanBuy(NGoodsInfo goodsInfo, GoodsDefine goodsDefine) { if (goodsDefine.LimitType == GoodsLimitType.None) { return(true); } GoodsLimit goodsLimit = null; if (GoodsLimits.TryGetValue(goodsInfo.Id, out goodsLimit)) { if (goodsLimit.Count + goodsInfo.Count <= goodsDefine.Limit) { return(true); } } if (goodsInfo.Count <= goodsDefine.Limit) { return(true); } return(false); }
public GoodsLimit(int goodsId, int count) { id = goodsId; this.count = count; define = DataManager.Instance.Goods[goodsId]; }