mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-25 00:20:16 +00:00
Improve auction house UI with search filters, pagination, sell picker, and tooltips
- Add item class/subclass category filters (Weapon, Armor, etc.) with correct WoW 3.3.5a IDs - Add sell item picker dropdown with icons and Create Auction button - Add pagination (Prev/Next) for browse results with filter preservation - Add Buy/Bid action buttons to Bids tab - Add item icons and stat tooltips on hover across all three tabs - Add Enter-to-search from name field and search delay countdown - Parse SMSG_AUCTION_OWNER/BIDDER_NOTIFICATION into chat messages - Auto-refresh browse results after bid/buyout using saved search params - Clamp level range inputs to 0-80
This commit is contained in:
parent
9906269671
commit
1ae5fe867c
6 changed files with 945 additions and 157 deletions
|
|
@ -1843,6 +1843,85 @@ network::Packet GuildDeclineInvitationPacket::build() {
|
|||
return packet;
|
||||
}
|
||||
|
||||
network::Packet GuildCreatePacket::build(const std::string& guildName) {
|
||||
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_CREATE));
|
||||
packet.writeString(guildName);
|
||||
LOG_DEBUG("Built CMSG_GUILD_CREATE: ", guildName);
|
||||
return packet;
|
||||
}
|
||||
|
||||
network::Packet GuildAddRankPacket::build(const std::string& rankName) {
|
||||
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_ADD_RANK));
|
||||
packet.writeString(rankName);
|
||||
LOG_DEBUG("Built CMSG_GUILD_ADD_RANK: ", rankName);
|
||||
return packet;
|
||||
}
|
||||
|
||||
network::Packet GuildDelRankPacket::build() {
|
||||
network::Packet packet(wireOpcode(Opcode::CMSG_GUILD_DEL_RANK));
|
||||
LOG_DEBUG("Built CMSG_GUILD_DEL_RANK");
|
||||
return packet;
|
||||
}
|
||||
|
||||
network::Packet PetitionShowlistPacket::build(uint64_t npcGuid) {
|
||||
network::Packet packet(wireOpcode(Opcode::CMSG_PETITION_SHOWLIST));
|
||||
packet.writeUInt64(npcGuid);
|
||||
LOG_DEBUG("Built CMSG_PETITION_SHOWLIST: guid=", npcGuid);
|
||||
return packet;
|
||||
}
|
||||
|
||||
network::Packet PetitionBuyPacket::build(uint64_t npcGuid, const std::string& guildName) {
|
||||
network::Packet packet(wireOpcode(Opcode::CMSG_PETITION_BUY));
|
||||
packet.writeUInt64(npcGuid); // NPC GUID
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt64(0); // unk
|
||||
packet.writeString(guildName); // guild name
|
||||
packet.writeUInt32(0); // body text (empty)
|
||||
packet.writeUInt32(0); // min sigs
|
||||
packet.writeUInt32(0); // max sigs
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt16(0); // unk
|
||||
packet.writeUInt32(0); // unk
|
||||
packet.writeUInt32(0); // unk index
|
||||
packet.writeUInt32(0); // unk
|
||||
LOG_DEBUG("Built CMSG_PETITION_BUY: npcGuid=", npcGuid, " name=", guildName);
|
||||
return packet;
|
||||
}
|
||||
|
||||
bool PetitionShowlistParser::parse(network::Packet& packet, PetitionShowlistData& data) {
|
||||
if (packet.getSize() < 12) {
|
||||
LOG_ERROR("SMSG_PETITION_SHOWLIST too small: ", packet.getSize());
|
||||
return false;
|
||||
}
|
||||
data.npcGuid = packet.readUInt64();
|
||||
uint32_t count = packet.readUInt32();
|
||||
if (count > 0) {
|
||||
data.itemId = packet.readUInt32();
|
||||
data.displayId = packet.readUInt32();
|
||||
data.cost = packet.readUInt32();
|
||||
// Skip unused fields if present
|
||||
if ((packet.getSize() - packet.getReadPos()) >= 8) {
|
||||
data.charterType = packet.readUInt32();
|
||||
data.requiredSigs = packet.readUInt32();
|
||||
}
|
||||
}
|
||||
LOG_INFO("Parsed SMSG_PETITION_SHOWLIST: npcGuid=", data.npcGuid, " cost=", data.cost);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TurnInPetitionResultsParser::parse(network::Packet& packet, uint32_t& result) {
|
||||
if (packet.getSize() < 4) {
|
||||
LOG_ERROR("SMSG_TURN_IN_PETITION_RESULTS too small: ", packet.getSize());
|
||||
return false;
|
||||
}
|
||||
result = packet.readUInt32();
|
||||
LOG_INFO("Parsed SMSG_TURN_IN_PETITION_RESULTS: result=", result);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GuildQueryResponseParser::parse(network::Packet& packet, GuildQueryResponseData& data) {
|
||||
if (packet.getSize() < 8) {
|
||||
LOG_ERROR("SMSG_GUILD_QUERY_RESPONSE too small: ", packet.getSize());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue