Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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
            });
        }
Example #4
0
        protected override AptWindow LoadEntry(FileSystemEntry entry, ContentManager contentManager, Game game, LoadOptions loadOptions)
        {
            var aptFile = AptFile.FromFileSystemEntry(entry);

            return(AddDisposable(new AptWindow(game, contentManager, aptFile)));
        }
Example #5
0
        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);
        }
Example #6
0
 public AptEditManager(AptFile aptFile)
 {
     AptFile = aptFile;
 }
Example #7
0
 internal GuiWindow(AptFile wndFile)
 {
 }