Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/client/game.h
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,28 @@ struct CyclopediaCharacterMiscStats
std::vector<Concoction> concoctions;
};

struct ForgeItemInfo
{
uint16_t id{ 0 };
uint8_t tier{ 0 };
uint16_t count{ 0 };
};

struct ForgeTransferData
{
std::vector<ForgeItemInfo> donors;
std::vector<ForgeItemInfo> receivers;
};

struct ForgeOpenData
{
std::vector<ForgeItemInfo> fusionItems;
std::vector<std::vector<ForgeItemInfo>> convergenceFusion;
std::vector<ForgeTransferData> transfers;
std::vector<ForgeTransferData> convergenceTransfers;
uint16_t dustLevel{ 0 };
};

//@bindsingleton g_game
class Game
{
Expand Down
69 changes: 69 additions & 0 deletions src/client/luavaluecasts_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1530,3 +1530,72 @@ int push_luavalue(const CyclopediaCharacterMiscStats& data)

return 1;
}

int push_luavalue(const ForgeItemInfo& item) {
g_lua.createTable(0, 3);
g_lua.pushInteger(item.id);
g_lua.setField("id");
g_lua.pushInteger(item.tier);
g_lua.setField("tier");
g_lua.pushInteger(item.count);
g_lua.setField("count");
return 1;
}

int push_luavalue(const ForgeTransferData& data) {
g_lua.createTable(0, 2);
g_lua.createTable(data.donors.size(), 0);
for (size_t i = 0; i < data.donors.size(); ++i) {
push_luavalue(data.donors[i]);
g_lua.rawSeti(i + 1);
}
g_lua.setField("donors");

g_lua.createTable(data.receivers.size(), 0);
for (size_t i = 0; i < data.receivers.size(); ++i) {
push_luavalue(data.receivers[i]);
g_lua.rawSeti(i + 1);
}
g_lua.setField("receivers");
return 1;
}

int push_luavalue(const ForgeOpenData& data) {
g_lua.createTable(0, 5);

g_lua.createTable(data.fusionItems.size(), 0);
for (size_t i = 0; i < data.fusionItems.size(); ++i) {
push_luavalue(data.fusionItems[i]);
g_lua.rawSeti(i + 1);
}
g_lua.setField("fusionItems");

g_lua.createTable(data.convergenceFusion.size(), 0);
for (size_t i = 0; i < data.convergenceFusion.size(); ++i) {
g_lua.createTable(data.convergenceFusion[i].size(), 0);
for (size_t j = 0; j < data.convergenceFusion[i].size(); ++j) {
push_luavalue(data.convergenceFusion[i][j]);
g_lua.rawSeti(j + 1);
}
g_lua.rawSeti(i + 1);
}
g_lua.setField("convergenceFusion");

g_lua.createTable(data.transfers.size(), 0);
for (size_t i = 0; i < data.transfers.size(); ++i) {
push_luavalue(data.transfers[i]);
g_lua.rawSeti(i + 1);
}
g_lua.setField("transfers");

g_lua.createTable(data.convergenceTransfers.size(), 0);
for (size_t i = 0; i < data.convergenceTransfers.size(); ++i) {
push_luavalue(data.convergenceTransfers[i]);
g_lua.rawSeti(i + 1);
}
g_lua.setField("convergenceTransfers");

g_lua.pushInteger(data.dustLevel);
g_lua.setField("dustLevel");
return 1;
}
5 changes: 5 additions & 0 deletions src/client/luavaluecasts_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,8 @@ int push_luavalue(const DailyRewardItem& item);
int push_luavalue(const DailyRewardBundle& bundle);
int push_luavalue(const DailyRewardDay& day);
int push_luavalue(const DailyRewardData& data);

// forge
int push_luavalue(const ForgeOpenData& data);
int push_luavalue(const ForgeTransferData& data);
int push_luavalue(const ForgeItemInfo& data);
6 changes: 5 additions & 1 deletion src/client/protocolcodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ namespace Proto
GameServerTextEffect = 132,
GameServerMissleEffect = 133, // Anthem on 13.x
GameServerItemClasses = 134,
GameServerTrappers = 135,
GameServerTrappers = 135, // GameServerOpenForge = 135,
GameServerBrowseForgeHistory = 136,
GameServerCloseForgeWindow = 137,
GameServerForgeResult = 138,
GameServerCreatureData = 139,
GameServerCreatureHealth = 140,
GameServerCreatureLight = 141,
Expand Down Expand Up @@ -315,6 +317,8 @@ namespace Proto
ClientBosstiaryRequestSlotAction = 176,
ClientRequestHighscore = 177,
ClientCancelAttackAndFollow = 190,
ClientForgeEnter = 191,
ClientForgeBrowseHistory = 192,
ClientUpdateTile = 201,
ClientRefreshContainer = 202,
ClientBrowseField = 203,
Expand Down
1 change: 1 addition & 0 deletions src/client/protocolgame.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ class ProtocolGame final : public Protocol
void parseItemClasses(const InputMessagePtr& msg);
void parseCreatureMark(const InputMessagePtr& msg);
void parseTrappers(const InputMessagePtr& msg);
void parseOpenForge(const InputMessagePtr& msg);
void addCreatureIcon(const InputMessagePtr& msg, const uint32_t creatureId) const;
void parseCloseForgeWindow(const InputMessagePtr& msg);
void parseCreatureData(const InputMessagePtr& msg);
Expand Down
Loading
Loading