1#define JSON_NOEXCEPTION
3#include "Misc/SupportersTribute.h"
5#include "Base/Texture2D.h"
17 bool isNetWorkConnected = IsNetWorkConnected();
22 st.name = item[
"login"];
24 if (!PathExist(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars"))
26 MkDir(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars");
29 if (!FileExists(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars" PATH_SEPARATOR + st.name +
"_" + std::string(item[
"node_id"])) && isNetWorkConnected)
31 std::string urlFull = item[
"avatar_url"];
32 std::string baseURL = urlFull.substr(0, 37);
33 std::string pathURL = urlFull.substr(38);
34 DownloadFile(baseURL, pathURL, GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars" PATH_SEPARATOR + st.name +
"_" + std::string(item[
"node_id"]));
37 st.avatar =
new Texture2D(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars" PATH_SEPARATOR + st.name +
"_" + std::string(item[
"node_id"]));
38 stargazers.push_back(st);
44 bool isNetWorkConnected = IsNetWorkConnected();
49 st.name = item[
"login"];
51 if (!PathExist(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars"))
53 MkDir(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars");
56 if (!FileExists(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars" PATH_SEPARATOR + st.name +
"_" + std::string(item[
"node_id"])) && isNetWorkConnected)
58 std::string urlFull = item[
"avatar_url"];
59 std::string baseURL = urlFull.substr(0, 37);
60 std::string pathURL = urlFull.substr(38);
61 DownloadFile(baseURL, pathURL, GetExecutableDir() + PATH_SEPARATOR
62 "Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
63 "github_avatars" PATH_SEPARATOR + st.name +
"_" +
64 std::string(item[
"node_id"]));
67 st.avatar =
new Texture2D(GetExecutableDir() + PATH_SEPARATOR
"Data"
68 PATH_SEPARATOR
"cache" PATH_SEPARATOR
"github_avatars"
69 PATH_SEPARATOR + st.name +
"_" +
70 std::string(item[
"node_id"]));
71 contributors.push_back(st);
76SupportersTribute::SupportersTribute()
78 if (IsNetWorkConnected() && (!FileExists(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"stargazers.terr3dcache") || rand() % 5 == 0))
80 Log(
"Internet Connection is Live!\nFetching Latest Supporters data.");
82 std::string repoDataStr = FetchURL(
"https://api.github.com",
"/repos/Jaysmito101/TerraForge3D");
84 int stargazerCount = repoData[
"stargazers_count"];
86 int lastPage = stargazerCount / perPage;
87 std::string stargazersRawData = FetchURL(
"https://api.github.com",
"/repos/Jaysmito101/TerraForge3D/stargazers?per_page=30&page=" + std::to_string(lastPage));
88 SaveToFile(GetExecutableDir() + PATH_SEPARATOR +
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"stargazers.terr3dcache", stargazersRawData);
90 LoadstargazersData(stargazersData);
93 std::string contributorsRawData = FetchURL(
"https://api.github.com",
"/repos/Jaysmito101/TerraForge3D/contributors");
94 SaveToFile(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"contributors.terr3dcache", contributorsRawData);
96 LoadcontributorsData(contributorsData);
103 Log(
"Trying to load cached data.");
105 if (FileExists(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"stargazers.terr3dcache"))
107 Log(
"Found Stargazers Cached Data!");
108 std::string stargazersRawData = ReadShaderSourceFile(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"stargazers.terr3dcache", &tmp);
110 LoadstargazersData(stargazersData);
115 Log(
"Stargazers Cached Data not found!");
118 if (FileExists(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"contributors.terr3dcache"))
120 Log(
"Found Contributors Cached Data!");
121 std::string contributorsRawData = ReadShaderSourceFile(GetExecutableDir() + PATH_SEPARATOR
"Data" PATH_SEPARATOR
"cache" PATH_SEPARATOR
"contributors.terr3dcache", &tmp);
123 LoadcontributorsData(contributorsData);
128 Log(
"Contributors Cached Data not found!");
133SupportersTribute::~SupportersTribute()
135 for(
auto &st : stargazers)
143 for(
auto &co : contributors)
152void SupportersTribute::ShowSettings(
bool *pOpen)
154 ImGui::Begin(
"Supporters", pOpen, ImGuiWindowFlags_NoResize);
155 ImGui::SetWindowSize(ImVec2(250, 250));
157 ImGui::Text(
"Contributors");
161 uint32_t avTexId = 0;
165 avTexId = st.avatar->GetRendererID();
168 ImGui::Image((ImTextureID)avTexId, ImVec2(30, 30));
170 ImGui::Text(st.name.c_str());
175 ImGui::Text(
"Stargazers");
179 uint32_t avTexId = 0;
183 avTexId = st.avatar->GetRendererID();
186 ImGui::Image((ImTextureID)avTexId, ImVec2(30, 30));
188 ImGui::Text(st.name.c_str());
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
deserialize from a compatible input
a class to store JSON values