예제 #1
0
 public GameContent(string[] wadPaths)
 {
     wad       = new Wad(wadPaths);
     palette   = new Palette(wad);
     colorMap  = new ColorMap(wad);
     textures  = new TextureLookup(wad);
     flats     = new FlatLookup(wad);
     sprites   = new SpriteLookup(wad);
     animation = new TextureAnimation(textures, flats);
 }
예제 #2
0
 public CommonResource(params string[] wadPaths)
 {
     try
     {
         wad       = new Wad(wadPaths);
         palette   = new Palette(wad);
         colorMap  = new ColorMap(wad);
         textures  = new TextureLookup(wad);
         flats     = new FlatLookup(wad);
         sprites   = new SpriteLookup(wad);
         animation = new TextureAnimation(textures, flats);
     }
     catch (Exception e)
     {
         ExceptionDispatchInfo.Throw(e);
     }
 }
예제 #3
0
        public CommonResource(string[] wadPaths, bool loadDehLump)
        {
            try
            {
                wad = new Wad(wadPaths);

                if (loadDehLump)
                {
                    DeHackEd.ReadDeHackEdLump(wad);
                }

                palette   = new Palette(wad);
                colorMap  = new ColorMap(wad);
                textures  = new TextureLookup(wad);
                flats     = new FlatLookup(wad);
                sprites   = new SpriteLookup(wad);
                animation = new TextureAnimation(textures, flats);
            }
            catch (Exception e)
            {
                ExceptionDispatchInfo.Throw(e);
            }
        }
예제 #4
0
        public Map(Wad wad, ITextureLookup textures, IFlatLookup flats, TextureAnimation animation, World world)
        {
            try
            {
                this.textures  = textures;
                this.flats     = flats;
                this.animation = animation;
                this.world     = world;

                var options = world.Options;

                string name;
                if (wad.GameMode == GameMode.Commercial)
                {
                    name = "MAP" + options.Map.ToString("00");
                }
                else
                {
                    name = "E" + options.Episode + "M" + options.Map;
                }

                Console.Write("Load map '" + name + "': ");

                var map = wad.GetLumpNumber(name);

                if (map == -1)
                {
                    throw new Exception("Map '" + name + "' was not found!");
                }

                vertices   = Vertex.FromWad(wad, map + 4);
                sectors    = Sector.FromWad(wad, map + 8, flats);
                sides      = SideDef.FromWad(wad, map + 3, textures, sectors);
                lines      = LineDef.FromWad(wad, map + 2, vertices, sides);
                segs       = Seg.FromWad(wad, map + 5, vertices, lines);
                subsectors = Subsector.FromWad(wad, map + 6, segs);
                nodes      = Node.FromWad(wad, map + 7, subsectors);
                things     = MapThing.FromWad(wad, map + 1);
                blockMap   = BlockMap.FromWad(wad, map + 10, lines);
                reject     = Reject.FromWad(wad, map + 9, sectors);

                GroupLines();

                skyTexture = GetSkyTextureByMapName(name);

                if (options.GameMode == GameMode.Commercial)
                {
                    switch (options.MissionPack)
                    {
                    case MissionPack.Plutonia:
                        title = DoomInfo.MapTitles.Plutonia[options.Map - 1];
                        break;

                    case MissionPack.Tnt:
                        title = DoomInfo.MapTitles.Tnt[options.Map - 1];
                        break;

                    default:
                        title = DoomInfo.MapTitles.Doom2[options.Map - 1];
                        break;
                    }
                }
                else
                {
                    title = DoomInfo.MapTitles.Doom[options.Episode - 1][options.Map - 1];
                }

                Console.WriteLine("OK");
            }
            catch (Exception e)
            {
                Console.WriteLine("Failed");
                ExceptionDispatchInfo.Throw(e);
            }
        }