From cd9b54b3b8751c0097df295e15cb8cff8cf28693 Mon Sep 17 00:00:00 2001 From: dexy Date: Thu, 20 Dec 2018 13:38:39 +1100 Subject: [PATCH] Fixed file corruption when saving ytyps with CMloTimeCycleModifiers --- .../GameFiles/FileTypes/YtypFile.cs | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/CodeWalker.Core/GameFiles/FileTypes/YtypFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YtypFile.cs index 7160363..5911783 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YtypFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YtypFile.cs @@ -90,7 +90,7 @@ namespace CodeWalker.GameFiles m._MloArchetypeDef._MloArchetypeDef.rooms = mb.AddWrapperArray(m.rooms); m._MloArchetypeDef._MloArchetypeDef.portals = mb.AddWrapperArray(m.portals); m._MloArchetypeDef._MloArchetypeDef.entitySets = mb.AddWrapperArray(m.entitySets); - m._MloArchetypeDef._MloArchetypeDef.timeCycleModifiers = mb.AddItemArrayPtr(MetaName.CTimeCycleModifier, m.timeCycleModifiers); + m._MloArchetypeDef._MloArchetypeDef.timeCycleModifiers = mb.AddItemArrayPtr(MetaName.CMloTimeCycleModifier, m.timeCycleModifiers); } catch/* (Exception e)*/ { @@ -126,19 +126,22 @@ namespace CodeWalker.GameFiles mapTypes.dependencies = new Array_uint(); // is this never used? possibly a todo? mb.AddStructureInfo(MetaName.CMapTypes); - mb.AddStructureInfo(MetaName.CBaseArchetypeDef); - mb.AddStructureInfo(MetaName.CMloArchetypeDef); - mb.AddStructureInfo(MetaName.CTimeArchetypeDef); - mb.AddStructureInfo(MetaName.CCompositeEntityType); - mb.AddStructureInfo(MetaName.CMloRoomDef); - mb.AddStructureInfo(MetaName.CMloPortalDef); - mb.AddStructureInfo(MetaName.CMloEntitySet); if ((AllArchetypes != null && AllArchetypes.Length > 0)) { + mb.AddStructureInfo(MetaName.CBaseArchetypeDef); mb.AddEnumInfo((MetaName)1991964615); // ASSET_TYPE_ } + if ((AllArchetypes != null) && (AllArchetypes.Any(x => x is MloArchetype))) + { + mb.AddStructureInfo(MetaName.CMloArchetypeDef); + mb.AddStructureInfo(MetaName.CMloRoomDef); + mb.AddStructureInfo(MetaName.CMloPortalDef); + mb.AddStructureInfo(MetaName.CMloEntitySet); + mb.AddStructureInfo(MetaName.CMloTimeCycleModifier); + } + if ((AllArchetypes != null) && (AllArchetypes.Any(x => x is MloArchetype m && m.entities.Length > 0))) { mb.AddStructureInfo(MetaName.CEntityDef); @@ -146,6 +149,17 @@ namespace CodeWalker.GameFiles mb.AddEnumInfo((MetaName)648413703); //PRI_ } + if ((AllArchetypes != null) && (AllArchetypes.Any(x => x is TimeArchetype))) + { + mb.AddStructureInfo(MetaName.CTimeArchetypeDef); + } + + if (CompositeEntityTypes?.Length > 0) + { + mb.AddStructureInfo(MetaName.CCompositeEntityType); + } + + mb.AddItem(MetaName.CMapTypes, mapTypes); Meta meta = mb.GetMeta();