Example #1
0
        public static void RewardPlayer(Player player, RewardData rewardData, GameRoom room)
        {
            if (player == null || rewardData == null || room == null)
            {
                return;
            }

            // TODO : 살짝 문제가 있긴 하다...
            // 1) DB에다가 저장 요청
            // 2) DB 저장 OK
            // 3) 메모리에 적용
            int?slot = player.Inven.GetEmptySlot();

            if (slot == null)
            {
                return;
            }

            ItemDb itemDb = new ItemDb()
            {
                TemplateId = rewardData.itemId,
                Count      = rewardData.count,
                Slot       = slot.Value,
                OwnerDbId  = player.PlayerDbId
            };

            // You
            Instance.Push(() =>
            {
                using (AppDbContext db = new AppDbContext())
                {
                    db.Items.Add(itemDb);
                    bool success = db.SaveChangesEx();
                    if (success)
                    {
                        // Me
                        room.Push(() =>
                        {
                            Item newItem = Item.MakeItem(itemDb);
                            player.Inven.Add(newItem);

                            // Client Noti
                            {
                                S_AddItem itemPacket = new S_AddItem();
                                ItemInfo itemInfo    = new ItemInfo();
                                itemInfo.MergeFrom(newItem.Info);
                                itemPacket.Items.Add(itemInfo);

                                player.Session.Send(itemPacket);
                            }
                        });
                    }
                }
            });
        }
Example #2
0
    public static void S_AddItemHandler(PacketSession session, IMessage packet)
    {
        S_AddItem itemList = (S_AddItem)packet;

        // 메모리에 아이템 정보 적용
        foreach (ItemInfo itemInfo in itemList.Items)
        {
            Item item = Item.MakeItem(itemInfo);
            Managers.Inven.Add(item);
        }

        Debug.Log("아이템을 획득했습니다.");
        UI_GameScene gameSceneUI = Managers.UI.SceneUI as UI_GameScene;

        gameSceneUI.InvenUI.RefreshUI();
        gameSceneUI.StatUi.RefreshUI();

        if (Managers.Obj.MyPlayer != null)
        {
            Managers.Obj.MyPlayer.RefreshAdditionalStat();
        }
    }
Example #3
0
    public static void S_AddItemHandler(PacketSession session, IMessage packet)// 인게임중 아이템 획득
    {
        S_AddItem itemList = packet as S_AddItem;

        // 아이템정보 메모리에 들고있기
        foreach (ItemInfo itemInfo in itemList.Items)
        {
            Item item = Item.MakeItem(itemInfo);
            Managers.Inven.Add(item);
        }

        Debug.Log("아이템 획득!");
        // 인벤토리 새로고침
        UI_GameScene gameSceneUI = Managers.UI.SceneUI as UI_GameScene;

        gameSceneUI.InvenUI.RefreshUI();
        gameSceneUI.StatUI.RefreshUI();
        // 변경스텟 적용
        if (Managers.Object.MyPlayer != null)
        {
            Managers.Object.MyPlayer.RefreshAdditionalStat();
        }
    }
Example #4
0
 public static void S_AddItemHandler(PacketSession session, IMessage packet)// 인게임중 아이템 획득
 {
     S_AddItem itemList = packet as S_AddItem;
 }
Example #5
0
 public static void S_AddItemHandler(PacketSession session, IMessage packet)
 {
     S_AddItem itemList = (S_AddItem)packet;
 }