4coder-non-source/test_data/lots_of_files/gjTrophy.cpp

113 lines
3.9 KiB
C++

///////////////////////////////////////////////////////////////////
//*-------------------------------------------------------------*//
//| Part of the Game Jolt API C++ Library (http://gamejolt.com) |//
//*-------------------------------------------------------------*//
//| Released under the zlib License |//
//| More information available in the readme file |//
//*-------------------------------------------------------------*//
///////////////////////////////////////////////////////////////////
#include "gjAPI.h"
// ****************************************************************
/* constructor */
gjTrophy::gjTrophy(const gjData& aTrophyData, gjAPI* pAPI)noexcept
: m_iID (atoi(SAFE_MAP_GET(aTrophyData, "id").c_str()))
, m_sTitle (SAFE_MAP_GET(aTrophyData, "title"))
, m_sDescription (SAFE_MAP_GET(aTrophyData, "description"))
, m_sDifficulty (SAFE_MAP_GET(aTrophyData, "difficulty"))
, m_sImageURL (SAFE_MAP_GET(aTrophyData, "image_url"))
, m_iSort (0)
, m_bSecret (false)
, m_pAPI (pAPI)
{
// set difficulty value for easier access
if(m_sDifficulty == "Bronze") m_iDifficultyValue = 1;
else if(m_sDifficulty == "Silver") m_iDifficultyValue = 2;
else if(m_sDifficulty == "Gold") m_iDifficultyValue = 3;
else if(m_sDifficulty == "Platinum") m_iDifficultyValue = 4;
else m_iDifficultyValue = 0;
// set the achieved date
const std::string sAchievedDate = SAFE_MAP_GET(aTrophyData, "achieved");
m_sAchievedDate = (sAchievedDate == "false" || sAchievedDate == "" || !m_pAPI->IsUserConnected()) ? "" : sAchievedDate;
}
gjTrophy::gjTrophy(const gjTrophy& that)noexcept
: m_iID (that.m_iID)
, m_sTitle (that.m_sTitle)
, m_sDescription (that.m_sDescription)
, m_sDifficulty (that.m_sDifficulty)
, m_iDifficultyValue (that.m_iDifficultyValue)
, m_sImageURL (that.m_sImageURL)
, m_sAchievedDate (that.m_sAchievedDate)
, m_iSort (that.m_iSort)
, m_bSecret (that.m_bSecret)
, m_pAPI (that.m_pAPI)
{
}
// ****************************************************************
/* assignment operator */
gjTrophy& gjTrophy::operator = (const gjTrophy& that)noexcept
{
m_iID = that.m_iID;
m_sTitle = that.m_sTitle;
m_sDescription = that.m_sDescription;
m_sDifficulty = that.m_sDifficulty;
m_iDifficultyValue = that.m_iDifficultyValue;
m_sImageURL = that.m_sImageURL;
m_sAchievedDate = that.m_sAchievedDate;
m_iSort = that.m_iSort;
m_bSecret = that.m_bSecret;
m_pAPI = that.m_pAPI;
return *this;
}
// ****************************************************************
/* callback for updating the data */
int gjTrophy::__UpdateDataCallback(const std::string& sData, void* pAdd, gjTrophyPtr* ppOutput)
{
// parse output
gjDataList aaReturn;
if(m_pAPI->ParseRequestKeypair(sData, &aaReturn) != GJ_OK)
{
gjAPI::ErrorLogAdd("API Error: could not parse trophy");
return GJ_REQUEST_FAILED;
}
const int iSort = m_iSort;
const bool bSecret = m_bSecret;
// copy new trophy over old trophy
gjTrophy NewTrophy(aaReturn[0], m_pAPI);
*this = NewTrophy;
m_iSort = iSort;
m_bSecret = bSecret;
if(ppOutput) (*ppOutput) = this;
return GJ_OK;
}
// ****************************************************************
/* callback for achieving the trophy */
int gjTrophy::__AchieveCallback(const std::string& sData, void* pAdd, gjTrophyPtr* ppOutput)
{
// parse output (only check status)
gjDataList aaReturn;
if(m_pAPI->ParseRequestKeypair(sData, &aaReturn) != GJ_OK)
{
gjAPI::ErrorLogAdd("API Error: could not parse trophy");
return GJ_REQUEST_FAILED;
}
// set time string
m_sAchievedDate = GJ_API_TEXT_NOW;
if(ppOutput) (*ppOutput) = this;
return GJ_OK;
}