Added project settings dialog; added build name lookup functionality

This commit is contained in:
Aruki
2017-02-15 01:00:48 -07:00
parent 3697401ebb
commit bdb753dca2
23 changed files with 479 additions and 141 deletions

View File

@@ -41,10 +41,25 @@ void CGameInfo::Serialize(IArchive& rArc)
}
// Serialize data
rArc << SERIAL_CONTAINER("GameBuilds", mBuilds, "Build");
if (mGame <= ePrime)
rArc << SERIAL_CONTAINER("AreaNameMap", mAreaNameMap, "AreaName");
}
TString CGameInfo::GetBuildName(float BuildVer, ERegion Region) const
{
for (u32 iBuild = 0; iBuild < mBuilds.size(); iBuild++)
{
const SBuildInfo& rkBuildInfo = mBuilds[iBuild];
if (rkBuildInfo.Version == BuildVer && rkBuildInfo.Region == Region)
return rkBuildInfo.Name;
}
return "Unknown Build";
}
TString CGameInfo::GetAreaName(const CAssetID &rkID) const
{
auto Iter = mAreaNameMap.find(rkID);

View File

@@ -14,6 +14,22 @@ const TString gkGameInfoExt = "xml";
class CGameInfo
{
EGame mGame;
// List of known builds of each game
struct SBuildInfo
{
float Version;
ERegion Region;
TString Name;
void Serialize(IArchive& rArc)
{
rArc << SERIAL_AUTO(Version) << SERIAL_AUTO(Region) << SERIAL_AUTO(Name);
}
};
std::vector<SBuildInfo> mBuilds;
// List of internal area names; used for MP1 which doesn't store area names in the MLVL
std::map<CAssetID, TString> mAreaNameMap;
public:
@@ -26,6 +42,7 @@ public:
bool SaveGameInfo(TString Path = "");
void Serialize(IArchive& rArc);
TString GetBuildName(float BuildVer, ERegion Region) const;
TString GetAreaName(const CAssetID& rkID) const;
// Accessors

View File

@@ -104,6 +104,8 @@ public:
inline CGameInfo* GameInfo() const { return mpGameInfo; }
inline CAudioManager* AudioManager() const { return mpAudioManager; }
inline EGame Game() const { return mGame; }
inline ERegion Region() const { return mRegion; }
inline TString GameID() const { return mGameID; }
inline float BuildVersion() const { return mBuildVersion; }
inline bool IsWiiBuild() const { return mBuildVersion >= 3.f; }
};