public static Movie Parse(BinaryReader reader, AptFile container) { var movie = new Movie(); movie.Frames = reader.ReadListAtOffset <Frame>(() => Frame.Parse(reader)); var unknown = reader.ReadUInt32(); movie.Characters = reader.ReadListAtOffset <Character>(() => Character.Create(reader, container), true); movie.ScreenWidth = reader.ReadUInt32(); movie.ScreenHeight = reader.ReadUInt32(); movie.MillisecondsPerFrame = reader.ReadUInt32(); movie.Imports = reader.ReadListAtOffset <Import>(() => Import.Parse(reader)); movie.Exports = reader.ReadListAtOffset <Export>(() => Export.Parse(reader)); return(movie); }
public static Movie CreateEmpty(AptFile container, int width, int height, int millisecondsPerFrame) { if (container.Movie != null) { throw new ArgumentException("AptFile already has a Movie"); } var movie = new Movie { Frames = new List <Frame>(), Characters = new List <Character>(), Imports = new List <Import>(), Exports = new List <Export>(), ScreenWidth = (uint)width, ScreenHeight = (uint)height, MillisecondsPerFrame = (uint)millisecondsPerFrame }; movie.Characters.Add(movie); movie.Container = container; return(movie); }
public static Shape Create(AptFile container, uint geometryId) { if (!container.GeometryMap.TryGetValue(geometryId, out var geometry)) { throw new ArgumentException(null, nameof(geometryId)); } var box = geometry.BoundingBox; var bounds = new Vector4 { X = box.Left, Y = box.Top, Z = box.Right, W = box.Bottom }; return(new Shape { Container = container, Bounds = bounds, Geometry = geometryId }); }
protected override AptWindow LoadEntry(FileSystemEntry entry, ContentManager contentManager, Game game, LoadOptions loadOptions) { var aptFile = AptFile.FromFileSystemEntry(entry); return(AddDisposable(new AptWindow(game, contentManager, aptFile))); }
public static Character Create(BinaryReader reader, AptFile container) { Character character = null; var type = reader.ReadUInt32AsEnum <CharacterType>(); var sig = reader.ReadUInt32(); if (sig != SIGNATURE) { throw new InvalidDataException(); } switch (type) { //must be the root object. Movie does contain itself so, do a simple check case CharacterType.Movie: if (container.IsEmpty) { container.IsEmpty = false; character = Movie.Parse(reader, container); } else { return(null); } break; case CharacterType.Shape: character = Shape.Parse(reader); break; case CharacterType.Text: character = Text.Parse(reader); break; case CharacterType.Font: character = Font.Parse(reader); break; case CharacterType.Button: character = Button.Parse(reader); break; case CharacterType.Sprite: character = Sprite.Parse(reader); break; case CharacterType.Sound: throw new NotImplementedException("Not used in any known game"); case CharacterType.Image: break; case CharacterType.Morph: //used only by CahPowers break; case CharacterType.StaticText: break; case CharacterType.None: throw new NotImplementedException("Not used in any known game"); case CharacterType.Video: throw new NotImplementedException("Not used in any known game"); default: throw new NotImplementedException(); } if (character != null) { character.Container = container; } return(character); }
public AptEditManager(AptFile aptFile) { AptFile = aptFile; }
internal GuiWindow(AptFile wndFile) { }