more fixes in count/subtypes
This commit is contained in:
parent
519a52910e
commit
47bd619273
|
@ -34,7 +34,7 @@
|
|||
Item::Item() : Thing()
|
||||
{
|
||||
m_id = 0;
|
||||
m_countOrSubType = 0;
|
||||
m_countOrSubType = 1;
|
||||
}
|
||||
|
||||
ItemPtr Item::create(int id)
|
||||
|
@ -44,8 +44,6 @@ ItemPtr Item::create(int id)
|
|||
logTraceError("invalid item id ", id);
|
||||
else {
|
||||
item->setId(id);
|
||||
if(item->isStackable())
|
||||
item->setCount(1);
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
@ -195,19 +193,3 @@ void Item::setId(uint32 id)
|
|||
m_id = id;
|
||||
m_type = g_thingsType.getThingType(m_id, ThingsType::Item);
|
||||
}
|
||||
|
||||
int Item::getCount()
|
||||
{
|
||||
if(isStackable())
|
||||
return m_countOrSubType;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Item::getSubType()
|
||||
{
|
||||
if(isFluid() || isFluidContainer())
|
||||
return m_countOrSubType;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -36,13 +36,13 @@ public:
|
|||
void draw(const Point& dest, float scaleFactor, bool animate);
|
||||
|
||||
void setId(uint32 id);
|
||||
void setCountOrSubType(uint8 value) { m_countOrSubType = value; }
|
||||
void setCount(int count) { setCountOrSubType(count); }
|
||||
void setSubType(int subType) { setCountOrSubType(subType); }
|
||||
void setCountOrSubType(int value) { m_countOrSubType = value; }
|
||||
void setCount(int count) { m_countOrSubType = count; }
|
||||
void setSubType(int subType) { m_countOrSubType = subType; }
|
||||
|
||||
uint8 getCountOrSubType() { return m_countOrSubType; }
|
||||
int getSubType();
|
||||
int getCount();
|
||||
int getCountOrSubType() { return m_countOrSubType; }
|
||||
int getSubType() { return m_countOrSubType; }
|
||||
int getCount() { return m_countOrSubType; }
|
||||
uint32 getId() { return m_id; }
|
||||
|
||||
ItemPtr asItem() { return std::static_pointer_cast<Item>(shared_from_this()); }
|
||||
|
|
|
@ -58,8 +58,8 @@ public:
|
|||
void sendTurnWest();
|
||||
void sendMove(const Position& fromPos, int itemId, int stackpos, const Position& toPos, int count);
|
||||
void sendInspectNpcTrade(int itemId, int count);
|
||||
void sendBuyItem(int itemId, int count, int amount, bool ignoreCapacity, bool buyWithBackpack);
|
||||
void sendSellItem(int itemId, int count, int amount, bool ignoreEquipped);
|
||||
void sendBuyItem(int itemId, int subType, int amount, bool ignoreCapacity, bool buyWithBackpack);
|
||||
void sendSellItem(int itemId, int subType, int amount, bool ignoreEquipped);
|
||||
void sendCloseNpcTrade();
|
||||
void sendRequestTrade(const Position& pos, int thingId, int stackpos, uint playerId);
|
||||
void sendInspectTrade(bool counterOffer, int index);
|
||||
|
|
|
@ -509,18 +509,13 @@ void ProtocolGame::parseOpenNpcTrade(InputMessage& msg)
|
|||
std::vector<std::tuple<ItemPtr, std::string, int, int, int>> items;
|
||||
int listCount = msg.getU8();
|
||||
for(int i = 0; i < listCount; ++i) {
|
||||
int itemId = msg.getU16();
|
||||
int subType = msg.getU8();
|
||||
|
||||
ItemPtr item = Item::create(itemId);
|
||||
if(item->isFluidContainer() || item->isFluid())
|
||||
item->setSubType(subType);
|
||||
ItemPtr item = Item::create(msg.getU16());
|
||||
item->setSubType(msg.getU8());
|
||||
|
||||
std::string name = msg.getString();
|
||||
int weight = msg.getU32();
|
||||
int buyPrice = msg.getU32();
|
||||
int sellPrice = msg.getU32();
|
||||
|
||||
items.push_back(std::make_tuple(item, name, weight, buyPrice, sellPrice));
|
||||
}
|
||||
|
||||
|
|
|
@ -232,24 +232,24 @@ void ProtocolGame::sendInspectNpcTrade(int itemId, int count)
|
|||
send(msg);
|
||||
}
|
||||
|
||||
void ProtocolGame::sendBuyItem(int itemId, int count, int amount, bool ignoreCapacity, bool buyWithBackpack)
|
||||
void ProtocolGame::sendBuyItem(int itemId, int subType, int amount, bool ignoreCapacity, bool buyWithBackpack)
|
||||
{
|
||||
OutputMessage msg;
|
||||
msg.addU8(Proto::ClientBuyItem);
|
||||
msg.addU16(itemId);
|
||||
msg.addU8(count);
|
||||
msg.addU8(subType);
|
||||
msg.addU8(amount);
|
||||
msg.addU8(ignoreCapacity ? 0x01 : 0x00);
|
||||
msg.addU8(buyWithBackpack ? 0x01 : 0x00);
|
||||
send(msg);
|
||||
}
|
||||
|
||||
void ProtocolGame::sendSellItem(int itemId, int count, int amount, bool ignoreEquipped)
|
||||
void ProtocolGame::sendSellItem(int itemId, int subType, int amount, bool ignoreEquipped)
|
||||
{
|
||||
OutputMessage msg;
|
||||
msg.addU8(Proto::ClientSellItem);
|
||||
msg.addU16(itemId);
|
||||
msg.addU8(count);
|
||||
msg.addU8(subType);
|
||||
msg.addU8(amount);
|
||||
msg.addU8(ignoreEquipped ? 0x01 : 0x00);
|
||||
send(msg);
|
||||
|
|
Loading…
Reference in New Issue