Exemplo n.º 1
0
    /// <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);
    }
Exemplo n.º 2
0
    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];
        }
    }