コード例 #1
0
        private bool VerifyTransaction(NetConnection <NetSession> sender, ItemPurchaseRequest request)
        {
            if (!DataManager.Instance.ShopItems.ContainsKey(request.shopID))
            {
                return(false);
            }

            if (!DataManager.Instance.ShopItems[request.shopID].ContainsKey(request.shopItemID))
            {
                return(false);
            }

            ShopItemDefine define = DataManager.Instance.ShopItems[request.shopID][request.shopItemID];

            if (define == null)
            {
                return(false);
            }

            if (!sender.Session.Character.ChangeGold(-define.Price))
            {
                return(false);
            }

            return(true);
        }
コード例 #2
0
        public bool BuyItem(NetConnection <NetSession> sender, ItemPurchaseRequest request)
        {
            if (VerifyTransaction(sender, request))
            {
                ShopItemDefine define = DataManager.Instance.ShopItems[request.shopID][request.shopItemID];

                sender.Session.Character.ItemManager.AddItem(define.ItemID, request.Amount);

                //additem notify
                NStatus status = new NStatus();
                status.Type   = StatusType.Item;
                status.Action = StatusAction.Add;
                status.Id     = define.ItemID;
                status.Value  = request.Amount;
                Console.WriteLine("purchase one unit of " + define.ItemID);
                if (sender.Session.Response.Notifies == null)
                {
                    sender.Session.Response.Notifies = new StatusNotify();
                }
                sender.Session.Response.Notifies.Status.Add(status);

                //deduct money notify
                status        = new NStatus();
                status.Type   = StatusType.Money;
                status.Action = StatusAction.Remove;
                status.Id     = -1;
                status.Value  = define.Price;
                sender.Session.Response.Notifies.Status.Add(status);

                return(true);
            }

            return(false);
        }
コード例 #3
0
    public void SetShopItem(int id, ShopItemDefine shopItem, UIShop owner)
    {
        this.shop       = owner;
        this.ShopItemID = id;
        this.ShopItem   = shopItem;
        this.item       = DataManager.Instance.Items[this.ShopItem.ItemID];

        this.title.text          = this.item.Name;
        this.count.text          = ShopItem.Count.ToString();
        this.price.text          = ShopItem.Price.ToString();
        this.icon.overrideSprite = Resloader.Load <Sprite>(item.Icon);
    }
コード例 #4
0
    public void Init(ShopItemDefine define, ShopPanel panel)
    {
        yesBtn     = GetComponent <Button>("YesBtn");
        noBtn      = GetComponent <Button>("NoBtn");
        confirmTxt = GetComponent <Text>("ConfirmTxt");

        confirmTxt.text = confirmTxt.text + DataManager.Instance.Items[define.ItemID].Name + " ?";

        yesBtn.onClick.AddListener(() =>
        {
            ShopManager.Instance.BuyItem(define.ID, 1);
            ItemService.Instance.OnItemPurchase += this.OnItemPurchaseResponse;
        });

        noBtn.onClick.AddListener(() =>
        {
            UIManager.Instance.HidePanel(typeof(ConfirmationPanel));
        });
    }
コード例 #5
0
    public void Init(ShopPanel panel, ShopItemDefine define, int index)
    {
        mPanel = panel;
        mIndex = index;
        Define = define;

        mItemImg   = GetComponent <Image>("ItemImg");
        mSelectImg = GetComponent <Image>("SelectImg");
        mAmountTxt = GetComponent <Text>("AmountTxt");

        mSelectImg.gameObject.SetActive(false);
        mItemImg.sprite = ResManager.Instance.Load <Sprite>(ResManager.ResourceType.Item, DataManager.Instance.Items[define.ItemID].Icon);
        mAmountTxt.text = define.Count.ToString();

        trigger = mItemImg.gameObject.AddComponent <EventTrigger>();

        EventTrigger.Entry mouseClick = new EventTrigger.Entry();
        mouseClick.eventID = EventTriggerType.PointerClick;
        mouseClick.callback.AddListener(OnMouseClick);

        trigger.triggers.Add(mouseClick);
    }