From bc0bb5a3df2a9f5817c5237315ca8037814a0d65 Mon Sep 17 00:00:00 2001 From: noriokun4649 Date: Wed, 15 May 2019 20:27:00 +0900 Subject: [PATCH] =?UTF-8?q?=E7=95=AA=E7=B5=84=E6=83=85=E5=A0=B1=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E3=81=A7=E3=81=8D=E3=82=8B=E3=81=AF=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TvTestRPC/TvTestRPC.cpp | 50 +++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/TvTestRPC/TvTestRPC.cpp b/TvTestRPC/TvTestRPC.cpp index 6dde743..9235a97 100644 --- a/TvTestRPC/TvTestRPC.cpp +++ b/TvTestRPC/TvTestRPC.cpp @@ -12,7 +12,7 @@ class CMyPlugin : public TVTest::CTVTestPlugin bool pluginState; void discordInit(); void UpdateState(); - time_t SystemTime2Timet(const SYSTEMTIME& st); + time_t SystemTime2Timet(const SYSTEMTIME&); bool GetPluginInfo(TVTest::PluginInfo *pInfo) override { pInfo->Type = TVTest::PLUGIN_TYPE_NORMAL; @@ -56,25 +56,38 @@ void CMyPlugin::UpdateState() Info.MaxEventText = sizeof(eventText) / sizeof(eventText[0]); Info.pszEventExtText = eventExtText; Info.MaxEventExtText = sizeof(eventExtText) / sizeof(eventExtText[0]); - if (m_pApp->GetCurrentChannelInfo(&ChannelInfo) && m_pApp->GetCurrentProgramInfo(&Info)) { - DiscordRichPresence discordPresence; - memset(&discordPresence, 0, sizeof(discordPresence)); - discordPresence.details = wide_to_utf8(ChannelInfo.szChannelName).c_str(); - discordPresence.state = wide_to_utf8(Info.pszEventName).c_str(); - discordPresence.startTimestamp = SystemTime2Timet(Info.StartTime); - discordPresence.endTimestamp = SystemTime2Timet(Info.StartTime) + Info.Duration; - discordPresence.largeImageKey = "tvtest"; - discordPresence.partyId = ""; - discordPresence.partySize = 0; - discordPresence.partyMax = 0; - discordPresence.matchSecret = ""; - discordPresence.joinSecret = ""; - discordPresence.spectateSecret = ""; - discordPresence.instance = 0; - Discord_UpdatePresence(&discordPresence); + std::string channelName; + std::string eventNamed; + time_t start; + time_t end; + + if (m_pApp->GetCurrentProgramInfo(&Info)) { + eventNamed = wide_to_utf8(Info.pszEventName); + end = SystemTime2Timet(Info.StartTime) + Info.Duration; + start = SystemTime2Timet(Info.StartTime); } + if (m_pApp->GetCurrentChannelInfo(&ChannelInfo) ) { + m_pApp->AddLog(ChannelInfo.szChannelName); + channelName = wide_to_utf8(ChannelInfo.szChannelName); + } + DiscordRichPresence discordPresence; + memset(&discordPresence, 0, sizeof(discordPresence)); + discordPresence.details = channelName.c_str(); + discordPresence.state = eventNamed.c_str(); + discordPresence.startTimestamp = start; + discordPresence.endTimestamp = end; + discordPresence.largeImageKey = "tvtest"; + discordPresence.partyId = ""; + discordPresence.partySize = 0; + discordPresence.partyMax = 0; + discordPresence.matchSecret = ""; + discordPresence.joinSecret = ""; + discordPresence.spectateSecret = ""; + discordPresence.instance = 0; + Discord_UpdatePresence(&discordPresence); } + time_t CMyPlugin::SystemTime2Timet(const SYSTEMTIME& st) { struct tm gm = { st.wSecond, st.wMinute, st.wHour, st.wDay, st.wMonth - 1, st.wYear - 1900, st.wDayOfWeek, 0, 0 }; @@ -104,6 +117,9 @@ LRESULT CALLBACK CMyPlugin::EventCallback(UINT Event, LPARAM lParam1, LPARAM lPa case TVTest::EVENT_CHANNELCHANGE: pThis->UpdateState(); return TRUE; + case TVTest::EVENT_SERVICECHANGE: + pThis->UpdateState(); + return TRUE; } return 0; } \ No newline at end of file