Finished the template writer and regenerated templates (most of the template changes are just automated formatting changes)
This commit is contained in:
parent
3296948bea
commit
34eb7c436e
|
@ -5,6 +5,7 @@
|
|||
#include <tinyxml2.h>
|
||||
|
||||
using namespace tinyxml2;
|
||||
TString CTemplateWriter::smTemplatesDir = "../templates/";
|
||||
|
||||
CTemplateWriter::CTemplateWriter()
|
||||
{
|
||||
|
@ -14,12 +15,14 @@ void CTemplateWriter::SaveAllTemplates()
|
|||
{
|
||||
// Create directory
|
||||
std::list<CMasterTemplate*> MasterList = CMasterTemplate::GetMasterList();
|
||||
TString Out = "../templates/";
|
||||
boost::filesystem::create_directory(Out.ToStdString());
|
||||
boost::filesystem::create_directory(smTemplatesDir.ToStdString());
|
||||
|
||||
// Resave property list
|
||||
SavePropertyList();
|
||||
|
||||
// Resave master templates
|
||||
for (auto it = MasterList.begin(); it != MasterList.end(); it++)
|
||||
SaveGameTemplates(*it, Out);
|
||||
SaveGameTemplates(*it);
|
||||
|
||||
// Resave game list
|
||||
XMLDocument GameList;
|
||||
|
@ -31,6 +34,10 @@ void CTemplateWriter::SaveAllTemplates()
|
|||
pBase->SetAttribute("version", 4);
|
||||
GameList.LinkEndChild(pBase);
|
||||
|
||||
XMLElement *pProperties = GameList.NewElement("properties");
|
||||
pProperties->SetText("Properties.xml");
|
||||
pBase->LinkEndChild(pProperties);
|
||||
|
||||
for (auto it = MasterList.begin(); it != MasterList.end(); it++)
|
||||
{
|
||||
CMasterTemplate *pMaster = *it;
|
||||
|
@ -52,20 +59,24 @@ void CTemplateWriter::SaveAllTemplates()
|
|||
pGame->LinkEndChild(pTempPath);
|
||||
}
|
||||
|
||||
TString GameListName = Out + "GameList.xml";
|
||||
TString GameListName = smTemplatesDir + "GameList.xml";
|
||||
GameList.SaveFile(*GameListName);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveGameTemplates(CMasterTemplate *pMaster, const TString& rkDir)
|
||||
void CTemplateWriter::SaveGameTemplates(CMasterTemplate *pMaster)
|
||||
{
|
||||
// Create directory
|
||||
TString OutFile = rkDir + pMaster->mSourceFile;
|
||||
TString OutFile = smTemplatesDir + pMaster->mSourceFile;
|
||||
TString OutDir = OutFile.GetFileDirectory();
|
||||
boost::filesystem::create_directory(OutDir.ToStdString());
|
||||
|
||||
// Resave script templates
|
||||
for (auto it = pMaster->mTemplates.begin(); it != pMaster->mTemplates.end(); it++)
|
||||
SaveScriptTemplate(it->second, OutDir);
|
||||
SaveScriptTemplate(it->second);
|
||||
|
||||
// Resave struct templates
|
||||
for (auto it = pMaster->mStructTemplates.begin(); it != pMaster->mStructTemplates.end(); it++)
|
||||
SaveStructTemplate(it->second, pMaster);
|
||||
|
||||
// Resave master template
|
||||
XMLDocument Master;
|
||||
|
@ -77,16 +88,6 @@ void CTemplateWriter::SaveGameTemplates(CMasterTemplate *pMaster, const TString&
|
|||
pBase->SetAttribute("version", 4);
|
||||
Master.LinkEndChild(pBase);
|
||||
|
||||
// Write property list
|
||||
if (!pMaster->smPropertyNames.empty())
|
||||
{
|
||||
SavePropertyList(OutDir);
|
||||
|
||||
XMLElement *pPropList = Master.NewElement("properties");
|
||||
pPropList->SetText("Properties.xml");
|
||||
pBase->LinkEndChild(pPropList);
|
||||
}
|
||||
|
||||
// Write versions
|
||||
if (!pMaster->mGameVersions.empty())
|
||||
{
|
||||
|
@ -97,7 +98,7 @@ void CTemplateWriter::SaveGameTemplates(CMasterTemplate *pMaster, const TString&
|
|||
{
|
||||
XMLElement *pVersion = Master.NewElement("version");
|
||||
pVersion->SetText(*(*it));
|
||||
pBase->LinkEndChild(pVersion);
|
||||
pVersionsBlock->LinkEndChild(pVersion);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,7 +148,7 @@ void CTemplateWriter::SaveGameTemplates(CMasterTemplate *pMaster, const TString&
|
|||
Master.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SavePropertyList(const TString& rkDir)
|
||||
void CTemplateWriter::SavePropertyList()
|
||||
{
|
||||
// Create XML
|
||||
XMLDocument List;
|
||||
|
@ -171,16 +172,18 @@ void CTemplateWriter::SavePropertyList(const TString& rkDir)
|
|||
pBase->LinkEndChild(pElem);
|
||||
}
|
||||
|
||||
TString OutFile = rkDir + "Properties.xml";
|
||||
TString OutFile = smTemplatesDir + "Properties.xml";
|
||||
List.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp, const TString& rkDir)
|
||||
void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp)
|
||||
{
|
||||
CMasterTemplate *pMaster = pTemp->MasterTemplate();
|
||||
|
||||
// Create directory
|
||||
TString OutFile = rkDir + pTemp->mSourceFile;
|
||||
TString outDir = OutFile.GetFileDirectory();
|
||||
boost::filesystem::create_directory(*outDir);
|
||||
TString OutFile = smTemplatesDir + pMaster->GetDirectory() + pTemp->mSourceFile;
|
||||
TString OutDir = OutFile.GetFileDirectory();
|
||||
boost::filesystem::create_directory(*OutDir);
|
||||
|
||||
// Create new document
|
||||
XMLDocument ScriptXML;
|
||||
|
@ -199,7 +202,14 @@ void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp, const TString&
|
|||
pRoot->LinkEndChild(pName);
|
||||
|
||||
// Write properties
|
||||
SaveProperties(&ScriptXML, pRoot, pTemp->mpBaseStruct, pTemp->MasterTemplate(), rkDir);
|
||||
SaveProperties(&ScriptXML, pRoot, pTemp->mpBaseStruct, pMaster);
|
||||
|
||||
// States/Messages [todo]
|
||||
XMLElement *pStates = ScriptXML.NewElement("states");
|
||||
pRoot->LinkEndChild(pStates);
|
||||
|
||||
XMLElement *pMessages = ScriptXML.NewElement("messages");
|
||||
pRoot->LinkEndChild(pMessages);
|
||||
|
||||
// Write editor properties
|
||||
XMLElement *pEditor = ScriptXML.NewElement("editor");
|
||||
|
@ -248,12 +258,12 @@ void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp, const TString&
|
|||
}
|
||||
|
||||
s32 Force = -1;
|
||||
if (it->AssetSource == CScriptTemplate::SEditorAsset::eAnimParams)
|
||||
if (it->AssetType == CScriptTemplate::SEditorAsset::eAnimParams)
|
||||
Force = it->ForceNodeIndex;
|
||||
|
||||
XMLElement *pAsset = ScriptXML.NewElement(*Type);
|
||||
pAsset->SetAttribute("source", *Source);
|
||||
if (Force >= 0) pAsset->SetAttribute("force", std::to_string(Force).c_str());
|
||||
if (Force >= 0) pAsset->SetAttribute("force", *TString::FromInt32(Force, 0, 10));
|
||||
pAsset->SetText(*it->AssetLocation);
|
||||
pAssets->LinkEndChild(pAsset);
|
||||
}
|
||||
|
@ -314,7 +324,7 @@ void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp, const TString&
|
|||
// Write conditions
|
||||
for (auto it = pTemp->mVolumeConditions.begin(); it != pTemp->mVolumeConditions.end(); it++)
|
||||
{
|
||||
// Value should be an integer, or a boolean condition?
|
||||
// Value should be an integer, or a boolean condition
|
||||
TString StrVal;
|
||||
|
||||
if (pProp->Type() == eBoolProperty)
|
||||
|
@ -335,10 +345,10 @@ void CTemplateWriter::SaveScriptTemplate(CScriptTemplate *pTemp, const TString&
|
|||
ScriptXML.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveStructTemplate(CStructTemplate *pTemp, CMasterTemplate *pMaster, const TString& rkDir)
|
||||
void CTemplateWriter::SaveStructTemplate(CStructTemplate *pTemp, CMasterTemplate *pMaster)
|
||||
{
|
||||
// Create directory
|
||||
TString OutFile = rkDir + pTemp->mSourceFile;
|
||||
TString OutFile = smTemplatesDir + pMaster->GetDirectory() + pTemp->mSourceFile;
|
||||
TString OutDir = OutFile.GetFileDirectory();
|
||||
TString Name = OutFile.GetFileName(false);
|
||||
boost::filesystem::create_directory(OutDir.ToStdString());
|
||||
|
@ -354,14 +364,14 @@ void CTemplateWriter::SaveStructTemplate(CStructTemplate *pTemp, CMasterTemplate
|
|||
pRoot->SetAttribute("type", (pTemp->IsSingleProperty() ? "single" : "multi"));
|
||||
StructXML.LinkEndChild(pRoot);
|
||||
|
||||
SaveProperties(&StructXML, pRoot, pTemp, pMaster, rkDir);
|
||||
SaveProperties(&StructXML, pRoot, pTemp, pMaster);
|
||||
StructXML.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveEnumTemplate(CEnumTemplate *pTemp, const TString& rkDir)
|
||||
void CTemplateWriter::SaveEnumTemplate(CEnumTemplate *pTemp, CMasterTemplate *pMaster)
|
||||
{
|
||||
// Create directory
|
||||
TString OutFile = rkDir + pTemp->mSourceFile;
|
||||
TString OutFile = smTemplatesDir + pMaster->GetDirectory() + pTemp->mSourceFile;
|
||||
TString OutDir = OutFile.GetFileDirectory();
|
||||
TString Name = OutFile.GetFileName(false);
|
||||
boost::filesystem::create_directory(*OutDir);
|
||||
|
@ -380,10 +390,10 @@ void CTemplateWriter::SaveEnumTemplate(CEnumTemplate *pTemp, const TString& rkDi
|
|||
EnumXML.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveBitfieldTemplate(CBitfieldTemplate *pTemp, const TString& rkDir)
|
||||
void CTemplateWriter::SaveBitfieldTemplate(CBitfieldTemplate *pTemp, CMasterTemplate *pMaster)
|
||||
{
|
||||
// Create directory
|
||||
TString OutFile = rkDir + pTemp->mSourceFile;
|
||||
TString OutFile = smTemplatesDir + pMaster->GetDirectory() + pTemp->mSourceFile;
|
||||
TString OutDir = OutFile.GetFileDirectory();
|
||||
TString Name = pTemp->mSourceFile.GetFileName(false);
|
||||
boost::filesystem::create_directory(*OutDir);
|
||||
|
@ -402,7 +412,7 @@ void CTemplateWriter::SaveBitfieldTemplate(CBitfieldTemplate *pTemp, const TStri
|
|||
BitfieldXML.SaveFile(*OutFile);
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CStructTemplate *pTemp, CMasterTemplate *pMaster, const TString& rkDir)
|
||||
void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CStructTemplate *pTemp, CMasterTemplate *pMaster)
|
||||
{
|
||||
// Create base element
|
||||
XMLElement *pPropsBlock = pDoc->NewElement("properties");
|
||||
|
@ -429,20 +439,15 @@ void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CSt
|
|||
else
|
||||
pElem = pDoc->NewElement("property");
|
||||
|
||||
pPropsBlock->LinkEndChild(pElem);
|
||||
|
||||
// Set common property parameters, starting with ID
|
||||
pElem->SetAttribute("ID", *StrID);
|
||||
|
||||
// Type
|
||||
if (pProp->Type() == eStructProperty)
|
||||
pElem->SetAttribute("type", (static_cast<CStructTemplate*>(pProp)->mIsSingleProperty ? "single" : "multi"));
|
||||
|
||||
else if (TString(pElem->Name()) == "property")
|
||||
pElem->SetAttribute("type", *PropEnumToPropString(pProp->Type()));
|
||||
|
||||
// Name
|
||||
TString Name = pProp->Name();
|
||||
|
||||
if (pMaster->GetGame() >= eEchoesDemo)
|
||||
if (pMaster->GetGame() >= eEchoesDemo && ID > 0xFF)
|
||||
{
|
||||
TString MasterName = CMasterTemplate::GetPropertyName(ID);
|
||||
|
||||
|
@ -453,14 +458,53 @@ void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CSt
|
|||
else
|
||||
pElem->SetAttribute("name", *Name);
|
||||
|
||||
// Type
|
||||
if (pProp->Type() == eStructProperty)
|
||||
{
|
||||
CStructTemplate *pStruct = static_cast<CStructTemplate*>(pProp);
|
||||
|
||||
if (pStruct->mSourceFile.IsEmpty())
|
||||
pElem->SetAttribute("type", (pStruct->mIsSingleProperty ? "single" : "multi"));
|
||||
}
|
||||
|
||||
else if (TString(pElem->Name()) == "property")
|
||||
pElem->SetAttribute("type", *PropEnumToPropString(pProp->Type()));
|
||||
|
||||
// Versions
|
||||
u32 NumVersions = pProp->mAllowedVersions.size();
|
||||
|
||||
if (NumVersions > 0 && NumVersions != pMaster->mGameVersions.size())
|
||||
{
|
||||
XMLElement *pVersions = pDoc->NewElement("versions");
|
||||
pElem->LinkEndChild(pVersions);
|
||||
|
||||
for (u32 iVer = 0; iVer < pMaster->mGameVersions.size(); iVer++)
|
||||
{
|
||||
if (pProp->IsInVersion(iVer))
|
||||
{
|
||||
XMLElement *pVersion = pDoc->NewElement("version");
|
||||
pVersion->SetText(*pMaster->mGameVersions[iVer]);
|
||||
pVersions->LinkEndChild(pVersion);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Default
|
||||
if (pProp->CanHaveDefault())
|
||||
if (pProp->CanHaveDefault() && pMaster->GetGame() >= eEchoesDemo)
|
||||
{
|
||||
XMLElement *pDefault = pDoc->NewElement("default");
|
||||
pDefault->SetText(*pProp->DefaultToString());
|
||||
pElem->LinkEndChild(pDefault);
|
||||
}
|
||||
|
||||
// Description
|
||||
if (!pProp->Description().IsEmpty())
|
||||
{
|
||||
XMLElement *pDesc = pDoc->NewElement("description");
|
||||
pDesc->SetText(*pProp->Description());
|
||||
pElem->LinkEndChild(pDesc);
|
||||
}
|
||||
|
||||
// Range
|
||||
if (pProp->IsNumerical() && pProp->HasValidRange())
|
||||
{
|
||||
|
@ -502,7 +546,8 @@ void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CSt
|
|||
for (auto it = rkExtensions.begin(); it != rkExtensions.end(); it++)
|
||||
ExtensionsString += *it + ",";
|
||||
|
||||
ExtensionsString.ChopBack(1); // Remove extra comma
|
||||
ExtensionsString = ExtensionsString.ChopBack(1); // Remove extra comma
|
||||
if (ExtensionsString.IsEmpty()) ExtensionsString = "UNKN";
|
||||
pElem->SetAttribute("extensions", *ExtensionsString);
|
||||
}
|
||||
|
||||
|
@ -516,7 +561,7 @@ void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CSt
|
|||
|
||||
else
|
||||
{
|
||||
SaveEnumTemplate(pEnum, rkDir);
|
||||
SaveEnumTemplate(pEnum, pMaster);
|
||||
pElem->SetAttribute("template", *pEnum->mSourceFile);
|
||||
}
|
||||
}
|
||||
|
@ -531,28 +576,167 @@ void CTemplateWriter::SaveProperties(XMLDocument *pDoc, XMLElement *pParent, CSt
|
|||
|
||||
else
|
||||
{
|
||||
SaveBitfieldTemplate(pBitfield, rkDir);
|
||||
SaveBitfieldTemplate(pBitfield, pMaster);
|
||||
pElem->SetAttribute("template", *pBitfield->mSourceFile);
|
||||
}
|
||||
}
|
||||
|
||||
// Struct/array-specific parameters
|
||||
if (pProp->Type() == eStructProperty || pProp->Type() == eArrayProperty)
|
||||
else if (pProp->Type() == eStructProperty || pProp->Type() == eArrayProperty)
|
||||
{
|
||||
// Element Name
|
||||
if (pProp->Type() == eArrayProperty)
|
||||
{
|
||||
CArrayTemplate *pArray = static_cast<CArrayTemplate*>(pProp);
|
||||
|
||||
if (!pArray->ElementName().IsEmpty())
|
||||
{
|
||||
XMLElement *pElement = pDoc->NewElement("element_name");
|
||||
pElement->SetText(*static_cast<CArrayTemplate*>(pProp)->ElementName());
|
||||
pElem->LinkEndChild(pElement);
|
||||
}
|
||||
}
|
||||
|
||||
// Sub-properties
|
||||
CStructTemplate *pStruct = static_cast<CStructTemplate*>(pProp);
|
||||
|
||||
if (pStruct->mSourceFile.IsEmpty())
|
||||
SaveProperties(pDoc, pElem, pStruct, pMaster, rkDir);
|
||||
SaveProperties(pDoc, pElem, pStruct, pMaster);
|
||||
|
||||
else
|
||||
{
|
||||
SaveStructTemplate(pStruct, pMaster, rkDir);
|
||||
auto it = pMaster->mStructTemplates.find(pStruct->mSourceFile);
|
||||
|
||||
if (it != pMaster->mStructTemplates.end())
|
||||
SavePropertyOverrides(pDoc, pElem, pStruct, it->second);
|
||||
|
||||
pElem->SetAttribute("template", *pStruct->mSourceFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTemplateWriter::SavePropertyOverrides(XMLDocument *pDoc, XMLElement *pParent, CStructTemplate *pStruct, CStructTemplate *pOriginal)
|
||||
{
|
||||
if (!pStruct->StructDataMatches(pOriginal))
|
||||
{
|
||||
// Create base element
|
||||
XMLElement *pPropsBlock = pDoc->NewElement("properties");
|
||||
pParent->LinkEndChild(pPropsBlock);
|
||||
|
||||
for (u32 iProp = 0; iProp < pStruct->Count(); iProp++)
|
||||
{
|
||||
IPropertyTemplate *pProp = pStruct->PropertyByIndex(iProp);
|
||||
IPropertyTemplate *pSource = pOriginal->PropertyByIndex(iProp);
|
||||
|
||||
if (!pProp->Matches(pSource))
|
||||
{
|
||||
// Create element
|
||||
XMLElement *pElem;
|
||||
|
||||
if (pProp->Type() == eStructProperty)
|
||||
pElem = pDoc->NewElement("struct");
|
||||
else if (pProp->Type() == eEnumProperty)
|
||||
pElem = pDoc->NewElement("enum");
|
||||
else if (pProp->Type() == eBitfieldProperty)
|
||||
pElem = pDoc->NewElement("bitfield");
|
||||
else if (pProp->Type() == eArrayProperty)
|
||||
pElem = pDoc->NewElement("array");
|
||||
else
|
||||
pElem = pDoc->NewElement("property");
|
||||
|
||||
pPropsBlock->LinkEndChild(pElem);
|
||||
|
||||
// ID
|
||||
u32 ID = pProp->PropertyID();
|
||||
pElem->SetAttribute("ID", *TString::HexString(pProp->PropertyID(), true, true, (ID > 0xFF ? 8 : 2)));
|
||||
|
||||
// Name
|
||||
if (pProp->Name() != pSource->Name())
|
||||
pElem->SetAttribute("name", *pProp->Name());
|
||||
|
||||
// Default
|
||||
if (pProp->CanHaveDefault() && !pProp->RawDefaultValue()->Matches(pSource->RawDefaultValue()))
|
||||
{
|
||||
XMLElement *pDefault = pDoc->NewElement("default");
|
||||
pDefault->SetText(*pProp->DefaultToString());
|
||||
pElem->LinkEndChild(pDefault);
|
||||
}
|
||||
|
||||
// Description
|
||||
if (pProp->Description() != pSource->Description())
|
||||
{
|
||||
XMLElement *pDesc = pDoc->NewElement("description");
|
||||
pDesc->SetText(*pProp->Description());
|
||||
pElem->LinkEndChild(pDesc);
|
||||
}
|
||||
|
||||
// Range
|
||||
if (pProp->IsNumerical())
|
||||
{
|
||||
TString Range = pProp->RangeToString();
|
||||
|
||||
if (Range != pSource->RangeToString())
|
||||
{
|
||||
XMLElement *pRange = pDoc->NewElement("range");
|
||||
pRange->SetText(*Range);
|
||||
pElem->LinkEndChild(pRange);
|
||||
}
|
||||
}
|
||||
|
||||
// Suffix
|
||||
if (pProp->Suffix() != pSource->Suffix())
|
||||
{
|
||||
XMLElement *pSuffix = pDoc->NewElement("suffix");
|
||||
pSuffix->SetText(*pProp->Suffix());
|
||||
pElem->LinkEndChild(pSuffix);
|
||||
}
|
||||
|
||||
// Cook Pref
|
||||
if (pProp->CookPreference() != pSource->CookPreference())
|
||||
{
|
||||
XMLElement *pCookPref = pDoc->NewElement("should_cook");
|
||||
|
||||
TString PrefStr;
|
||||
if (pProp->CookPreference() == eAlwaysCook) PrefStr = "always";
|
||||
else if (pProp->CookPreference() == eNeverCook) PrefStr = "never";
|
||||
else PrefStr = "nopref";
|
||||
|
||||
pCookPref->SetText(*PrefStr);
|
||||
pElem->LinkEndChild(pCookPref);
|
||||
}
|
||||
|
||||
// File-specific parameters
|
||||
if (pProp->Type() == eFileProperty)
|
||||
{
|
||||
CFileTemplate *pFile = static_cast<CFileTemplate*>(pProp);
|
||||
CFileTemplate *pSourceFile = static_cast<CFileTemplate*>(pSource);
|
||||
|
||||
if (pFile->Extensions() != pSourceFile->Extensions())
|
||||
{
|
||||
TString ExtensionsString;
|
||||
|
||||
for (auto it = pFile->Extensions().begin(); it != pFile->Extensions().end(); it++)
|
||||
ExtensionsString += *it + ",";
|
||||
|
||||
ExtensionsString = ExtensionsString.ChopBack(1);
|
||||
if (ExtensionsString.IsEmpty()) ExtensionsString = "UNKN";
|
||||
pElem->SetAttribute("extensions", *ExtensionsString);
|
||||
}
|
||||
}
|
||||
|
||||
// Struct/array-specific parameters
|
||||
else if (pProp->Type() == eStructProperty || pProp->Type() == eArrayProperty)
|
||||
{
|
||||
CStructTemplate *pStruct = static_cast<CStructTemplate*>(pProp);
|
||||
CStructTemplate *pSourceStruct = static_cast<CStructTemplate*>(pSource);
|
||||
SavePropertyOverrides(pDoc, pElem, pStruct, pSourceStruct);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTemplateWriter::SaveEnumerators(XMLDocument *pDoc, XMLElement *pParent, CEnumTemplate *pTemp)
|
||||
{
|
||||
XMLElement *pEnumerators = pDoc->NewElement("enumerators");
|
||||
|
@ -562,7 +746,7 @@ void CTemplateWriter::SaveEnumerators(XMLDocument *pDoc, XMLElement *pParent, CE
|
|||
{
|
||||
XMLElement *pElem = pDoc->NewElement("enumerator");
|
||||
u32 EnumerID = pTemp->EnumeratorID(iEnum);
|
||||
pElem->SetAttribute("ID", *TString::HexString(EnumerID, true, true, (EnumerID > 0xFF ? 8 : 0)));
|
||||
pElem->SetAttribute("ID", *TString::HexString(EnumerID, true, true, (EnumerID > 0xFF ? 8 : 2)));
|
||||
pElem->SetAttribute("name", *pTemp->EnumeratorName(iEnum));
|
||||
pEnumerators->LinkEndChild(pElem);
|
||||
}
|
||||
|
|
|
@ -8,16 +8,18 @@
|
|||
class CTemplateWriter
|
||||
{
|
||||
CTemplateWriter();
|
||||
static TString smTemplatesDir;
|
||||
|
||||
public:
|
||||
static void SaveAllTemplates();
|
||||
static void SaveGameTemplates(CMasterTemplate *pMaster, const TString& rkDir);
|
||||
static void SavePropertyList(const TString& rkDir);
|
||||
static void SaveScriptTemplate(CScriptTemplate *pTemp, const TString& rkDir);
|
||||
static void SaveStructTemplate(CStructTemplate *pTemp, CMasterTemplate *pMaster, const TString& rkDir);
|
||||
static void SaveEnumTemplate(CEnumTemplate *pTemp, const TString& rkDir);
|
||||
static void SaveBitfieldTemplate(CBitfieldTemplate *pTemp, const TString& rkDir);
|
||||
static void SaveProperties(tinyxml2::XMLDocument *pDoc, tinyxml2::XMLElement *pParent, CStructTemplate *pTemp, CMasterTemplate *pMaster, const TString& rkDir);
|
||||
static void SaveGameTemplates(CMasterTemplate *pMaster);
|
||||
static void SavePropertyList();
|
||||
static void SaveScriptTemplate(CScriptTemplate *pTemp);
|
||||
static void SaveStructTemplate(CStructTemplate *pTemp, CMasterTemplate *pMaster);
|
||||
static void SaveEnumTemplate(CEnumTemplate *pTemp, CMasterTemplate *pMaster);
|
||||
static void SaveBitfieldTemplate(CBitfieldTemplate *pTemp, CMasterTemplate *pMaster);
|
||||
static void SaveProperties(tinyxml2::XMLDocument *pDoc, tinyxml2::XMLElement *pParent, CStructTemplate *pTemp, CMasterTemplate *pMaster);
|
||||
static void SavePropertyOverrides(tinyxml2::XMLDocument *pDoc, tinyxml2::XMLElement *pParent, CStructTemplate *pStruct, CStructTemplate *pOriginal);
|
||||
static void SaveEnumerators(tinyxml2::XMLDocument *pDoc, tinyxml2::XMLElement *pParent, CEnumTemplate *pTemp);
|
||||
static void SaveBitFlags(tinyxml2::XMLDocument *pDoc, tinyxml2::XMLElement *pParent, CBitfieldTemplate *pTemp);
|
||||
};
|
||||
|
|
|
@ -20,7 +20,7 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
// Get ID + name
|
||||
if (IDAttr.IsEmpty())
|
||||
{
|
||||
Log::Error("Error reading " + rkTemplateName + "; ran into a property with no ID");
|
||||
Log::Error(rkTemplateName + ": ran into a property with no ID");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
Name = CMasterTemplate::GetPropertyName(ID);
|
||||
else
|
||||
{
|
||||
Log::Error("Error reading " + rkTemplateName + " property " + TString::HexString(ID, true, true, 8) + "; this property doesn't have a name either in the template itself nor in the master list");
|
||||
Log::Error(rkTemplateName + ": Property " + TString::HexString(ID, true, true, 8) + " doesn't have a name either in the template itself nor in the master list");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -53,9 +53,9 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
if (Type == eInvalidProperty)
|
||||
{
|
||||
if (TypeStr.IsEmpty())
|
||||
Log::Error("Error reading " + rkTemplateName + " property " + TString::HexString(ID, true, true, 8) + "; this property doesn't have a valid type set");
|
||||
Log::Error(rkTemplateName + ": Property " + TString::HexString(ID, true, true, 8) + " doesn't have a type set");
|
||||
else
|
||||
Log::Error("Error reading " + rkTemplateName + " property " + TString::HexString(ID, true, true, 8) + "; this property has an invalid type set: " + TypeStr);
|
||||
Log::Error(rkTemplateName + ": Property " + TString::HexString(ID, true, true, 8) + " has an invalid type set: " + TypeStr);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
|
||||
if (!pProp)
|
||||
{
|
||||
Log::Error("Error reading " + rkTemplateName + " property " + TString::HexString(ID, true, true, 8) + "; seem to have attempted to load a valid but unsupported property type? (" + TypeStr + ")");
|
||||
Log::Error(rkTemplateName + ": Property " + TString::HexString(ID, true, true, 8) + " seems to be using a valid but unsupported property type? (" + TypeStr + ")");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
u32 VerIdx = mpMaster->GetGameVersion(VerName);
|
||||
|
||||
if (VerIdx == -1)
|
||||
Log::Error("Error reading " + rkTemplateName + " property " + TString::HexString(ID, true, true, 8) + "; invalid version \"" + VerName + "\"");
|
||||
Log::Error(rkTemplateName + ": Property " + TString::HexString(ID, true, true, 8) + " has invalid version \"" + VerName + "\"");
|
||||
else
|
||||
pProp->mAllowedVersions.push_back(VerIdx);
|
||||
|
||||
|
@ -156,15 +156,16 @@ IPropertyTemplate* CTemplateLoader::LoadProperty(XMLElement *pElem, CStructTempl
|
|||
LoadStructTemplate(TemplateAttr, pStruct);
|
||||
|
||||
if (IsNewProperty && TemplateAttr.IsEmpty() && Type == eStructProperty)
|
||||
pStruct->mIsSingleProperty = (TypeAttr == "single" ? true : false);
|
||||
pStruct->mIsSingleProperty = (TypeAttr == "single");
|
||||
|
||||
// Load sub-properties
|
||||
// Load sub-properties and parameter overrides
|
||||
XMLElement *pProperties = pElem->FirstChildElement("properties");
|
||||
|
||||
if (pProperties)
|
||||
LoadProperties(pProperties, pStruct, rkTemplateName);
|
||||
}
|
||||
|
||||
CMasterTemplate::AddProperty(pProp, mMasterDir + rkTemplateName);
|
||||
return pProp;
|
||||
}
|
||||
|
||||
|
@ -184,7 +185,7 @@ IPropertyTemplate* CTemplateLoader::CreateProperty(u32 ID, EPropertyType Type, c
|
|||
case eVector3Property: pOut = CREATE_PROP_TEMP(TVector3Template); break;
|
||||
case eColorProperty: pOut = CREATE_PROP_TEMP(TColorTemplate); break;
|
||||
case eFileProperty: pOut = CREATE_PROP_TEMP(CFileTemplate); break;
|
||||
case eCharacterProperty: pOut = CREATE_PROP_TEMP(CCharacterTemplate); break;
|
||||
case eCharacterProperty: pOut = CREATE_PROP_TEMP(TCharacterTemplate); break;
|
||||
case eEnumProperty: pOut = CREATE_PROP_TEMP(CEnumTemplate); break;
|
||||
case eBitfieldProperty: pOut = CREATE_PROP_TEMP(CBitfieldTemplate); break;
|
||||
case eArrayProperty: pOut = CREATE_PROP_TEMP(CArrayTemplate); break;
|
||||
|
@ -199,8 +200,15 @@ IPropertyTemplate* CTemplateLoader::CreateProperty(u32 ID, EPropertyType Type, c
|
|||
|
||||
void CTemplateLoader::LoadStructTemplate(const TString& rkTemplateFileName, CStructTemplate *pStruct)
|
||||
{
|
||||
// Check whether this struct has already been read
|
||||
auto it = mpMaster->mStructTemplates.find(rkTemplateFileName);
|
||||
CStructTemplate *pSource = (it == mpMaster->mStructTemplates.end() ? nullptr : it->second);
|
||||
|
||||
// If the source hasn't been read yet, then we read it and add it to master's list
|
||||
if (!pSource)
|
||||
{
|
||||
XMLDocument Doc;
|
||||
OpenXML(mMasterDir + rkTemplateFileName, Doc);
|
||||
OpenXML(mskTemplatesDir + mMasterDir + rkTemplateFileName, Doc);
|
||||
|
||||
if (!Doc.Error())
|
||||
{
|
||||
|
@ -208,11 +216,12 @@ void CTemplateLoader::LoadStructTemplate(const TString& rkTemplateFileName, CStr
|
|||
|
||||
if (pStruct->Type() == eStructProperty)
|
||||
{
|
||||
pSource = new CStructTemplate(-1, nullptr);
|
||||
pRootElem = Doc.FirstChildElement("struct");
|
||||
|
||||
if (!pRootElem)
|
||||
{
|
||||
Log::Error("Error reading struct template " + rkTemplateFileName + ": there is no root \"struct\" element");
|
||||
Log::Error(rkTemplateFileName + ": There is no root \"struct\" element");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -220,11 +229,11 @@ void CTemplateLoader::LoadStructTemplate(const TString& rkTemplateFileName, CStr
|
|||
|
||||
if (TypeAttr.IsEmpty())
|
||||
{
|
||||
Log::Error("Error reading struct template " + rkTemplateFileName + "; there is no struct type specified");
|
||||
Log::Error(rkTemplateFileName + ": There is no struct type specified");
|
||||
return;
|
||||
}
|
||||
|
||||
pStruct->mIsSingleProperty = (TypeAttr == "single" ? true : false);
|
||||
pSource->mIsSingleProperty = (TypeAttr == "single" ? true : false);
|
||||
}
|
||||
|
||||
else if (pStruct->Type() == eArrayProperty)
|
||||
|
@ -233,7 +242,7 @@ void CTemplateLoader::LoadStructTemplate(const TString& rkTemplateFileName, CStr
|
|||
|
||||
if (!pRootElem)
|
||||
{
|
||||
Log::Error("Error reading array template " + rkTemplateFileName + "; there is no root \"array\" element");
|
||||
Log::Error(rkTemplateFileName + ": There is no root \"array\" element");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -242,17 +251,30 @@ void CTemplateLoader::LoadStructTemplate(const TString& rkTemplateFileName, CStr
|
|||
XMLElement *pSubPropsElem = pRootElem->FirstChildElement("properties");
|
||||
|
||||
if (pSubPropsElem)
|
||||
LoadProperties(pSubPropsElem, pStruct, rkTemplateFileName);
|
||||
{
|
||||
LoadProperties(pSubPropsElem, pSource, rkTemplateFileName);
|
||||
mpMaster->mStructTemplates[rkTemplateFileName] = pSource;
|
||||
pSource->mSourceFile = rkTemplateFileName;
|
||||
}
|
||||
|
||||
else
|
||||
Log::Error("Error reading " + TString(pStruct->Type() == eStructProperty ? "struct" : "array") + " template " + rkTemplateFileName + "; there's no \"properties\" block element");
|
||||
{
|
||||
Log::Error(rkTemplateFileName + ": There is no \"properties\" block element");
|
||||
delete pSource;
|
||||
pSource = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copy source to the new struct template
|
||||
if (pSource)
|
||||
pStruct->CopyStructData(pSource);
|
||||
}
|
||||
|
||||
void CTemplateLoader::LoadEnumTemplate(const TString& rkTemplateFileName, CEnumTemplate *pEnum)
|
||||
{
|
||||
XMLDocument Doc;
|
||||
OpenXML(mMasterDir + rkTemplateFileName, Doc);
|
||||
OpenXML(mskTemplatesDir + mMasterDir + rkTemplateFileName, Doc);
|
||||
|
||||
if (!Doc.Error())
|
||||
{
|
||||
|
@ -260,7 +282,7 @@ void CTemplateLoader::LoadEnumTemplate(const TString& rkTemplateFileName, CEnumT
|
|||
|
||||
if (!pRootElem)
|
||||
{
|
||||
Log::Error("Error reading enum template " + rkTemplateFileName + "; there is no root \"enum\" element");
|
||||
Log::Error(rkTemplateFileName + ": There is no root \"enum\" element");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -270,14 +292,16 @@ void CTemplateLoader::LoadEnumTemplate(const TString& rkTemplateFileName, CEnumT
|
|||
LoadEnumerators(pEnumers, pEnum, rkTemplateFileName);
|
||||
|
||||
else
|
||||
Log::Error("Error reading enum template " + rkTemplateFileName + "; there is no \"enumerators\" block element");
|
||||
Log::Error(rkTemplateFileName + ": There is no \"enumerators\" block element");
|
||||
|
||||
pEnum->mSourceFile = rkTemplateFileName;
|
||||
}
|
||||
}
|
||||
|
||||
void CTemplateLoader::LoadBitfieldTemplate(const TString& rkTemplateFileName, CBitfieldTemplate *pBitfield)
|
||||
{
|
||||
XMLDocument Doc;
|
||||
OpenXML(mMasterDir + rkTemplateFileName, Doc);
|
||||
OpenXML(mskTemplatesDir + mMasterDir + rkTemplateFileName, Doc);
|
||||
|
||||
if (!Doc.Error())
|
||||
{
|
||||
|
@ -285,7 +309,7 @@ void CTemplateLoader::LoadBitfieldTemplate(const TString& rkTemplateFileName, CB
|
|||
|
||||
if (!pRootElem)
|
||||
{
|
||||
Log::Error("Error reading bitfield template " + rkTemplateFileName + "; there is no root \"bitfield\" element");
|
||||
Log::Error(rkTemplateFileName + ": There is no root \"bitfield\" element");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -295,7 +319,9 @@ void CTemplateLoader::LoadBitfieldTemplate(const TString& rkTemplateFileName, CB
|
|||
LoadBitFlags(pFlags, pBitfield, rkTemplateFileName);
|
||||
|
||||
else
|
||||
Log::Error("Error reading bitfield template " + rkTemplateFileName + "; there is no \"flags\" block element");
|
||||
Log::Error(rkTemplateFileName + ": There is no \"flags\" block element");
|
||||
|
||||
pBitfield->mSourceFile = rkTemplateFileName;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -309,7 +335,7 @@ void CTemplateLoader::LoadProperties(XMLElement *pPropertiesElem, CStructTemplat
|
|||
|
||||
if ( (NodeType != "property") && (NodeType != "struct") && (NodeType != "enum") && (NodeType != "bitfield") && (NodeType != "array") )
|
||||
{
|
||||
Log::Error("Error reading " + rkTemplateName + "; a node in a properties block has an invalid name: " + NodeType);
|
||||
Log::Error(rkTemplateName + ": A node in a properties block has an invalid name: " + NodeType);
|
||||
}
|
||||
|
||||
// LoadProperty adds newly created properties to the struct, so we don't need to do anything other than call it for each sub-element.
|
||||
|
@ -339,7 +365,7 @@ void CTemplateLoader::LoadEnumerators(XMLElement *pEnumeratorsElem, CEnumTemplat
|
|||
|
||||
else
|
||||
{
|
||||
TString LogErrorBase = "Couldn't parse enumerator in " + rkTemplateName + "; ";
|
||||
TString LogErrorBase = rkTemplateName + ": Couldn't parse enumerator; ";
|
||||
|
||||
if (!pkID && pkName) Log::Error(LogErrorBase + "no valid ID (" + pkName + ")");
|
||||
else if (pkID && !pkName) Log::Error(LogErrorBase + "no valid name (ID " + pkID + ")");
|
||||
|
@ -364,7 +390,7 @@ void CTemplateLoader::LoadBitFlags(XMLElement *pFlagsElem, CBitfieldTemplate *pT
|
|||
|
||||
else
|
||||
{
|
||||
TString LogErrorBase = "Couldn't parse bit flag in " + templateName + "; ";
|
||||
TString LogErrorBase = templateName + ": Couldn't parse bit flag; ";
|
||||
|
||||
if (!pkMask && pkName) Log::Error(LogErrorBase + "no mask (" + pkName + ")");
|
||||
else if (pkMask && !pkName) Log::Error(LogErrorBase + "no name (mask " + pkMask + ")");
|
||||
|
@ -381,6 +407,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
CScriptTemplate *pScript = new CScriptTemplate(mpMaster);
|
||||
pScript->mObjectID = ObjectID;
|
||||
pScript->mpBaseStruct = new CStructTemplate(-1, nullptr);
|
||||
pScript->mSourceFile = rkTemplateName;
|
||||
|
||||
XMLElement *pRoot = pDoc->FirstChildElement("ScriptTemplate");
|
||||
|
||||
|
@ -399,7 +426,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
if (pPropsElem)
|
||||
LoadProperties(pPropsElem, pScript->mpBaseStruct, rkTemplateName);
|
||||
else
|
||||
Log::Error("Error reading script template " + rkTemplateName + "; there is no properties block");
|
||||
Log::Error(rkTemplateName + ": There is no \"properties\" block element");
|
||||
|
||||
// Editor Parameters
|
||||
XMLElement *pEditor = pRoot->FirstChildElement("editor");
|
||||
|
@ -413,7 +440,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
while (pEdProp)
|
||||
{
|
||||
TString Name = TString(pEdProp->Attribute("name")).ToLower();
|
||||
TString ID = TString(pEdProp->Attribute("ID")).ToLower();
|
||||
TString ID = TString(pEdProp->Attribute("ID"));
|
||||
|
||||
if (!Name.IsEmpty() && !ID.IsEmpty())
|
||||
{
|
||||
|
@ -489,7 +516,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
{
|
||||
if (!pScript->mpBaseStruct->HasProperty(Asset.AssetLocation))
|
||||
{
|
||||
Log::Error("Error reading script template " + rkTemplateName + "; invalid property for " + Type + " asset: " + ID);
|
||||
Log::Error(rkTemplateName + ": Invalid property for " + Type + " asset: " + ID);
|
||||
pAsset = pAsset->NextSiblingElement();
|
||||
continue;
|
||||
}
|
||||
|
@ -501,7 +528,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
TString Path = "../resources/" + ID;
|
||||
if (!boost::filesystem::exists(*Path))
|
||||
{
|
||||
Log::Error("Error reading script template " + rkTemplateName + "; invalid file for " + Type + " asset: " + ID);
|
||||
Log::Error(rkTemplateName + ": Invalid file for " + Type + " asset: " + ID);
|
||||
pAsset = pAsset->NextSiblingElement();
|
||||
continue;
|
||||
}
|
||||
|
@ -625,7 +652,7 @@ CScriptTemplate* CTemplateLoader::LoadScriptTemplate(XMLDocument *pDoc, const TS
|
|||
void CTemplateLoader::LoadMasterTemplate(XMLDocument *pDoc, CMasterTemplate *pMaster)
|
||||
{
|
||||
mpMaster = pMaster;
|
||||
mMasterDir = mskTemplatesDir + pMaster->mSourceFile.GetFileDirectory();
|
||||
mMasterDir = pMaster->mSourceFile.GetFileDirectory();
|
||||
|
||||
XMLElement *pRoot = pDoc->FirstChildElement("MasterTemplate");
|
||||
mpMaster->mVersion = TString(pRoot->Attribute("version")).ToInt32();
|
||||
|
@ -668,18 +695,15 @@ void CTemplateLoader::LoadMasterTemplate(XMLDocument *pDoc, CMasterTemplate *pMa
|
|||
TString TemplateName = pObj->Attribute("template");
|
||||
|
||||
XMLDocument ScriptXML;
|
||||
OpenXML(mMasterDir + TemplateName, ScriptXML);
|
||||
OpenXML(mskTemplatesDir + mMasterDir + TemplateName, ScriptXML);
|
||||
|
||||
if (!ScriptXML.Error())
|
||||
{
|
||||
CScriptTemplate *pTemp = LoadScriptTemplate(&ScriptXML, TemplateName, ID);
|
||||
|
||||
if (pTemp)
|
||||
{
|
||||
pTemp->mSourceFile = TemplateName;
|
||||
mpMaster->mTemplates[ID] = pTemp;
|
||||
}
|
||||
}
|
||||
|
||||
pObj = pObj->NextSiblingElement("object");
|
||||
}
|
||||
|
@ -773,7 +797,7 @@ void CTemplateLoader::OpenXML(const TString& rkPath, XMLDocument& rDoc)
|
|||
if (rDoc.Error())
|
||||
{
|
||||
TString Name = AbsPath.GetFileName();
|
||||
Log::Error("Error when opening template XML " + Name + ": " + ErrorName(rDoc.ErrorID()));
|
||||
Log::Error("Error opening " + Name + ": " + ErrorName(rDoc.ErrorID()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -861,7 +885,7 @@ void CTemplateLoader::LoadGameTemplates(EGame Game)
|
|||
{
|
||||
CMasterTemplate *pMaster = *it;
|
||||
|
||||
if (pMaster->GetGame() == Game)
|
||||
if (pMaster->GetGame() == Game && !pMaster->IsLoadedSuccessfully())
|
||||
{
|
||||
XMLDocument MasterXML;
|
||||
OpenXML(mskTemplatesDir + pMaster->mSourceFile, MasterXML);
|
||||
|
@ -878,12 +902,35 @@ void CTemplateLoader::LoadGameTemplates(EGame Game)
|
|||
}
|
||||
}
|
||||
|
||||
void CTemplateLoader::LoadAllGames()
|
||||
{
|
||||
std::list<CMasterTemplate*> MasterList = CMasterTemplate::GetMasterList();
|
||||
|
||||
for (auto it = MasterList.begin(); it != MasterList.end(); it++)
|
||||
{
|
||||
CMasterTemplate *pMaster = *it;
|
||||
|
||||
if (!pMaster->IsLoadedSuccessfully())
|
||||
{
|
||||
XMLDocument MasterXML;
|
||||
OpenXML(mskTemplatesDir + pMaster->mSourceFile, MasterXML);
|
||||
|
||||
if (!MasterXML.Error())
|
||||
{
|
||||
CTemplateLoader Loader(mskTemplatesDir);
|
||||
Loader.mGame = pMaster->GetGame();
|
||||
Loader.LoadMasterTemplate(&MasterXML, pMaster);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTemplateLoader::LoadPropertyList(XMLDocument *pDoc, const TString& ListName)
|
||||
{
|
||||
XMLElement *pRootElem = pDoc->FirstChildElement("Properties");
|
||||
|
||||
if (!pRootElem)
|
||||
Log::Error("Error reading property list at " + ListName + "; there is no root \"Properties\" block element");
|
||||
Log::Error(ListName + ": There is no root \"Properties\" block element");
|
||||
|
||||
else
|
||||
{
|
||||
|
|
|
@ -45,6 +45,7 @@ class CTemplateLoader
|
|||
public:
|
||||
static void LoadGameList();
|
||||
static void LoadGameTemplates(EGame Game);
|
||||
static void LoadAllGames();
|
||||
static void LoadPropertyList(tinyxml2::XMLDocument *pDoc, const TString& rkListName);
|
||||
};
|
||||
|
||||
|
|
|
@ -99,6 +99,11 @@ TString CMasterTemplate::MessageByIndex(u32 Index)
|
|||
return (std::next(it, Index))->second;
|
||||
}
|
||||
|
||||
TString CMasterTemplate::GetDirectory() const
|
||||
{
|
||||
return mSourceFile.GetFileDirectory();
|
||||
}
|
||||
|
||||
bool CMasterTemplate::IsLoadedSuccessfully()
|
||||
{
|
||||
return mFullyLoaded;
|
||||
|
@ -135,6 +140,79 @@ TString CMasterTemplate::GetPropertyName(u32 PropertyID)
|
|||
return "Unknown";
|
||||
}
|
||||
|
||||
void CMasterTemplate::AddProperty(IPropertyTemplate *pTemp, const TString& rkTemplateName)
|
||||
{
|
||||
auto it = smIDMap.find(pTemp->PropertyID());
|
||||
|
||||
// Add this property/template to existing ID info
|
||||
if (it != smIDMap.end())
|
||||
{
|
||||
SPropIDInfo& rInfo = it->second;
|
||||
bool NewTemplate = true;
|
||||
|
||||
for (u32 iTemp = 0; iTemp < rInfo.XMLList.size(); iTemp++)
|
||||
{
|
||||
if (rInfo.XMLList[iTemp] == rkTemplateName)
|
||||
{
|
||||
NewTemplate = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (NewTemplate)
|
||||
rInfo.XMLList.push_back(rkTemplateName);
|
||||
|
||||
it->second.PropertyList.push_back(pTemp);
|
||||
}
|
||||
|
||||
// Create new ID info
|
||||
else
|
||||
{
|
||||
SPropIDInfo Info;
|
||||
Info.XMLList.push_back(rkTemplateName);
|
||||
Info.PropertyList.push_back(pTemp);
|
||||
smIDMap[pTemp->PropertyID()] = Info;
|
||||
}
|
||||
}
|
||||
|
||||
void CMasterTemplate::RenameProperty(u32 ID, const TString& rkNewName)
|
||||
{
|
||||
auto NameIt = smPropertyNames.find(ID);
|
||||
TString CurName = (NameIt == smPropertyNames.end() ? "" : NameIt->second);
|
||||
|
||||
auto InfoIt = smIDMap.find(ID);
|
||||
|
||||
if (InfoIt != smIDMap.end())
|
||||
{
|
||||
const SPropIDInfo& rkInfo = InfoIt->second;
|
||||
|
||||
for (u32 iTemp = 0; iTemp < rkInfo.PropertyList.size(); iTemp++)
|
||||
{
|
||||
IPropertyTemplate *pTemp = rkInfo.PropertyList[iTemp];
|
||||
|
||||
if (pTemp->Name() == CurName)
|
||||
pTemp->SetName(rkNewName);
|
||||
}
|
||||
}
|
||||
|
||||
if (NameIt != smPropertyNames.end())
|
||||
smPropertyNames[ID] = rkNewName;
|
||||
}
|
||||
|
||||
std::vector<TString> CMasterTemplate::GetTemplatesUsingID(u32 ID)
|
||||
{
|
||||
auto InfoIt = smIDMap.find(ID);
|
||||
|
||||
if (InfoIt != smIDMap.end())
|
||||
{
|
||||
const SPropIDInfo& rkInfo = InfoIt->second;
|
||||
return rkInfo.XMLList;
|
||||
}
|
||||
else
|
||||
return std::vector<TString>();
|
||||
}
|
||||
|
||||
std::map<u32, CMasterTemplate::SPropIDInfo> CMasterTemplate::smIDMap;
|
||||
std::map<EGame, CMasterTemplate*> CMasterTemplate::smMasterMap;
|
||||
std::map<u32, TString> CMasterTemplate::smPropertyNames;
|
||||
u32 CMasterTemplate::smGameListVersion;
|
||||
|
|
|
@ -18,11 +18,18 @@ class CMasterTemplate
|
|||
bool mFullyLoaded;
|
||||
|
||||
std::vector<TString> mGameVersions;
|
||||
std::map<TString, CStructTemplate*> mStructTemplates;
|
||||
|
||||
std::map<u32, CScriptTemplate*> mTemplates;
|
||||
std::map<u32, TString> mStates;
|
||||
std::map<u32, TString> mMessages;
|
||||
|
||||
|
||||
struct SPropIDInfo
|
||||
{
|
||||
std::vector<TString> XMLList; // List of script/struct templates that use this ID
|
||||
std::vector<IPropertyTemplate*> PropertyList; // List of all properties that use this ID
|
||||
};
|
||||
static std::map<u32, SPropIDInfo> smIDMap;
|
||||
static std::map<EGame, CMasterTemplate*> smMasterMap;
|
||||
static std::map<u32, TString> smPropertyNames;
|
||||
static u32 smGameListVersion;
|
||||
|
@ -45,11 +52,15 @@ public:
|
|||
TString MessageByID(u32 MessageID);
|
||||
TString MessageByID(const CFourCC& MessageID);
|
||||
TString MessageByIndex(u32 Index);
|
||||
TString GetDirectory() const;
|
||||
bool IsLoadedSuccessfully();
|
||||
|
||||
static CMasterTemplate* GetMasterForGame(EGame Game);
|
||||
static std::list<CMasterTemplate*> GetMasterList();
|
||||
static TString GetPropertyName(u32 PropertyID);
|
||||
static void AddProperty(IPropertyTemplate *pTemp, const TString& rkTemplateName);
|
||||
static void RenameProperty(u32 ID, const TString& rkNewName);
|
||||
static std::vector<TString> GetTemplatesUsingID(u32 ID);
|
||||
};
|
||||
|
||||
// ************ INLINE ************
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
IPropertyTemplate(u32 ID, CStructTemplate *pParent = 0)
|
||||
: mID(ID)
|
||||
, mpParent(pParent)
|
||||
, mName("Unknown")
|
||||
, mName("UNSET PROPERTY NAME")
|
||||
, mCookPreference(eNoCookPreference)
|
||||
{
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ public:
|
|||
|
||||
// TTypedPropertyTemplate - Template property class that allows for tracking
|
||||
// a default value. Typedefs are set up for a bunch of property types.
|
||||
template<typename PropType, EPropertyType PropTypeEnum, class ValueClass>
|
||||
template<typename PropType, EPropertyType PropTypeEnum, class ValueClass, bool CanHaveDefaultValue>
|
||||
class TTypedPropertyTemplate : public IPropertyTemplate
|
||||
{
|
||||
friend class CTemplateLoader;
|
||||
|
@ -147,7 +147,7 @@ public:
|
|||
: IPropertyTemplate(ID, rkName, CookPreference, pParent) {}
|
||||
|
||||
virtual EPropertyType Type() const { return PropTypeEnum; }
|
||||
virtual bool CanHaveDefault() const { return true; }
|
||||
virtual bool CanHaveDefault() const { return CanHaveDefaultValue; }
|
||||
virtual bool IsNumerical() const { return false; }
|
||||
|
||||
virtual IProperty* InstantiateProperty(CPropertyStruct *pParent)
|
||||
|
@ -200,7 +200,7 @@ public:
|
|||
// TNumericalPropertyTemplate - Subclass of TTypedPropertyTemplate for numerical
|
||||
// property types, and allows a min/max value and a suffix to be tracked.
|
||||
template<typename PropType, EPropertyType PropTypeEnum, class ValueClass>
|
||||
class TNumericalPropertyTemplate : public TTypedPropertyTemplate<PropType,PropTypeEnum,ValueClass>
|
||||
class TNumericalPropertyTemplate : public TTypedPropertyTemplate<PropType,PropTypeEnum,ValueClass,true>
|
||||
{
|
||||
friend class CTemplateLoader;
|
||||
friend class CTemplateWriter;
|
||||
|
@ -252,7 +252,7 @@ public:
|
|||
|
||||
virtual void SetParam(const TString& rkParamName, const TString& rkValue)
|
||||
{
|
||||
TTypedPropertyTemplate<PropType,PropTypeEnum,ValueClass>::SetParam(rkParamName, rkValue);
|
||||
TTypedPropertyTemplate::SetParam(rkParamName, rkValue);
|
||||
|
||||
if (rkParamName == "range")
|
||||
{
|
||||
|
@ -288,14 +288,15 @@ public:
|
|||
};
|
||||
|
||||
// Typedefs for all property types that don't need further functionality.
|
||||
typedef TTypedPropertyTemplate<bool, eBoolProperty, CBoolValue> TBoolTemplate;
|
||||
typedef TTypedPropertyTemplate<bool, eBoolProperty, CBoolValue, true> TBoolTemplate;
|
||||
typedef TNumericalPropertyTemplate<s8, eByteProperty, CByteValue> TByteTemplate;
|
||||
typedef TNumericalPropertyTemplate<s16, eShortProperty, CShortValue> TShortTemplate;
|
||||
typedef TNumericalPropertyTemplate<s32, eLongProperty, CLongValue> TLongTemplate;
|
||||
typedef TNumericalPropertyTemplate<float, eFloatProperty, CFloatValue> TFloatTemplate;
|
||||
typedef TTypedPropertyTemplate<TString, eStringProperty, CStringValue> TStringTemplate;
|
||||
typedef TTypedPropertyTemplate<CVector3f, eVector3Property, CVector3Value> TVector3Template;
|
||||
typedef TTypedPropertyTemplate<CColor, eColorProperty, CColorValue> TColorTemplate;
|
||||
typedef TTypedPropertyTemplate<TString, eStringProperty, CStringValue, false> TStringTemplate;
|
||||
typedef TTypedPropertyTemplate<CVector3f, eVector3Property, CVector3Value, true> TVector3Template;
|
||||
typedef TTypedPropertyTemplate<CColor, eColorProperty, CColorValue, true> TColorTemplate;
|
||||
typedef TTypedPropertyTemplate<CAnimationParameters, eCharacterProperty, CCharacterValue, false> TCharacterTemplate;
|
||||
|
||||
// CFileTemplate - Property template for files. Tracks a list of file types that
|
||||
// the property is allowed to accept.
|
||||
|
@ -348,36 +349,8 @@ public:
|
|||
const TStringList& Extensions() const { return mAcceptedExtensions; }
|
||||
};
|
||||
|
||||
// CCharacterTemplate - Typed property that doesn't allow default values.
|
||||
class CCharacterTemplate : public TTypedPropertyTemplate<CAnimationParameters,
|
||||
eCharacterProperty,
|
||||
CCharacterValue>
|
||||
{
|
||||
friend class CTemplateLoader;
|
||||
friend class CTemplateWriter;
|
||||
|
||||
public:
|
||||
CCharacterTemplate(u32 ID, CStructTemplate *pParent = 0)
|
||||
: TTypedPropertyTemplate(ID, pParent) { }
|
||||
|
||||
CCharacterTemplate(u32 ID, const TString& rkName, ECookPreference CookPreference, CStructTemplate *pParent = 0)
|
||||
: TTypedPropertyTemplate(ID, rkName, CookPreference, pParent) { }
|
||||
|
||||
virtual bool CanHaveDefault() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IProperty* InstantiateProperty(CPropertyStruct *pParent)
|
||||
{
|
||||
return new TCharacterProperty(this, pParent);
|
||||
}
|
||||
|
||||
DEFINE_TEMPLATE_CLONE(CCharacterTemplate)
|
||||
};
|
||||
|
||||
// CEnumTemplate - Property template for enums. Tracks a list of possible values (enumerators).
|
||||
class CEnumTemplate : public TLongTemplate
|
||||
class CEnumTemplate : public TTypedPropertyTemplate<s32, eEnumProperty, CHexLongValue, true>
|
||||
{
|
||||
friend class CTemplateLoader;
|
||||
friend class CTemplateWriter;
|
||||
|
@ -400,12 +373,12 @@ class CEnumTemplate : public TLongTemplate
|
|||
|
||||
public:
|
||||
CEnumTemplate(u32 ID, CStructTemplate *pParent = 0)
|
||||
: TLongTemplate(ID, pParent)
|
||||
: TTypedPropertyTemplate(ID, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CEnumTemplate(u32 ID, const TString& rkName, ECookPreference CookPreference, CStructTemplate *pParent = 0)
|
||||
: TLongTemplate(ID, rkName, CookPreference, pParent)
|
||||
: TTypedPropertyTemplate(ID, rkName, CookPreference, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -424,7 +397,7 @@ public:
|
|||
|
||||
virtual void Copy(const IPropertyTemplate *pkTemp)
|
||||
{
|
||||
TLongTemplate::Copy(pkTemp);
|
||||
TTypedPropertyTemplate::Copy(pkTemp);
|
||||
|
||||
const CEnumTemplate *pkEnum = static_cast<const CEnumTemplate*>(pkTemp);
|
||||
mEnumerators = pkEnum->mEnumerators;
|
||||
|
@ -435,7 +408,7 @@ public:
|
|||
{
|
||||
const CEnumTemplate *pkEnum = static_cast<const CEnumTemplate*>(pkTemp);
|
||||
|
||||
return ( (TLongTemplate::Matches(pkTemp)) &&
|
||||
return ( (TTypedPropertyTemplate::Matches(pkTemp)) &&
|
||||
(mEnumerators == pkEnum->mEnumerators) &&
|
||||
(mSourceFile == pkEnum->mSourceFile) );
|
||||
}
|
||||
|
@ -474,7 +447,7 @@ public:
|
|||
|
||||
// CBitfieldTemplate - Property template for bitfields, which can have multiple
|
||||
// distinct boolean parameters packed into one property.
|
||||
class CBitfieldTemplate : public TTypedPropertyTemplate<u32, eBitfieldProperty, CHexLongValue>
|
||||
class CBitfieldTemplate : public TTypedPropertyTemplate<u32, eBitfieldProperty, CHexLongValue, true>
|
||||
{
|
||||
friend class CTemplateLoader;
|
||||
friend class CTemplateWriter;
|
||||
|
@ -594,6 +567,11 @@ public:
|
|||
IPropertyTemplate::Copy(pkTemp);
|
||||
|
||||
const CStructTemplate *pkStruct = static_cast<const CStructTemplate*>(pkTemp);
|
||||
CopyStructData(pkStruct);
|
||||
}
|
||||
|
||||
void CopyStructData(const CStructTemplate *pkStruct)
|
||||
{
|
||||
mVersionPropertyCounts = pkStruct->mVersionPropertyCounts;
|
||||
mIsSingleProperty = pkStruct->mIsSingleProperty;
|
||||
mSourceFile = pkStruct->mSourceFile;
|
||||
|
@ -611,7 +589,17 @@ public:
|
|||
if ( (IPropertyTemplate::Matches(pkTemp)) &&
|
||||
(mVersionPropertyCounts == pkStruct->mVersionPropertyCounts) &&
|
||||
(mIsSingleProperty == pkStruct->mIsSingleProperty) &&
|
||||
(mSourceFile == pkStruct->mSourceFile) &&
|
||||
(mSourceFile == pkStruct->mSourceFile) )
|
||||
{
|
||||
return StructDataMatches(pkStruct);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StructDataMatches(const CStructTemplate *pkStruct) const
|
||||
{
|
||||
if ( (mIsSingleProperty == pkStruct->mIsSingleProperty) &&
|
||||
(mSubProperties.size() == pkStruct->mSubProperties.size()) )
|
||||
{
|
||||
for (u32 iSub = 0; iSub < mSubProperties.size(); iSub++)
|
||||
|
@ -673,6 +661,8 @@ public:
|
|||
|
||||
virtual void Copy(const IPropertyTemplate *pkTemp)
|
||||
{
|
||||
IPropertyTemplate::Copy(pkTemp);
|
||||
|
||||
CStructTemplate::Copy(pkTemp);
|
||||
mElementName = static_cast<const CArrayTemplate*>(pkTemp)->mElementName;
|
||||
}
|
||||
|
|
|
@ -168,7 +168,7 @@ public:
|
|||
|
||||
TString ToString() const
|
||||
{
|
||||
return TString::HexString(mValue, true, true, 8);
|
||||
return TString::HexString(mValue, true, true, mValue > 0xFF ? 8 : 2);
|
||||
}
|
||||
|
||||
void FromString(const TString& rkString)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Properties version="4">
|
||||
<property ID="0x0001F679" name="Unknown"/>
|
||||
<property ID="0x000E4BAE" name="Sky Temple Key 5"/>
|
||||
|
@ -4333,7 +4333,7 @@
|
|||
<property ID="0x60FE934E" name="Unknown"/>
|
||||
<property ID="0x610B8FB8" name="Unknown"/>
|
||||
<property ID="0x610C0165" name="Unknown"/>
|
||||
<property ID="0x610EEC90" name="This room's #"/>
|
||||
<property ID="0x610EEC90" name="This room's #"/>
|
||||
<property ID="0x6117E78F" name="Unknown"/>
|
||||
<property ID="0x611905F1" name="Unknown"/>
|
||||
<property ID="0x6119D07F" name="Unknown"/>
|
||||
|
|
|
@ -1,165 +1,165 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MasterTemplate version="4">
|
||||
<objects>
|
||||
<object ID="AAGM" template="Script/AnimGridModifier.xml"/>
|
||||
<object ID="ACKF" template="Script/ActorKeyframe.xml"/>
|
||||
<object ID="ACOU" template="Script/Acoustics.xml"/>
|
||||
<object ID="ACTR" template="Script/Actor.xml"/>
|
||||
<object ID="ADMG" template="Script/AreaDamage.xml"/>
|
||||
<object ID="AIHT" template="Script/AIHint.xml"/>
|
||||
<object ID="AIKF" template="Script/AIKeyframe.xml"/>
|
||||
<object ID="AIWP" template="Script/AIWaypoint.xml"/>
|
||||
<object ID="ACOU" template="Script/Acoustics.xml"/>
|
||||
<object ID="ACTR" template="Script/Actor.xml"/>
|
||||
<object ID="AAGM" template="Script/AnimGridModifier.xml"/>
|
||||
<object ID="ACKF" template="Script/ActorKeyframe.xml"/>
|
||||
<object ID="AMKF" template="Script/ActorMultiKeyframe.xml"/>
|
||||
<object ID="ATRN" template="Script/ActorTransform.xml"/>
|
||||
<object ID="REAA" template="Script/AreaAttributes.xml"/>
|
||||
<object ID="ADMG" template="Script/AreaDamage.xml"/>
|
||||
<object ID="AOCL" template="Script/AudioOccluder.xml"/>
|
||||
<object ID="ARNO" template="Script/AreaNode.xml"/>
|
||||
<object ID="ARPA" template="Script/AreaPath.xml"/>
|
||||
<object ID="ASAS" template="Script/AssignedAudioStream.xml"/>
|
||||
<object ID="AOCL" template="Script/AudioOccluder.xml"/>
|
||||
<object ID="ATRN" template="Script/ActorTransform.xml"/>
|
||||
<object ID="AVIS" template="Script/AVIS.xml"/>
|
||||
<object ID="BABL" template="Script/BarrelBalloon.xml"/>
|
||||
<object ID="BARL" template="Script/BarrelCannon.xml"/>
|
||||
<object ID="BUHA" template="Script/BeatUpHandler.xml"/>
|
||||
<object ID="BIRD" template="Script/BirdBoss.xml"/>
|
||||
<object ID="BLME" template="Script/BloomEffect.xml"/>
|
||||
<object ID="BLMV" template="Script/BloomVolume.xml"/>
|
||||
<object ID="BLUR" template="Script/CameraBlurKeyframe.xml"/>
|
||||
<object ID="BONU" template="Script/Bonus.xml"/>
|
||||
<object ID="BTYR" template="Script/BouncyTire.xml"/>
|
||||
<object ID="BUHA" template="Script/BeatUpHandler.xml"/>
|
||||
<object ID="CABL" template="Script/Cable.xml"/>
|
||||
<object ID="BLUR" template="Script/CameraBlurKeyframe.xml"/>
|
||||
<object ID="FILT" template="Script/CameraFilterKeyframe.xml"/>
|
||||
<object ID="CAMH" template="Script/CameraHint.xml"/>
|
||||
<object ID="CMAN" template="Script/CameraManager.xml"/>
|
||||
<object ID="CMOD" template="Script/CameraModifier.xml"/>
|
||||
<object ID="CAMS" template="Script/CameraShaker.xml"/>
|
||||
<object ID="CKPT" template="Script/Checkpoint.xml"/>
|
||||
<object ID="CART" template="Script/MineCart.xml"/>
|
||||
<object ID="CINE" template="Script/CinematicCamera.xml"/>
|
||||
<object ID="CKPT" template="Script/Checkpoint.xml"/>
|
||||
<object ID="CLPC" template="Script/ClingPathControl.xml"/>
|
||||
<object ID="CLRM" template="Script/ColorModulate.xml"/>
|
||||
<object ID="CRLY" template="Script/ConditionalRelay.xml"/>
|
||||
<object ID="CMAN" template="Script/CameraManager.xml"/>
|
||||
<object ID="CMGR" template="Script/PirateCrabManager.xml"/>
|
||||
<object ID="CMOD" template="Script/CameraModifier.xml"/>
|
||||
<object ID="CNTA" template="Script/ControllerAction.xml"/>
|
||||
<object ID="CNTR" template="Script/Counter.xml"/>
|
||||
<object ID="CRAB" template="Script/PirateCrab.xml"/>
|
||||
<object ID="CRED" template="Script/Credits.xml"/>
|
||||
<object ID="CRLY" template="Script/ConditionalRelay.xml"/>
|
||||
<object ID="CSGO" template="Script/GameOver.xml"/>
|
||||
<object ID="CSTI" template="Script/CSTI.xml"/>
|
||||
<object ID="DMGA" template="Script/DamageArea.xml"/>
|
||||
<object ID="DMGE" template="Script/DamageEffect.xml"/>
|
||||
<object ID="DTRG" template="Script/DamageableTrigger.xml"/>
|
||||
<object ID="DTRO" template="Script/DamageableTriggerOrientated.xml"/>
|
||||
<object ID="DEBR" template="Script/Debris.xml"/>
|
||||
<object ID="DOFT" template="Script/DepthOfFieldTuner.xml"/>
|
||||
<object ID="DFOG" template="Script/DistanceFog.xml"/>
|
||||
<object ID="DLHT" template="Script/DynamicLight.xml"/>
|
||||
<object ID="DMGA" template="Script/DamageArea.xml"/>
|
||||
<object ID="DMGE" template="Script/DamageEffect.xml"/>
|
||||
<object ID="DOFT" template="Script/DepthOfFieldTuner.xml"/>
|
||||
<object ID="DTRG" template="Script/DamageableTrigger.xml"/>
|
||||
<object ID="DTRO" template="Script/DamageableTriggerOrientated.xml"/>
|
||||
<object ID="EFCT" template="Script/Effect.xml"/>
|
||||
<object ID="EOLD" template="Script/EOLDisplay.xml"/>
|
||||
<object ID="FXDC" template="Script/EnvFxDensityController.xml"/>
|
||||
<object ID="FSWC" template="Script/FactorySwitch.xml"/>
|
||||
<object ID="FILT" template="Script/CameraFilterKeyframe.xml"/>
|
||||
<object ID="FLPS" template="Script/FalsePerspective.xml"/>
|
||||
<object ID="FOBS" template="Script/ForestBoss.xml"/>
|
||||
<object ID="FOGO" template="Script/FogOverlay.xml"/>
|
||||
<object ID="FOGV" template="Script/FogVolume.xml"/>
|
||||
<object ID="FOBS" template="Script/ForestBoss.xml"/>
|
||||
<object ID="GMGR" template="Script/GameManager.xml"/>
|
||||
<object ID="CSGO" template="Script/GameOver.xml"/>
|
||||
<object ID="GOBD" template="Script/GeneratedObjectDeleter.xml"/>
|
||||
<object ID="GENR" template="Script/Generator.xml"/>
|
||||
<object ID="GCTR" template="Script/GenericCreature.xml"/>
|
||||
<object ID="FSWC" template="Script/FactorySwitch.xml"/>
|
||||
<object ID="FXDC" template="Script/EnvFxDensityController.xml"/>
|
||||
<object ID="GCGP" template="Script/GenericCreatureGroup.xml"/>
|
||||
<object ID="GPDT" template="Script/GroundPoundDetector.xml"/>
|
||||
<object ID="GUCH" template="Script/GuiCharacter.xml"/>
|
||||
<object ID="GCTR" template="Script/GenericCreature.xml"/>
|
||||
<object ID="GENR" template="Script/Generator.xml"/>
|
||||
<object ID="GMGR" template="Script/GameManager.xml"/>
|
||||
<object ID="GMNU" template="Script/GuiMenu.xml"/>
|
||||
<object ID="GOBD" template="Script/GeneratedObjectDeleter.xml"/>
|
||||
<object ID="GPDT" template="Script/GroundPoundDetector.xml"/>
|
||||
<object ID="GPTR" template="Script/GPTR.xml"/>
|
||||
<object ID="GSLD" template="Script/GuiSlider.xml"/>
|
||||
<object ID="GUCH" template="Script/GuiCharacter.xml"/>
|
||||
<object ID="GWIG" template="Script/GuiWidget.xml"/>
|
||||
<object ID="HINT" template="Script/PlayerHint.xml"/>
|
||||
<object ID="HUDD" template="Script/HUD.xml"/>
|
||||
<object ID="HUDP" template="Script/HUDProxy.xml"/>
|
||||
<object ID="IHUD" template="Script/IslandHUD.xml"/>
|
||||
<object ID="ISAR" template="Script/IslandArea.xml"/>
|
||||
<object ID="JB01" template="Script/JungleBoss1.xml"/>
|
||||
<object ID="KONG" template="Script/Kong.xml"/>
|
||||
<object ID="KNGP" template="Script/KongProxy.xml"/>
|
||||
<object ID="LVLD" template="Script/LevelDarkener.xml"/>
|
||||
<object ID="KONG" template="Script/Kong.xml"/>
|
||||
<object ID="LODC" template="Script/LODController.xml"/>
|
||||
<object ID="LVLD" template="Script/LevelDarkener.xml"/>
|
||||
<object ID="LVOL" template="Script/LightVolume.xml"/>
|
||||
<object ID="MNPL" template="Script/MotionPlatform.xml"/>
|
||||
<object ID="MEAT" template="Script/MEAT.xml"/>
|
||||
<object ID="MRLY" template="Script/MemoryRelay.xml"/>
|
||||
<object ID="CART" template="Script/MineCart.xml"/>
|
||||
<object ID="MOLC" template="Script/MoleCart.xml"/>
|
||||
<object ID="MOLM" template="Script/MoleTrainManager.xml"/>
|
||||
<object ID="MOLE" template="Script/Mole.xml"/>
|
||||
<object ID="MMDL" template="Script/MultiModelActor.xml"/>
|
||||
<object ID="MNPL" template="Script/MotionPlatform.xml"/>
|
||||
<object ID="MOLC" template="Script/MoleCart.xml"/>
|
||||
<object ID="MOLE" template="Script/Mole.xml"/>
|
||||
<object ID="MOLM" template="Script/MoleTrainManager.xml"/>
|
||||
<object ID="MOVI" template="Script/StreamedMovie.xml"/>
|
||||
<object ID="MPSR" template="Script/MultiplayerSyncRelay.xml"/>
|
||||
<object ID="MRLY" template="Script/MemoryRelay.xml"/>
|
||||
<object ID="MUMA" template="Script/MusicMaster.xml"/>
|
||||
<object ID="SAMD" template="Script/StreamedAudioModifier.xml"/>
|
||||
<object ID="MUTR" template="Script/MusicTrack.xml"/>
|
||||
<object ID="OBRG" template="Script/OceanBridge.xml"/>
|
||||
<object ID="WAVE" template="Script/OceanWave.xml"/>
|
||||
<object ID="OPAA" template="Script/OptionalAreaAsset.xml"/>
|
||||
<object ID="PCTL" template="Script/PathControl.xml"/>
|
||||
<object ID="PNUT" template="Script/Peanut.xml"/>
|
||||
<object ID="PCKP" template="Script/Pickup.xml"/>
|
||||
<object ID="PCHK" template="Script/PilotChicken.xml"/>
|
||||
<object ID="CRAB" template="Script/PirateCrab.xml"/>
|
||||
<object ID="CMGR" template="Script/PirateCrabManager.xml"/>
|
||||
<object ID="PLAT" template="Script/Platform.xml"/>
|
||||
<object ID="HINT" template="Script/PlayerHint.xml"/>
|
||||
<object ID="PCKP" template="Script/Pickup.xml"/>
|
||||
<object ID="PCTL" template="Script/PathControl.xml"/>
|
||||
<object ID="PLAC" template="Script/PlayerActor.xml"/>
|
||||
<object ID="PRSP" template="Script/PlayerRespawn.xml"/>
|
||||
<object ID="PTOK" template="Script/PlayerToken.xml"/>
|
||||
<object ID="PLAT" template="Script/Platform.xml"/>
|
||||
<object ID="PNUT" template="Script/Peanut.xml"/>
|
||||
<object ID="POIO" template="Script/PoiObject.xml"/>
|
||||
<object ID="SPRL" template="Script/PositionRelay.xml"/>
|
||||
<object ID="PRLA" template="Script/PickupRelay.xml"/>
|
||||
<object ID="PROJ" template="Script/Projectile.xml"/>
|
||||
<object ID="RADD" template="Script/RadialDamage.xml"/>
|
||||
<object ID="RMBI" template="Script/Rambi.xml"/>
|
||||
<object ID="PRSP" template="Script/PlayerRespawn.xml"/>
|
||||
<object ID="PTOK" template="Script/PlayerToken.xml"/>
|
||||
<object ID="RACR" template="Script/RambiCrate.xml"/>
|
||||
<object ID="REAC" template="Script/ReactiveObject.xml"/>
|
||||
<object ID="RSCL" template="Script/RSCL.xml"/>
|
||||
<object ID="SRLY" template="Script/Relay.xml"/>
|
||||
<object ID="RRLY" template="Script/RandomRelay.xml"/>
|
||||
<object ID="RSBL" template="Script/RespawnBalloon.xml"/>
|
||||
<object ID="RTNM" template="Script/Retronome.xml"/>
|
||||
<object ID="RCTL" template="Script/ReviewControl.xml"/>
|
||||
<object ID="RADD" template="Script/RadialDamage.xml"/>
|
||||
<object ID="RBRL" template="Script/RocketBarrel.xml"/>
|
||||
<object ID="RCHK" template="Script/RobotChicken.xml"/>
|
||||
<object ID="RCKF" template="Script/RobotChickenFlyer.xml"/>
|
||||
<object ID="RBRL" template="Script/RocketBarrel.xml"/>
|
||||
<object ID="RCTL" template="Script/ReviewControl.xml"/>
|
||||
<object ID="REAA" template="Script/AreaAttributes.xml"/>
|
||||
<object ID="REAC" template="Script/ReactiveObject.xml"/>
|
||||
<object ID="RMBI" template="Script/Rambi.xml"/>
|
||||
<object ID="ROPE" template="Script/SwingRope.xml"/>
|
||||
<object ID="RRLY" template="Script/RandomRelay.xml"/>
|
||||
<object ID="RSBL" template="Script/RespawnBalloon.xml"/>
|
||||
<object ID="RSCL" template="Script/RSCL.xml"/>
|
||||
<object ID="RTNM" template="Script/Retronome.xml"/>
|
||||
<object ID="RUMB" template="Script/RumbleEffect.xml"/>
|
||||
<object ID="SLCT" template="Script/ScriptLayerController.xml"/>
|
||||
<object ID="SQTR" template="Script/SequenceTimer.xml"/>
|
||||
<object ID="SHDW" template="Script/ShadowProjector.xml"/>
|
||||
<object ID="SAMD" template="Script/StreamedAudioModifier.xml"/>
|
||||
<object ID="SBMI" template="Script/SkyboxModInca.xml"/>
|
||||
<object ID="SOND" template="Script/Sound.xml"/>
|
||||
<object ID="SCTL" template="Script/SurfaceControl.xml"/>
|
||||
<object ID="SHDW" template="Script/ShadowProjector.xml"/>
|
||||
<object ID="SLCT" template="Script/ScriptLayerController.xml"/>
|
||||
<object ID="SNDM" template="Script/SoundModifier.xml"/>
|
||||
<object ID="SNMD" template="Script/SoundModifierData.xml"/>
|
||||
<object ID="SPWN" template="Script/SpawnPoint.xml"/>
|
||||
<object ID="SOND" template="Script/Sound.xml"/>
|
||||
<object ID="SPFN" template="Script/SpecialFunction.xml"/>
|
||||
<object ID="SPIN" template="Script/Spinner.xml"/>
|
||||
<object ID="SVOL" template="Script/SplineModifierVolume.xml"/>
|
||||
<object ID="SPPA" template="Script/SplinePath.xml"/>
|
||||
<object ID="SPNW" template="Script/SplinePathNetwork.xml"/>
|
||||
<object ID="SWKP" template="Script/SquawkPuzzleAlert.xml"/>
|
||||
<object ID="SPPA" template="Script/SplinePath.xml"/>
|
||||
<object ID="SPRL" template="Script/PositionRelay.xml"/>
|
||||
<object ID="SPWN" template="Script/SpawnPoint.xml"/>
|
||||
<object ID="SQTR" template="Script/SequenceTimer.xml"/>
|
||||
<object ID="SRLY" template="Script/Relay.xml"/>
|
||||
<object ID="STAU" template="Script/StreamedAudio.xml"/>
|
||||
<object ID="MOVI" template="Script/StreamedMovie.xml"/>
|
||||
<object ID="SUBT" template="Script/Subtitles.xml"/>
|
||||
<object ID="SCTL" template="Script/SurfaceControl.xml"/>
|
||||
<object ID="SUSP" template="Script/SuspensionBridge.xml"/>
|
||||
<object ID="ROPE" template="Script/SwingRope.xml"/>
|
||||
<object ID="SVOL" template="Script/SplineModifierVolume.xml"/>
|
||||
<object ID="SWKP" template="Script/SquawkPuzzleAlert.xml"/>
|
||||
<object ID="SWTC" template="Script/Switch.xml"/>
|
||||
<object ID="TARP" template="Script/TarPit.xml"/>
|
||||
<object ID="TXPN" template="Script/TextPane.xml"/>
|
||||
<object ID="TIDE" template="Script/TidalWave.xml"/>
|
||||
<object ID="TEOL" template="Script/TimeAttackEOLDisplay.xml"/>
|
||||
<object ID="TKEY" template="Script/TimeKeyframe.xml"/>
|
||||
<object ID="TIDE" template="Script/TidalWave.xml"/>
|
||||
<object ID="TIMR" template="Script/Timer.xml"/>
|
||||
<object ID="TIPI" template="Script/TippyPlatform.xml"/>
|
||||
<object ID="TPND" template="Script/TPND.xml"/>
|
||||
<object ID="TKEY" template="Script/TimeKeyframe.xml"/>
|
||||
<object ID="TMGR" template="Script/TrainTrackManager.xml"/>
|
||||
<object ID="TSEQ" template="Script/TrainSequence.xml"/>
|
||||
<object ID="TRSC" template="Script/TransitionScreen.xml"/>
|
||||
<object ID="TPND" template="Script/TPND.xml"/>
|
||||
<object ID="TRGR" template="Script/Trigger.xml"/>
|
||||
<object ID="TRSC" template="Script/TransitionScreen.xml"/>
|
||||
<object ID="TSEQ" template="Script/TrainSequence.xml"/>
|
||||
<object ID="TUTR" template="Script/Tutorial.xml"/>
|
||||
<object ID="VRBR" template="Script/VerticalRocketBarrel.xml"/>
|
||||
<object ID="TXPN" template="Script/TextPane.xml"/>
|
||||
<object ID="VBPT" template="Script/VolcanoBossBodyPart.xml"/>
|
||||
<object ID="VOLG" template="Script/VolGroup.xml"/>
|
||||
<object ID="VRBR" template="Script/VerticalRocketBarrel.xml"/>
|
||||
<object ID="WAVE" template="Script/OceanWave.xml"/>
|
||||
<object ID="WAYP" template="Script/Waypoint.xml"/>
|
||||
<object ID="WLDA" template="Script/WorldAttributes.xml"/>
|
||||
<object ID="WLIT" template="Script/WorldLightFader.xml"/>
|
||||
|
|
|
@ -4,19 +4,26 @@
|
|||
<properties>
|
||||
<struct ID="0x255A4580" template="Structs/EditorProperties.xml"/>
|
||||
<array ID="0xEF5C94E9">
|
||||
<default>0</default>
|
||||
<element_name>Connection</element_name>
|
||||
<properties>
|
||||
<property ID="0x00" name="Connection Index" type="short" />
|
||||
<property ID="0x00" name="Connection Index" type="short">
|
||||
<default>0</default>
|
||||
</property>
|
||||
<array ID="0x01" name="Activation Times">
|
||||
<element_name>Activation Time</element_name>
|
||||
<properties>
|
||||
<property ID="0x00" name="Time" type="float" />
|
||||
<property ID="0x00" name="Time" type="float">
|
||||
<default>0.0</default>
|
||||
</property>
|
||||
<property ID="0x01" name="Unknown 1" type="long">
|
||||
<default>0</default>
|
||||
<description>Always 0</description>
|
||||
</property>
|
||||
<property ID="0x02" name="Unknown 2" type="long"/>
|
||||
<property ID="0x02" name="Unknown 2" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property ID="0x03" name="Unknown 3" type="long">
|
||||
<default>0</default>
|
||||
<description>Always 0</description>
|
||||
</property>
|
||||
</properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</property>
|
||||
<struct ID="0x20091B54" template="Structs/SplineType.xml"/>
|
||||
<property ID="0x00DD86E2" type="color">
|
||||
<default>1,0,1,1</default>
|
||||
<default>1.0, 0.0, 1.0, 1.0</default>
|
||||
</property>
|
||||
</properties>
|
||||
<states/>
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<struct name="LayerID" type="single">
|
||||
<properties>
|
||||
<property ID="0x00" type="long" name="Layer ID Part 1"/>
|
||||
<property ID="0x01" type="long" name="Layer ID Part 2"/>
|
||||
<property ID="0x02" type="long" name="Layer ID Part 3"/>
|
||||
<property ID="0x03" type="long" name="Layer ID Part 4"/>
|
||||
<property ID="0x00" name="Layer ID Part 1" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property ID="0x01" name="Layer ID Part 2" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property ID="0x02" name="Layer ID Part 3" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property ID="0x03" name="Layer ID Part 4" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
</properties>
|
||||
</struct>
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<struct name="LayerSwitch" type="single">
|
||||
<properties>
|
||||
<property ID="0x00" name="Area ID" type="file" ext="NULL"/>
|
||||
<property ID="0x01" name="Layer #" type="long"/>
|
||||
<property ID="0x00" name="Area ID" type="file" extensions="UNKN"/>
|
||||
<property ID="0x01" name="Layer #" type="long">
|
||||
<default>0</default>
|
||||
</property>
|
||||
</properties>
|
||||
</struct>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<default>1.0, 1.0, 1.0, 1.0</default>
|
||||
</property>
|
||||
<enum ID="0x6B5E7509">
|
||||
<default>1</default>
|
||||
<default>0x01</default>
|
||||
<enumerators>
|
||||
<enumerator ID="0x00" name="Unknown 1"/>
|
||||
<enumerator ID="0x01" name="Normal World Lighting"/>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<struct name="Transform" type="single">
|
||||
<properties>
|
||||
<property ID="0x00" name="Position" type="vector3f">
|
||||
<default>0,0,0</default>
|
||||
<default>0.0, 0.0, 0.0</default>
|
||||
</property>
|
||||
<property ID="0x01" name="Rotation" type="vector3f">
|
||||
<default>0,0,0</default>
|
||||
<default>0.0, 0.0, 0.0</default>
|
||||
</property>
|
||||
<property ID="0x02" name="Scale" type="vector3f">
|
||||
<default>1,1,1</default>
|
||||
<default>1.0, 1.0, 1.0</default>
|
||||
</property>
|
||||
</properties>
|
||||
</struct>
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<?xml version="1.0" ?>
|
||||
<enum name="ControllerButton">
|
||||
<enumerator ID="0x0" name="None" />
|
||||
<enumerator ID="0x1" name="Left Stick Up" />
|
||||
<enumerator ID="0x2" name="Left Stick Down" />
|
||||
<enumerator ID="0x3" name="Left Stick Left" />
|
||||
<enumerator ID="0x4" name="Left Stick Right" />
|
||||
<enumerator ID="0x5" name="Right Stick Up" />
|
||||
<enumerator ID="0x6" name="Right Stick Down" />
|
||||
<enumerator ID="0x7" name="Right Stick Left" />
|
||||
<enumerator ID="0x8" name="Right Stick Right" />
|
||||
<enumerator ID="0x9" name="Left Trigger" />
|
||||
<enumerator ID="0xA" name="Right Trigger" />
|
||||
<enumerator ID="0xB" name="D-Pad Up" />
|
||||
<enumerator ID="0xC" name="D-Pad Down" />
|
||||
<enumerator ID="0xD" name="D-Pad Left" />
|
||||
<enumerator ID="0xE" name="D-Pad Right" />
|
||||
<enumerator ID="0xF" name="A Button" />
|
||||
<enumerator ID="0x00" name="None" />
|
||||
<enumerator ID="0x01" name="Left Stick Up" />
|
||||
<enumerator ID="0x02" name="Left Stick Down" />
|
||||
<enumerator ID="0x03" name="Left Stick Left" />
|
||||
<enumerator ID="0x04" name="Left Stick Right" />
|
||||
<enumerator ID="0x05" name="Right Stick Up" />
|
||||
<enumerator ID="0x06" name="Right Stick Down" />
|
||||
<enumerator ID="0x07" name="Right Stick Left" />
|
||||
<enumerator ID="0x08" name="Right Stick Right" />
|
||||
<enumerator ID="0x09" name="Left Trigger" />
|
||||
<enumerator ID="0x0A" name="Right Trigger" />
|
||||
<enumerator ID="0x0B" name="D-Pad Up" />
|
||||
<enumerator ID="0x0C" name="D-Pad Down" />
|
||||
<enumerator ID="0x0D" name="D-Pad Left" />
|
||||
<enumerator ID="0x0E" name="D-Pad Right" />
|
||||
<enumerator ID="0x0F" name="A Button" />
|
||||
<enumerator ID="0x10" name="B Button" />
|
||||
<enumerator ID="0x11" name="X Button" />
|
||||
<enumerator ID="0x12" name="Y Button" />
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<enum name="InventorySlot">
|
||||
<enumerators>
|
||||
<enumerator ID="0x0" name="Power Beam"/>
|
||||
<enumerator ID="0x1" name="Ice Beam"/>
|
||||
<enumerator ID="0x2" name="Wave Beam"/>
|
||||
<enumerator ID="0x3" name="Plasma Beam"/>
|
||||
<enumerator ID="0x4" name="Missile"/>
|
||||
<enumerator ID="0x5" name="Scan Visor"/>
|
||||
<enumerator ID="0x6" name="Morph Ball Bomb"/>
|
||||
<enumerator ID="0x7" name="Power Bomb"/>
|
||||
<enumerator ID="0x8" name="Flamethrower"/>
|
||||
<enumerator ID="0x9" name="Thermal Visor"/>
|
||||
<enumerator ID="0xA" name="Charge Beam"/>
|
||||
<enumerator ID="0xB" name="Super Missile"/>
|
||||
<enumerator ID="0xC" name="Grapple Beam"/>
|
||||
<enumerator ID="0xD" name="X-Ray Visor"/>
|
||||
<enumerator ID="0xE" name="Ice Spreader"/>
|
||||
<enumerator ID="0xF" name="Space Jump Boots"/>
|
||||
<enumerator ID="0x00" name="Power Beam"/>
|
||||
<enumerator ID="0x01" name="Ice Beam"/>
|
||||
<enumerator ID="0x02" name="Wave Beam"/>
|
||||
<enumerator ID="0x03" name="Plasma Beam"/>
|
||||
<enumerator ID="0x04" name="Missile"/>
|
||||
<enumerator ID="0x05" name="Scan Visor"/>
|
||||
<enumerator ID="0x06" name="Morph Ball Bomb"/>
|
||||
<enumerator ID="0x07" name="Power Bomb"/>
|
||||
<enumerator ID="0x08" name="Flamethrower"/>
|
||||
<enumerator ID="0x09" name="Thermal Visor"/>
|
||||
<enumerator ID="0x0A" name="Charge Beam"/>
|
||||
<enumerator ID="0x0B" name="Super Missile"/>
|
||||
<enumerator ID="0x0C" name="Grapple Beam"/>
|
||||
<enumerator ID="0x0D" name="X-Ray Visor"/>
|
||||
<enumerator ID="0x0E" name="Ice Spreader"/>
|
||||
<enumerator ID="0x0F" name="Space Jump Boots"/>
|
||||
<enumerator ID="0x10" name="Morph Ball"/>
|
||||
<enumerator ID="0x11" name="Combat Visor"/>
|
||||
<enumerator ID="0x12" name="Boost Ball"/>
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<?xml version="1.0" ?>
|
||||
<enum name="PlayerAction">
|
||||
<enumerator ID="0x0" name="Forward" />
|
||||
<enumerator ID="0x1" name="Backward" />
|
||||
<enumerator ID="0x2" name="Turn Left" />
|
||||
<enumerator ID="0x3" name="Turn Right" />
|
||||
<enumerator ID="0x4" name="Strafe Left" />
|
||||
<enumerator ID="0x5" name="Strafe Right" />
|
||||
<enumerator ID="0x6" name="Look Left" />
|
||||
<enumerator ID="0x7" name="Look Right" />
|
||||
<enumerator ID="0x8" name="Look Up" />
|
||||
<enumerator ID="0x9" name="Look Down" />
|
||||
<enumerator ID="0xA" name="Jump/Boost" />
|
||||
<enumerator ID="0xB" name="Fire/Bomb" />
|
||||
<enumerator ID="0xC" name="Missile/PowerBomb" />
|
||||
<enumerator ID="0xD" name="Morph" />
|
||||
<enumerator ID="0xE" name="Aim Up" />
|
||||
<enumerator ID="0xF" ame="Aim Down" />
|
||||
<enumerator ID="0x00" name="Forward" />
|
||||
<enumerator ID="0x01" name="Backward" />
|
||||
<enumerator ID="0x02" name="Turn Left" />
|
||||
<enumerator ID="0x03" name="Turn Right" />
|
||||
<enumerator ID="0x04" name="Strafe Left" />
|
||||
<enumerator ID="0x05" name="Strafe Right" />
|
||||
<enumerator ID="0x06" name="Look Left" />
|
||||
<enumerator ID="0x07" name="Look Right" />
|
||||
<enumerator ID="0x08" name="Look Up" />
|
||||
<enumerator ID="0x09" name="Look Down" />
|
||||
<enumerator ID="0x0A" name="Jump/Boost" />
|
||||
<enumerator ID="0x0B" name="Fire/Bomb" />
|
||||
<enumerator ID="0x0C" name="Missile/PowerBomb" />
|
||||
<enumerator ID="0x0D" name="Morph" />
|
||||
<enumerator ID="0x0E" name="Aim Up" />
|
||||
<enumerator ID="0x0F" ame="Aim Down" />
|
||||
<enumerator ID="0x10" name="Cycle Beam Up" />
|
||||
<enumerator ID="0x11" name="Cycle Beam Down" />
|
||||
<enumerator ID="0x12" name="Cycle Item" />
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<enum name="SpecialFunctionType">
|
||||
<enumerators>
|
||||
<enumerator ID="0x0" name="What"/>
|
||||
<enumerator ID="0x1" name="Player Follow Locator"/>
|
||||
<enumerator ID="0x2" name="Spinner Controller"/>
|
||||
<enumerator ID="0x3" name="Object Follow Locator"/>
|
||||
<enumerator ID="0x4" name="Function 4"/>
|
||||
<enumerator ID="0x5" name="Inventory Activator"/>
|
||||
<enumerator ID="0x6" name="Map Station"/>
|
||||
<enumerator ID="0x7" name="Save Station"/>
|
||||
<enumerator ID="0x8" name="Intro Boss Ring Controller"/>
|
||||
<enumerator ID="0x9" name="View Frustum Tester (Unused)"/>
|
||||
<enumerator ID="0xA" name="Shot Spinner Controller"/>
|
||||
<enumerator ID="0xB" name="Escape Sequence"/>
|
||||
<enumerator ID="0xC" name="Boss Energy Bar"/>
|
||||
<enumerator ID="0xD" name="End Game"/>
|
||||
<enumerator ID="0xE" name="HUD Fade In"/>
|
||||
<enumerator ID="0xF" name="Cinematic Skip"/>
|
||||
<enumerator ID="0x00" name="What"/>
|
||||
<enumerator ID="0x01" name="Player Follow Locator"/>
|
||||
<enumerator ID="0x02" name="Spinner Controller"/>
|
||||
<enumerator ID="0x03" name="Object Follow Locator"/>
|
||||
<enumerator ID="0x04" name="Function 4"/>
|
||||
<enumerator ID="0x05" name="Inventory Activator"/>
|
||||
<enumerator ID="0x06" name="Map Station"/>
|
||||
<enumerator ID="0x07" name="Save Station"/>
|
||||
<enumerator ID="0x08" name="Intro Boss Ring Controller"/>
|
||||
<enumerator ID="0x09" name="View Frustum Tester (Unused)"/>
|
||||
<enumerator ID="0x0A" name="Shot Spinner Controller"/>
|
||||
<enumerator ID="0x0B" name="Escape Sequence"/>
|
||||
<enumerator ID="0x0C" name="Boss Energy Bar"/>
|
||||
<enumerator ID="0x0D" name="End Game"/>
|
||||
<enumerator ID="0x0E" name="HUD Fade In"/>
|
||||
<enumerator ID="0x0F" name="Cinematic Skip"/>
|
||||
<enumerator ID="0x10" name="Script Layer Controller"/>
|
||||
<enumerator ID="0x11" name="Rain Simulator"/>
|
||||
<enumerator ID="0x12" name="Area Damage"/>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<enum name="VulnerabilityType">
|
||||
<enumerators>
|
||||
<enumerator ID="0x0" name="Double Damage"/>
|
||||
<enumerator ID="0x1" name="Normal"/>
|
||||
<enumerator ID="0x2" name="Reflect"/>
|
||||
<enumerator ID="0x3" name="Immune"/>
|
||||
<enumerator ID="0x4" name="Pass Through"/>
|
||||
<enumerator ID="0x5" name="Direct/Double"/>
|
||||
<enumerator ID="0x6" name="Direct"/>
|
||||
<enumerator ID="0x00" name="Double Damage"/>
|
||||
<enumerator ID="0x01" name="Normal"/>
|
||||
<enumerator ID="0x02" name="Reflect"/>
|
||||
<enumerator ID="0x03" name="Immune"/>
|
||||
<enumerator ID="0x04" name="Pass Through"/>
|
||||
<enumerator ID="0x05" name="Direct/Double"/>
|
||||
<enumerator ID="0x06" name="Direct"/>
|
||||
</enumerators>
|
||||
</enum>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<enum name="WeaponType">
|
||||
<enumerators>
|
||||
<enumerator ID="0x0" name="Power"/>
|
||||
<enumerator ID="0x1" name="Ice"/>
|
||||
<enumerator ID="0x2" name="Wave"/>
|
||||
<enumerator ID="0x3" name="Plasma"/>
|
||||
<enumerator ID="0x4" name="Bomb"/>
|
||||
<enumerator ID="0x5" name="Power Bomb"/>
|
||||
<enumerator ID="0x6" name="Missile"/>
|
||||
<enumerator ID="0x7" name="Boost Ball"/>
|
||||
<enumerator ID="0x8" name="Phazon"/>
|
||||
<enumerator ID="0x9" name="Enemy Weapon 1"/>
|
||||
<enumerator ID="0xA" name="Enemy Weapon 2 (Poison)"/>
|
||||
<enumerator ID="0xB" name="Enemy Weapon 3 (Lava)"/>
|
||||
<enumerator ID="0xC" name="Enemy Weapon 4"/>
|
||||
<enumerator ID="0xD" name="Unknown Weapon 1"/>
|
||||
<enumerator ID="0xE" name="Unknown Weapon 2"/>
|
||||
<enumerator ID="0x00" name="Power"/>
|
||||
<enumerator ID="0x01" name="Ice"/>
|
||||
<enumerator ID="0x02" name="Wave"/>
|
||||
<enumerator ID="0x03" name="Plasma"/>
|
||||
<enumerator ID="0x04" name="Bomb"/>
|
||||
<enumerator ID="0x05" name="Power Bomb"/>
|
||||
<enumerator ID="0x06" name="Missile"/>
|
||||
<enumerator ID="0x07" name="Boost Ball"/>
|
||||
<enumerator ID="0x08" name="Phazon"/>
|
||||
<enumerator ID="0x09" name="Enemy Weapon 1"/>
|
||||
<enumerator ID="0x0A" name="Enemy Weapon 2 (Poison)"/>
|
||||
<enumerator ID="0x0B" name="Enemy Weapon 3 (Lava)"/>
|
||||
<enumerator ID="0x0C" name="Enemy Weapon 4"/>
|
||||
<enumerator ID="0x0D" name="Unknown Weapon 1"/>
|
||||
<enumerator ID="0x0E" name="Unknown Weapon 2"/>
|
||||
</enumerators>
|
||||
</enum>
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
<property ID="0x03" name="Active" type="bool"/>
|
||||
<property ID="0x04" name="Unknown 1" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 5" type="long"/>
|
||||
<property ID="0x06" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
<property ID="0x16" name="Unknown 13" type="bool"/>
|
||||
<property ID="0x17" name="Unknown 14" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<struct ID="0x0D" name="DamageInfo" template="Structs/DamageInfo.xml"/>
|
||||
<property ID="0x0E" name="Unknown 4" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 5" type="long"/>
|
||||
<property ID="0x06" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<property ID="0x04" name="Unknown 2" type="bool"/>
|
||||
<property ID="0x05" name="Active" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
<property ID="0x0E" name="Unknown 6" type="long"/>
|
||||
<property ID="0x0F" name="Unknown 7" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="Skybox Model" type="file" extensions="CMDL"/>
|
||||
<property ID="0x08" name="Unknown 7" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties/>
|
||||
<assets>
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
<property ID="0x0C" name="Unknown 4" type="bool"/>
|
||||
<property ID="0x0D" name="Unknown 5" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
<property ID="0x13" name="Unknown 9" type="long"/>
|
||||
<property ID="0x14" name="Unknown 10" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
<property ID="0x1F" name="Unknown 11" type="long"/>
|
||||
<property ID="0x20" name="Particle 6" type="file" extensions="PART"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="Unknown 5" type="vector3f"/>
|
||||
<property ID="0x08" name="Unknown 6" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
<property ID="0x0E" name="Unknown 5" type="float"/>
|
||||
<property ID="0x0F" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<property ID="0x10" name="Particle 5" type="file" extensions="PART"/>
|
||||
<property ID="0x11" name="Unknown 2" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
<property ID="0x0B" name="Always FFFFFFFF" type="long"/>
|
||||
<property ID="0x0C" name="Particle 4" type="file" extensions="PART"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<property ID="0x0D" name="Unknown 11" type="bool"/>
|
||||
<property ID="0x0E" name="Unknown 12" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 5" type="float"/>
|
||||
<property ID="0x06" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
<property ID="0x08" name="Unknown 8" type="float"/>
|
||||
<property ID="0x09" name="Texture" type="file" extensions="TXTR"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -101,6 +101,8 @@
|
|||
<property ID="0x15" name="Unknown 50" type="float"/>
|
||||
<property ID="0x16" name="Unknown 51" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 2" type="bool"/>
|
||||
<property ID="0x06" name="Unknown 3" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
<property ID="0x06" name="Unknown 3" type="float"/>
|
||||
<property ID="0x07" name="Unknown 4" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="Unknown 7" type="float"/>
|
||||
<property ID="0x08" name="Unknown 8" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<property ID="0x04" name="Unknown 2" type="float"/>
|
||||
<property ID="0x05" name="Unknown 3" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
<property ID="0x1D" name="Unknown 12" type="long"/>
|
||||
<property ID="0x1E" name="Unknown 13" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<property ID="0x0A" name="Unknown 10" type="bool"/>
|
||||
<property ID="0x0B" name="Unknown 11" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
<property ID="0x02" name="Unknown 2" type="long"/>
|
||||
<property ID="0x03" name="Unknown 3" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
<property ID="0x03" name="Unknown 1" type="bool"/>
|
||||
<property ID="0x04" name="Unknown 2" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="Unknown 5" type="float"/>
|
||||
<property ID="0x08" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
<struct ID="0x04" name="DamageVulnerability" template="Structs/DamageVulnerability.xml"/>
|
||||
<enum ID="0x05" name="Render Side">
|
||||
<enumerators>
|
||||
<enumerator ID="0x0" name="Don't Render"/>
|
||||
<enumerator ID="0x1" name="North"/>
|
||||
<enumerator ID="0x2" name="South"/>
|
||||
<enumerator ID="0x4" name="West"/>
|
||||
<enumerator ID="0x8" name="East"/>
|
||||
<enumerator ID="0x00" name="Don't Render"/>
|
||||
<enumerator ID="0x01" name="North"/>
|
||||
<enumerator ID="0x02" name="South"/>
|
||||
<enumerator ID="0x04" name="West"/>
|
||||
<enumerator ID="0x08" name="East"/>
|
||||
<enumerator ID="0x10" name="Top"/>
|
||||
<enumerator ID="0x20" name="Bottom"/>
|
||||
</enumerators>
|
||||
|
@ -25,6 +25,8 @@
|
|||
<property ID="0x0A" name="Active" type="bool"/>
|
||||
<struct ID="0x0B" name="VisorParameters" template="Structs/VisorParameters.xml"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<property ID="0x10" name="Unknown 10" type="bool"/>
|
||||
<property ID="0x11" name="Unknown 11" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
<property ID="0x25" name="Unknown 29" type="bool"/>
|
||||
<property ID="0x26" name="Unknown 30" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
<property ID="0x02" name="Rotation" type="vector3f"/>
|
||||
<property ID="0x03" name="Unknown 1" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<property ID="0x06" name="Unknown 8" type="bool"/>
|
||||
<property ID="0x07" name="Unknown 9" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Room Number" type="long"/>
|
||||
<property ID="0x06" name="Load Automatically?" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
<property ID="0x01" name="Unknown 1" type="long"/>
|
||||
<property ID="0x02" name="Unknown 2" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
<property ID="0x0C" name="Unknown 7" type="float"/>
|
||||
<property ID="0x0D" name="Unknown 8" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -48,6 +48,8 @@
|
|||
<property ID="0x2B" name="Sound?" type="long"/>
|
||||
<property ID="0x2C" name="Unknown 30" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
<property ID="0x16" name="Unknown 17" type="bool"/>
|
||||
<struct ID="0x17" name="LightParameters" template="Structs/LightParameters.xml"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<property ID="0x0A" name="Unknown 8" type="float"/>
|
||||
<property ID="0x0B" name="Particle" type="file" extensions="PART"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -45,6 +45,8 @@
|
|||
<property ID="0x28" name="Unknown 17" type="bool"/>
|
||||
<property ID="0x29" name="Unknown 18" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<struct ID="0x12" name="DamageInfo 2" template="Structs/DamageInfo.xml"/>
|
||||
<property ID="0x13" name="Unknown 6" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
<property ID="0x02" name="Unknown 2" type="float"/>
|
||||
<property ID="0x03" name="Unknown 3" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
<property ID="0x13" name="Unknown 5" type="long"/>
|
||||
<property ID="0x14" name="Unknown 6" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="Unknown 2" type="bool"/>
|
||||
<property ID="0x08" name="Unknown 3" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
<property ID="0x22" name="Unknown 29" type="bool"/>
|
||||
<property ID="0x23" name="Unknown 30" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 4" type="float"/>
|
||||
<property ID="0x06" name="Unknown 5" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<property ID="0x15" name="AnimationParameters" type="character"/>
|
||||
<property ID="0x16" name="DGRP" type="file" extensions="DGRP"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<struct ID="0x04" name="PatternedInfo" template="Structs/PatternedInfo.xml"/>
|
||||
<struct ID="0x05" name="ActorParameters" template="Structs/ActorParameters.xml"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
<property ID="0x08" name="Unknown 3" type="bool"/>
|
||||
<property ID="0x09" name="Unknown 4" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
<property ID="0x22" name="Unknown 19" type="float"/>
|
||||
<property ID="0x23" name="Unknown 20" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
<property ID="0x05" name="Unknown 3" type="color"/>
|
||||
<property ID="0x06" name="Unknown 4" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
<property ID="0x0E" name="Unknown 9" type="long"/>
|
||||
<property ID="0x0F" name="Unknown 10" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
<property ID="0x06" name="Unknown 6" type="float"/>
|
||||
<property ID="0x07" name="Unknown 7" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
<property ID="0x03" name="Active" type="bool"/>
|
||||
<struct ID="0x04" name="GrappleParameters" template="Structs/GrappleParameters.xml"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -51,6 +51,8 @@
|
|||
<property ID="0x2E" name="Unknown 29" type="float"/>
|
||||
<property ID="0x2F" name="Unknown 30" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -7,13 +7,15 @@
|
|||
<property ID="0x02" name="Unknown 1" type="bool"/>
|
||||
<enum ID="0x03" name="Memo Type">
|
||||
<enumerators>
|
||||
<enumerator ID="0x00000000" name="Status Message"/>
|
||||
<enumerator ID="0x00000001" name="Message Box"/>
|
||||
<enumerator ID="0x00" name="Status Message"/>
|
||||
<enumerator ID="0x01" name="Message Box"/>
|
||||
</enumerators>
|
||||
</enum>
|
||||
<property ID="0x04" name="STRG" type="file" extensions="STRG"/>
|
||||
<property ID="0x05" name="Active" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -40,6 +40,8 @@
|
|||
<property ID="0x23" name="Unknown 12" type="bool"/>
|
||||
<property ID="0x24" name="Unknown 13" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
<struct ID="0x0E" name="DamageVulnerability" template="Structs/DamageVulnerability.xml"/>
|
||||
<property ID="0x0F" name="Unknown 9" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<property ID="0x12" name="Unknown 12" type="float"/>
|
||||
<property ID="0x13" name="Unknown 13" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
<property ID="0x14" name="Unknown 13" type="float"/>
|
||||
<property ID="0x15" name="Unknown 14" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
<property ID="0x08" name="Unknown 6" type="vector3f"/>
|
||||
<property ID="0x09" name="Unknown 7" type="vector3f"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
<property ID="0x01" name="Unknown 1" type="bool"/>
|
||||
<property ID="0x02" name="Active" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<property ID="0x0A" name="Unknown 4" type="float"/>
|
||||
<property ID="0x0B" name="Unknown 5" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<property ID="0x12" name="AnimationParameters 4" type="character"/>
|
||||
<property ID="0x13" name="Unknown 8" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
<property ID="0x15" name="Particle 4" type="file" extensions="PART"/>
|
||||
<property ID="0x16" name="Unknown 10" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -77,6 +77,8 @@
|
|||
</properties>
|
||||
</struct>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x01"/>
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
<property ID="0x09" name="Unknown 1" type="long"/>
|
||||
<property ID="0x0A" name="Particle 2" type="file" extensions="PART"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<property ID="0x04" name="Unknown 3" type="float"/>
|
||||
<property ID="0x05" name="Unknown 4" type="long"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -72,6 +72,8 @@
|
|||
</properties>
|
||||
</struct>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
<property ID="0x0B" name="Texture 1" type="file" extensions="TXTR"/>
|
||||
<property ID="0x0C" name="Texture 2" type="file" extensions="TXTR"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<property ID="0x0D" name="Unknown 7" type="float"/>
|
||||
<struct ID="0x0E" name="DamageInfo" template="Structs/DamageInfo.xml"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -48,6 +48,8 @@
|
|||
<property ID="0x2B" name="CSKR" type="file" extensions="CSKR"/>
|
||||
<property ID="0x2C" name="CINF" type="file" extensions="CINF"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -28,6 +28,8 @@
|
|||
<property ID="0x17" name="Unknown 18" type="float"/>
|
||||
<property ID="0x18" name="Unknown 19" type="bool"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<property ID="0x09" name="Unknown 12" type="float"/>
|
||||
<property ID="0x0A" name="Unknown 13" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
<property ID="0x07" name="ELSC" type="file" extensions="ELSC"/>
|
||||
<property ID="0x08" name="Unknown 2" type="string"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<property ID="0x10" name="Unknown 8" type="bool"/>
|
||||
<property ID="0x11" name="Unknown 9" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
<property ID="0x10" name="Unknown 1" type="float"/>
|
||||
<property ID="0x11" name="Particle" type="file" extensions="PART"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
<property ID="0x02" name="Active" type="bool"/>
|
||||
<property ID="0x03" name="Frequency" type="float"/>
|
||||
</properties>
|
||||
<states/>
|
||||
<messages/>
|
||||
<editor>
|
||||
<properties>
|
||||
<property name="InstanceName" ID="0x00"/>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue