Пример #1
0
    void OnLootItem(C2G.StoreLootItem packet, C2G.StoreLootItemAck ack)
    {
        if (packet.is_free == true)
        {
            if (m_StoreLootInfo == null)
            {
                m_StoreLootInfo                 = new pd_StoreLootInfo();
                m_StoreLootInfo.loot_id         = m_ItemLoot.ID;
                m_StoreLootInfo.available_count = m_ItemLoot.refresh_count;
                m_StoreLootInfo.daily_index     = Network.DailyIndex;
                m_StoreLootInfo.weekly_index    = Network.WeeklyIndex;
            }
            m_StoreLootInfo.available_count--;
            m_StoreLootInfo.available_time = Network.Instance.ServerTime.AddMinutes(m_ItemLoot.refresh_free);
            m_Free.SetActive(false);
            m_Normal.SetActive(true);
        }
        else
        {
            Network.PlayerInfo.UseGoods(m_ItemLoot.Price);
        }

        GameMain.Instance.UpdatePlayerInfo();

        LootItemInfo loot_item_info = null;

        if (ack.loot_item != null)
        {
            ItemManager.Instance.Add(ack.loot_item);
            loot_item_info = new LootItemInfo(ack.loot_item.item_idn, ack.loot_item.add_piece_count);
        }
        else
        {
            RuneManager.Instance.Add(ack.loot_rune);
            loot_item_info = new LootItemInfo(ack.loot_rune.rune_idn, 0);
        }
        Popup.Instance.Show(ePopupMode.LootItem, loot_item_info, this);

        GameMain.Instance.GetCurrentMenu().GetComponent <Store>().UpdateStoreLootFree();
    }
Пример #2
0
    void OnPopupOk(StoreConfirmParam parm)
    {
        if (m_ItemLoot != null)
        {
            long price = Network.PlayerInfo.GetGoodsValue(m_ItemLoot.Price.goods_type);
            if (m_Free.activeInHierarchy == false && m_ItemLoot.Price.goods_value > price)
            {
                Popup.Instance.Show(ePopupMode.MoveStore, m_ItemLoot.Price.goods_type);
                return;
            }
            switch (m_ItemLoot.LootType)
            {
            case "LootHero":
            {
                if (Network.Instance.CheckCreatureSlotCount(m_ItemLoot.LootCount, true, true, OnLootMore) == false)
                {
                    return;
                }

                if (m_ItemLoot.LootCount == 1)
                {
                    C2G.LootCreature packet = new C2G.LootCreature();
                    packet.loot_id = m_ItemLoot.ID;
                    packet.is_free = m_Free.activeSelf;
                    if (Tutorial.Instance.Completed == false)
                    {
                        C2G.TutorialState tutorial_packet = new C2G.TutorialState();
                        tutorial_packet.tutorial_state      = (short)Tutorial.Instance.CurrentState;
                        tutorial_packet.next_tutorial_state = (short)Tutorial.Instance.NextState;
                        tutorial_packet.loot_creature       = packet;
                        Network.GameServer.JsonAsync <C2G.TutorialState, C2G.TutorialStateAck>(tutorial_packet, OnTutorialLootCreature);
                    }
                    else
                    {
                        Network.GameServer.JsonAsync <C2G.LootCreature, C2G.LootCreatureAck>(packet, OnLootCreature);
                    }
                    return;
                }
                else if (m_ItemLoot.LootCount == 10)
                {
                    C2G.LootCreature10 packet = new C2G.LootCreature10();
                    packet.loot_id = m_ItemLoot.ID;
                    Network.GameServer.JsonAsync <C2G.LootCreature10, C2G.LootCreature10Ack>(packet, OnLootCreature10);
                    return;
                }
            }
            break;

            case "LootRune":
            case "LootItem":
            {
                if (m_ItemLoot.LootType == "LootRune" && Network.Instance.CheckRuneSlotCount(m_ItemLoot.LootCount, true, true, OnLootMore) == false)
                {
                    return;
                }

                if (m_ItemLoot.LootCount == 1)
                {
                    C2G.StoreLootItem packet = new C2G.StoreLootItem();
                    packet.loot_id = m_ItemLoot.ID;
                    packet.is_free = m_Free.activeSelf;
                    Network.GameServer.JsonAsync <C2G.StoreLootItem, C2G.StoreLootItemAck>(packet, OnLootItem);
                    return;
                }
                else if (m_ItemLoot.LootCount == 10)
                {
                    C2G.StoreLootItem10 packet = new C2G.StoreLootItem10();
                    packet.loot_id = m_ItemLoot.ID;
                    Network.GameServer.JsonAsync <C2G.StoreLootItem10, C2G.StoreLootItem10Ack>(packet, OnLootItem10);
                    return;
                }
            }
            break;
            }
        }
        else if (m_ItemGoods != null)
        {
            if (m_ItemGoods.StoreID != "Gem")
            {
                long price = Network.PlayerInfo.GetGoodsValue(m_ItemGoods.Price.goods_type);
                if (m_ItemGoods.Price.goods_value > price)
                {
                    Popup.Instance.Show(ePopupMode.MoveStore, m_ItemGoods.Price.goods_type);
                    return;
                }
            }

            C2G.StoreGoodsBuy packet = new C2G.StoreGoodsBuy();

            packet.store_id = m_ItemGoods.StoreID;
            packet.item_id  = m_ItemGoods.ID;

            Network.GameServer.JsonAsync <C2G.StoreGoodsBuy, C2G.StoreGoodsBuyAck>(packet, OnStoreItemBuy);
            return;
        }

        Tooltip.Instance.ShowMessageKey("NotImplement");
    }