void EnumerateChunksReadObjectFoundBuildIncompatibility(BlobSystem blobSystem, BlobChunkHeader header, BlobGroup blobGroup, Engine.EngineBuildHandle buildForBlobVersion, Engine.EngineBuildHandle actualBuild) { throw new InvalidOperationException(string.Format( "Build incompatibility for chunk {0} v{1} sizeof({2}) which uses build={3} " + "but we're using build={4} for {5}", blobGroup.GroupTag.TagString, header.Version, header.DataSize, buildForBlobVersion.ToDisplayString(), actualBuild.ToDisplayString(), UnderlyingStream.StreamName)); }
internal static ContentHeader Create(Engine.EngineBuildHandle gameBuild) { if (gameBuild.IsWithinSameBranch(Engine.EngineRegistry.EngineBranchHaloReach)) return new Games.HaloReach.RuntimeData.ContentHeaderHaloReach(gameBuild); if (gameBuild.IsWithinSameBranch(Engine.EngineRegistry.EngineBranchHalo4)) return new Games.Halo4.RuntimeData.ContentHeaderHalo4(gameBuild); throw new KSoft.Debug.UnreachableException(gameBuild.ToDisplayString()); }
static Exception SerializeObjectFoundBuildIncompatibility(BlobSystem blobSystem, BlobGroup blobGroup, int version, Engine.EngineBuildHandle buildForBlobVersion, Engine.EngineBuildHandle actualBuild) { var msg = string.Format( "Build incompatibility for blob object {0} v{1} which uses build={2} " + "but stream uses build={3}", blobGroup.GroupTag.TagString, version, buildForBlobVersion.ToDisplayString(), actualBuild.ToDisplayString()); return(new System.IO.InvalidDataException(msg)); }
public static ContentMiniMetadata Create(Engine.EngineBuildHandle gameBuild) { if (gameBuild.IsWithinSameBranch(Engine.EngineRegistry.EngineBranchHaloReach)) { return(new Games.HaloReach.RuntimeData.ContentMiniMetadataHaloReach(gameBuild)); } if (gameBuild.IsWithinSameBranch(Engine.EngineRegistry.EngineBranchHalo4)) { return(new Games.Halo4.RuntimeData.ContentMiniMetadataHalo4(gameBuild)); } throw new KSoft.Debug.UnreachableException(gameBuild.ToDisplayString()); }
static async Task <T> GetDatabaseAsync <T>(Engine.EngineBuildHandle forBuild, string dbTypeName, GetDatabasePathFunc getPathFunc, Dictionary <string, T> loadedDbs, Func <Engine.EngineBuildHandle, T> ctor) where T : class, IO.ITagElementStringNameStreamable { Contract.Requires/*<ArgumentNullException>*/ (!forBuild.IsNone); Contract.Requires(!string.IsNullOrEmpty(dbTypeName)); Contract.Requires(getPathFunc != null); Contract.Requires(loadedDbs != null); Engine.EngineBuildHandle actual_build; string path = getPathFunc(forBuild, out actual_build); if (path == null) { throw new InvalidOperationException(string.Format( "Tried to get the megalo {0} database for {1} when a build file wasn't defined for it", dbTypeName, forBuild.ToDisplayString())); } T db; lock (loadedDbs) loadedDbs.TryGetValue(path, out db); if (db == null) { db = ctor(actual_build); lock (loadedDbs) loadedDbs[path] = db; await Task.Run(() => LoadDatabase(db, path)); } return(db); }