Skip to content

Instantly share code, notes, and snippets.

@msciotti
Last active June 4, 2019 21:14
Show Gist options
  • Save msciotti/ddbbf4ae8e527ba663c06197942a3fc3 to your computer and use it in GitHub Desktop.
Save msciotti/ddbbf4ae8e527ba663c06197942a3fc3 to your computer and use it in GitHub Desktop.
struct DiscordState {
std::unique_ptr<discord::Core> core;
};
namespace {
volatile bool interrupted{ false };
}
int main()
{
// Init
DiscordState state{};
discord::Core* core{};
auto response = discord::Core::Create(461618159171141643, (uint64_t)discord::CreateFlags::Default, &core);
state.core.reset(core);
if (!state.core) {
std::cout << "Failed to instantiate Discord!";
std::exit(-1);
}
state.core->AchievementManager().FetchUserAchievements(
[&](discord::Result result) {
std::cout << "Fetched achievements \n";
int32_t count{};
// Iterate to make sure something exists for my user
state.core->AchievementManager().CountUserAchievements(&count);
std::cout << count << "\n";
for (int i = 0; i < count; i++) {
discord::UserAchievement x{};
state.core->AchievementManager().GetUserAchievementAt(i, &x);
std::cout << "User is: " << x.GetUserId() << "\n";
std::cout << "Percent complete: " << unsigned(x.GetPercentComplete());
}
// Update to trigger callback
state.core->AchievementManager().SetUserAchievement(580159119969878046, 50,
[&](discord::Result result) {
std::cout << "\nAchievement Set\n";
}
);
}
);
// Crash here
state.core->AchievementManager().OnUserAchievementUpdate.Connect(
[&](discord::UserAchievement const& achievement) {
std::cout << achievement.GetUserId();
}
);
std::signal(SIGINT, [](int) {
interrupted = true;
});
do {
state.core->RunCallbacks();
std::this_thread::sleep_for(std::chrono::milliseconds(16));
} while (!interrupted);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment