/// <summary> /// 请求购买商品的消息处理 /// </summary> /// <param name="token"></param> /// <param name="model"></param> private void OnReqBuyGoods(UserToken token, SocketModel model) { ReqBuyGoods req = SerializeUtil.Deserialize <ReqBuyGoods>(model.message); MallCfg cfg = ConfigManager.instance.mallCfgs[(int)req.goodid]; CharacterData ch = CacheManager.instance.GetCharData(token.characterid); RspBuyGoods rsp = new RspBuyGoods(); // 金币不足 if (req.buyType == BuyType.Gold) { if (ch.gold < cfg.Gold) { rsp.msgtips = (uint)MsgTips.GoldNotEnough; } else { // 更新缓存 ch.gold -= cfg.Gold; rsp.msgtips = (uint)MsgTips.BuyGoodsSuccess; } } // 钻石不足 else if (req.buyType == BuyType.Diamon) { if (ch.diamond < cfg.Diamond) { rsp.msgtips = (uint)MsgTips.DiamondNotEnough; } else { ch.diamond -= cfg.Diamond; rsp.msgtips = (uint)MsgTips.BuyGoodsSuccess; } } // 同步角色金币数据 rsp.gold = (uint)ch.gold; rsp.diamond = (uint)ch.diamond; // 更新背包缓存 int firstEmptySlot = CacheManager.instance.GetFirstEmptySlot(token.characterid); InventoryData invData = CacheManager.instance.GetInvData(token.characterid, firstEmptySlot); invData.itemid = cfg.ItemID; invData.num = 1; rsp.inv = InventoryData.GetInvDTO(invData); NetworkManager.Send(token, (int)MsgID.BuyGoods_SRES, rsp); }
public void Init(List <uint> goods) { _btnReturn = _transform.Find("Image/BtnReturn").GetComponent <Button>(); _btnReturn.onClick.AddListener(OnBtnReturnClick); _txtGold = _transform.Find("Image/GoldInfo/TxtGold").GetComponent <Text>(); _txtGold.text = DataCache.instance.currentCharacter.gold.ToString(); _txtDiamond = _transform.Find("Image/GoldInfo/TxtDiamond").GetComponent <Text>(); _txtDiamond.text = DataCache.instance.currentCharacter.diamond.ToString(); _content = _transform.Find("Scroll View/Viewport/Content"); _btnGoods = _transform.Find("Scroll View/Viewport/BtnGoods").GetComponent <Button>(); for (int i = 0; i < goods.Count; i++) { Transform child = GameObject.Instantiate(_btnGoods.gameObject).transform; child.SetParent(_content); child.localPosition = Vector3.zero; child.localScale = Vector3.one; child.gameObject.SetActive(true); // 获取商品的配置信息和物品信息 MallCfg cfg = ConfigManager.instance.mallCfgs[(int)goods[i]]; ItemCfg itemCfg = ConfigManager.instance.GetItemCfg(cfg.ItemID); // 设置商品名 Text name = child.Find("Name").GetComponent <Text>(); name.text = itemCfg.Name; // 设置商品图标 Image img = child.Find("Image").GetComponent <Image>(); img.overrideSprite = Resources.Load <Sprite>("Icon/" + itemCfg.Icon); // 设置商品价值 Text gold = child.Find("Gold").GetComponent <Text>(); gold.text = cfg.Gold.ToString(); Text diamond = child.Find("Diamond").GetComponent <Text>(); diamond.text = cfg.Diamond.ToString(); // 添加购买按钮的事件 Button btnBuy = child.Find("BtnBuy").GetComponent <Button>(); btnBuy.gameObject.AddComponent <ButtonClickListener>().goodsid = goods[i]; } }