Discord RPC enhancements/additions (#1162)

* various discord rpc additions

* fix formatting

* revert changes in game-task-h and task-control-h

* discord-rpc: refactor boss and racer/flut checks

now works via checking process states

* fix codacy
This commit is contained in:
Hat Kid
2022-05-29 21:06:39 +02:00
committed by GitHub
parent 2e31d82fb2
commit 750255e5b2
4 changed files with 93 additions and 6 deletions
+38 -4
View File
@@ -827,20 +827,38 @@ void update_discord_rpc(u32 discord_info) {
if (gDiscordRpcEnabled) {
DiscordRichPresence rpc;
char state[128];
char large_image_text[128];
auto info = discord_info ? Ptr<DiscordInfo>(discord_info).c() : NULL;
if (info) {
int cells = (int)*Ptr<float>(info->fuel).c();
int orbs = (int)*Ptr<float>(info->money_total).c();
int scout_flies = (int)*Ptr<float>(info->buzzer_total).c();
int deaths = *Ptr<int>(info->deaths).c();
auto cutscene = Ptr<Symbol>(info->cutscene)->value;
auto ogreboss = Ptr<Symbol>(info->ogreboss)->value;
auto plantboss = Ptr<Symbol>(info->plantboss)->value;
auto racer = Ptr<Symbol>(info->racer)->value;
auto flutflut = Ptr<Symbol>(info->flutflut)->value;
char* status = Ptr<String>(info->status).c()->data();
char* level = Ptr<String>(info->level).c()->data();
const char* full_level_name = jak1_get_full_level_name(Ptr<String>(info->level).c()->data());
memset(&rpc, 0, sizeof(rpc));
rpc.largeImageKey = level;
strcpy(large_image_text, full_level_name);
if (!strcmp(level, "finalboss")) {
strcpy(state, "Fighting Final Boss");
} else if (plantboss != offset_of_s7()) {
strcpy(state, "Fighting Dark Eco Plant");
rpc.largeImageKey = "plant-boss";
strcpy(large_image_text, "Dark Eco Plant");
} else if (ogreboss != offset_of_s7()) {
strcpy(state, "Fighting Klaww");
rpc.largeImageKey = "ogreboss";
strcpy(large_image_text, "Klaww");
} else if (!strcmp(level, "title")) {
strcpy(state, "On title screen");
rpc.largeImageKey = "title";
strcpy(large_image_text, "Title screen");
} else if (!strcmp(level, "intro")) {
strcpy(state, "Intro");
} else if (cutscene != offset_of_s7()) {
@@ -852,14 +870,30 @@ void update_discord_rpc(u32 discord_info) {
strcat(state, std::to_string(orbs).c_str());
strcat(state, " | Flies: ");
strcat(state, std::to_string(scout_flies).c_str());
strcat(large_image_text, " | Cells: ");
strcat(large_image_text, std::to_string(cells).c_str());
strcat(large_image_text, " | Orbs: ");
strcat(large_image_text, std::to_string(orbs).c_str());
strcat(large_image_text, " | Flies: ");
strcat(large_image_text, std::to_string(scout_flies).c_str());
strcat(large_image_text, " | Deaths: ");
strcat(large_image_text, std::to_string(deaths).c_str());
}
rpc.largeImageText = large_image_text;
rpc.state = state;
if (racer != offset_of_s7()) {
rpc.smallImageKey = "target-racer";
rpc.smallImageText = "Driving A-Grav Zoomer";
} else if (flutflut != offset_of_s7()) {
rpc.smallImageKey = "flutflut";
rpc.smallImageText = "Riding on Flut Flut";
} else {
rpc.smallImageKey = 0;
rpc.smallImageText = 0;
}
rpc.startTimestamp = gStartTime;
rpc.details = status;
rpc.largeImageKey = level;
rpc.largeImageText = full_level_name;
rpc.smallImageKey = 0;
rpc.smallImageText = 0;
rpc.partySize = 0;
rpc.partyMax = 0;
Discord_UpdatePresence(&rpc);