Пример #1
0
    //使用技能
    public void useSkill(string path, ItemType itemType)
    {
        int itemId = Params.getItemId(itemType);

        if (!skillItemCount.ContainsKey(itemId) || skillItemCount [itemId] < 1)
        {
            return;
        }

        CSUseItem useItem = new CSUseItem();
        PBItem    item    = new PBItem();

        item.ItemId  = itemId;
        item.Count   = 1;
        useItem.Item = item;

        if (itemType == ItemType.MulBean)
        {
            Pacman pacman = pacmanMap [SocketManager.accountId];
            useItem.Args = pacman.route.Count.ToString();
        }

        SocketManager.SendMessageAsyc((int)MiGongOpcode.CSUseItem, CSUseItem.SerializeToBytes(useItem), delegate(int opcode, byte[] data) {
            // 不能再点
            transform.parent.parent.Find("Canvas/skills/" + path).GetComponent <Button>().enabled = false;
            // 如果能走到这里,说明道具使用正常
            SCUseItem ret                = SCUseItem.Deserialize(data);
            skillItemCount[itemId]       = skillItemCount[itemId] - 1;
            skillItemText[itemType].text = "x" + skillItemCount[itemId].ToString();

            // 道具发挥效果
            switch (itemType)
            {
            case ItemType.AddSpeed:
                Pacman pacman = pacmanMap [SocketManager.accountId];
                pacman.addSpeed(Params.itemTables[itemId].Para1);
                break;

            case ItemType.AddTime:
                currentTime += Params.itemTables[itemId].Para1;
                break;

            case ItemType.MulBean:
                pacman         = pacmanMap [SocketManager.accountId];
                pacman.mulBean = 1 + Params.itemTables[itemId].Para1;
                break;

            case ItemType.ShowRoute:
                string[] routes = ret.Ret.Split(';');
                int[] routeInt  = new int[routes.Length];
                for (int i = 0, len = routes.Length; i < len; i++)
                {
                    routeInt [i] = int.Parse(routes [i]);
                }
                this.route = routeInt;
                showRoute();
                break;
            }
        });
    }
Пример #2
0
    void Awake()
    {
        close.onClick.AddListener(delegate() {
            Sound.playSound(SoundType.Click);
            gameObject.SetActive(false);
        });
        useButton.onClick.AddListener(delegate() {
            Sound.playSound(SoundType.Click);
            if (selectItemId > 0)
            {
                PacketItem pi = itemGo[selectItemId].GetComponent <PacketItem>();
                if (pi.count < 1)
                {
                    Debug.LogError("count is " + pi.count + ",can not use");
                    return;
                }

                ItemTable itemTable = Params.itemTables[selectItemId];
                switch ((ItemType)(itemTable.ItemType))
                {
                case ItemType.Energy:
                    CSUseItem useItem = new CSUseItem();
                    PBItem item       = new PBItem();
                    item.Count        = 1;
                    item.ItemId       = itemTable.Id;
                    useItem.Item      = item;
                    SocketManager.SendMessageAsyc((int)MiGongOpcode.CSUseItem, CSUseItem.SerializeToBytes(useItem), delegate(int opcode, byte[] data) {
                        SCUseItem ret = SCUseItem.Deserialize(data);
                        string[] args = ret.Ret.Split(';');
                        Params.startEnergySchedule(int.Parse(args[0]), long.Parse(args[1]));
                        // 减少数量
//						PacketItem pi = itemGo[item.ItemId].GetComponent<PacketItem>();
                        pi.decCount(1);
                        if (pi.count <= 0)
                        {
                            init();
                        }
                    });
                    break;
                }
            }
        });
    }