public Tilemap(int w, int h, Tilemap ft)
        {
            cmap = new CityMap(w, h);
            map = new Tile[w, h];
            fog = new Fog(w, h);
            name = ft.name;

            startpos = new Point(ft.startpos.X, ft.startpos.Y);

            for (int i = 0; i < w; i++)
                for (int e = 0; e < h; e++)
                {
                    if (i < ft.NumX && e < ft.NumY)
                    {
                        map[i, e] = ft.get(i, e);
                        fog.set(i, e, ft.Fog.get(i, e));
                        cmap.set(i, e, ft.CityMap.get(i, e));
                    }
                    else if (i < w && e < h)
                    {
                        map[i, e] = new Tile();
                        fog.set(i, e, false);
                    }
                }
        }
        public Tilemap(int w, int h)
        {
            cmap = new CityMap(w, h);
            startpos = new Point();
            map=new Tile[w,h];
            fog = new Fog(w, h);

            for(int i=0; i<w; i++)
                for (int e = 0; e < h; e++)
                {
                    map[i, e] = new Tile(Tile.TileType.PLAIN);
                }
        }
        public Tilemap()
        {
            int w = 30;
            int h = 20;

            map = new Tile[w, h];

            Random r = new Random();

            Tilemap g = new Tilemap("green");
            Tilemap b = new Tilemap("blue");

            for (int e = 0; e < h; e++)
                for (int i = 0; i < w; i++)
                {
                    map[i, e] = new Tile((Tile.TileType)r.Next(6));

                    if (map[i, e].Type == Tile.TileType.FOREST)
                        map[i, e].Region = g;
                    else if (map[i, e].Type == Tile.TileType.WATER)
                        map[i, e].Region = b;
                }
        }
        public void load(String path)
        {
            name = Path.GetFileNameWithoutExtension(path);

            if (!VersionSys.match(path, vi))
                throw new Exception("File is not a Forgotten Schism Map file v1.0");

            FileStream fin = new FileStream(path, FileMode.Open);

            fin.Seek(12, SeekOrigin.Begin);

            startpos.X = fin.ReadByte();
            startpos.Y = fin.ReadByte();

            //map width and height
            int w = fin.ReadByte();
            int h = fin.ReadByte();

            map=new Tile[w,h];
            fog = new Fog(w, h);

            if(cmap==null)
                cmap = new CityMap(w, h);

            cmap.load(Path.ChangeExtension(path, ".citymap"));

            //map data

            int tt;

            for (int e = 0; e < h ; e++)
                for (int i = 0; i < w; i++)
                {
                    tt = fin.ReadByte();

                    fog.set(i, e, Gen.conv((byte)fin.ReadByte()));

                    map[i, e] = new Tile((Tile.TileType)tt);
                }

            fin.Close();
        }
Exemple #5
0
        /// <summary>
        /// Determin if the Unit can move through a certain type of terrain
        /// </summary>
        /// <param name="type">Type of terrain to test if the Unit can move through</param>
        /// <returns>wether the Unit can move through the terrain or not</returns>
        public bool canMove(Tile.TileType type)
        {
            foreach (Character c in map)
                if (c!=null&&!c.canMove(type))
                    return false;

            return true;
        }
 /// <summary>
 /// Determin if the Character can move through a certain type of terrain
 /// </summary>
 /// <param name="type">Type of terrain to test if the Character can move through</param>
 /// <returns></returns>
 public bool canMove(Tile.TileType type)
 {
     return !(type == Tile.TileType.MOUNTAIN || type == Tile.TileType.WATER);
 }
        public void load(String path)
        {
            path = "./map/" + path;

            if (!VersionSys.match(path, uid, type, ver))
                throw new Exception("File is not a Forgotten Schism Map file v1.0");

            List<String> refls=new List<String>();

            FileStream fin = new FileStream(path, FileMode.Open);

            fin.Seek(12, SeekOrigin.Begin);

            int rn = fin.ReadByte();
            int sl;
            char[] sb;
            int e;

            for (int i = 0; i < rn; i++)
            {
                sl = fin.ReadByte();
                sb=new char[sl];

                for (e = 0; e < sl; e++)
                    sb[e] = (char)fin.ReadByte();

                refls.Add(new String(sb));
            }

            //map width and height
            int w = fin.ReadByte();
            int h = fin.ReadByte();

            map=new Tile[w,h];

            //map data

            int tt;
            Tilemap tm;

            for (e = 0; e < h ; e++)
                for (int i = 0; i < w; i++)
                {
                    tt = fin.ReadByte();
                    rn = fin.ReadByte();

                    if (rn != 0)
                    {
                        tm = new Tilemap(refls[rn-1]);
                    }
                    else
                        tm = null;

                    map[i, e] = new Tile((Tile.TileType)tt, tm);
                }

            fin.Close();
        }