ManaPlus
buysellrecv.cpp
Go to the documentation of this file.
1 /*
2  * The ManaPlus Client
3  * Copyright (C) 2004-2009 The Mana World Development Team
4  * Copyright (C) 2009-2010 The Mana Developers
5  * Copyright (C) 2011-2019 The ManaPlus Developers
6  * Copyright (C) 2019-2021 Andrei Karas
7  *
8  * This file is part of The ManaPlus Client.
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 #include "net/ea/buysellrecv.h"
25 
26 #include "notifymanager.h"
27 
28 #include "being/playerinfo.h"
29 
30 #include "const/net/inventory.h"
31 
33 
36 
38 
39 #include "net/messagein.h"
40 
42 
43 #include "resources/item/item.h"
44 
45 #include "debug.h"
46 
47 namespace Ea
48 {
49 
50 namespace BuySellRecv
51 {
53  BuyDialog *mBuyDialog = nullptr;
54 } // namespace BuySellRecv
55 
57 {
59  {
60  mNpcId = msg.readBeingId("npc id");
62  }
63 }
64 
66 {
67  msg.readInt16("len");
68  const int n_items = (msg.getLength() - 4) / 10;
69  if (n_items > 0)
70  {
71  SellDialog *const dialog = CREATEWIDGETR(NpcSellDialog, mNpcId);
73 
74  for (int k = 0; k < n_items; k++)
75  {
76  const int index = msg.readInt16("index") - INVENTORY_OFFSET;
77  const int value = msg.readInt32("value");
78  msg.readInt32("value?");
79 
80  const Item *const item = PlayerInfo::getInventory()
81  ->getItem(index);
82 
83  if ((item != nullptr) && item->isEquipped() == Equipped_false)
84  dialog->addItem(item, value);
85  }
86  }
87  else
88  {
90  }
91 }
92 
93 } // namespace Ea
int BeingId
Definition: beingid.h:30
const BeingId BeingId_zero
Definition: beingid.h:30
static bool isActive()
Definition: buyselldialog.h:70
Item * getItem(const int index) const
Definition: inventory.cpp:83
Definition: item.h:50
Equipped isEquipped() const
Definition: item.h:129
void addItem(const Item *const item, const int price)
Definition: selldialog.cpp:238
void setMoney(const int amount)
Definition: selldialog.cpp:340
static const int INVENTORY_OFFSET
Definition: inventory.h:27
#define CREATEWIDGET(type,...)
Definition: createwidget.h:29
#define CREATEWIDGETR(type,...)
Definition: createwidget.h:36
const bool Equipped_false
Definition: equipped.h:30
bool msg(InputEvent &event)
Definition: chat.cpp:39
BuyDialog * mBuyDialog
Definition: buysellrecv.cpp:53
void processNpcSell(Net::MessageIn &msg)
Definition: buysellrecv.cpp:65
void processNpcBuySellChoice(Net::MessageIn &msg)
Definition: buysellrecv.cpp:56
void notify(const unsigned int message)
Inventory * getInventory()
Definition: playerinfo.cpp:195
int32_t getAttribute(const AttributesT id)
Definition: playerinfo.cpp:102