X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=tools%2Ftilemanager%2FTileSet.cs;h=ad10cdf7cd29ddad44e11d87c527f90fa48a3c1e;hb=c7f37260e8eb9dc30c09d967e7020202724189b1;hp=88c85ac46870ab34e545634592ab62856630d07a;hpb=99d3aa1d55bf421525b4265913f64ee3680af864;p=supertux.git diff --git a/tools/tilemanager/TileSet.cs b/tools/tilemanager/TileSet.cs index 88c85ac46..ad10cdf7c 100644 --- a/tools/tilemanager/TileSet.cs +++ b/tools/tilemanager/TileSet.cs @@ -1,3 +1,4 @@ +// $Id$ using System; using System.IO; using System.Collections; @@ -45,12 +46,15 @@ public class TileGroup { } public class TileSet { - private bool tooNew = false; + public const int TILE_WIDTH = 32; + public const int TILE_HEIGHT = 32; + + private bool isNew = false; /// Whether version of tileset file is too new - public bool TooNew { + public bool IsNew { get { - return tooNew; + return isNew; } } @@ -100,7 +104,7 @@ public class TileSet { } public void ParseTiles(Lisp.Parser parser) { - tooNew = false; + isNew = false; int d = parser.Depth; while(parser.Parse() && parser.Depth >= d) { if(parser.Depth == d && parser.Type != Parser.LispType.START_LIST) { @@ -131,11 +135,7 @@ public class TileSet { break; case "tiles": ParseMoreTiles(parser); - tooNew = true; - Console.WriteLine( - "Warning: new syntax of \"More tiles in one image\" file isn't currently supported"); - Console.WriteLine( - "And this means: YOU WON'T BE ABLE TO SAVE YOUR CHANGES !!!"); + isNew = true; break; default: throw new Exception("Unexpected listentry: " + @@ -153,8 +153,7 @@ public class TileSet { List attributes = new List(); List datas = new List(); List imageNames = new List(); - ArrayList images = new ArrayList(); - int animFps = 0; + float animFps = 0; int d = parser.Depth; while(parser.Parse() && parser.Depth >= d) { @@ -180,15 +179,12 @@ public class TileSet { Parser.ParseIntList(parser, datas); break; case "anim-fps": - animFps = parser.IntegerValue; + animFps = parser.FloatValue; break; case "image": int subDepth = parser.Depth; while(parser.Depth >= subDepth) { imageNames.Add(parser.StringValue); - ImageRegion region = new ImageRegion(); - region.ImageFile = parser.StringValue; - images.Add(region); parser.Parse(); } break; @@ -211,10 +207,21 @@ public class TileSet { if (ids[id] != 0) { Tile tile = new Tile(); - tile.Images = new ArrayList(images); + tile.Images = new ArrayList(); + foreach (string str in imageNames) + { + ImageRegion region = new ImageRegion(); + region.ImageFile = str; + region.Region.X = x * TILE_WIDTH; + region.Region.Y = y * TILE_HEIGHT; + region.Region.Width = TILE_WIDTH; + region.Region.Height = TILE_HEIGHT; + tile.Images.Add(region); + } tile.ID = ids[id]; tile.Attributes = (attributes.Count > 0)?attributes[id]:0; //missing atributes == all-are-0-attributes tile.Data = (datas.Count > 0)?datas[id]:0; //missing DATAs == all-are-0-DATAs + tile.AnimFps = animFps; while(Tiles.Count <= tile.ID) Tiles.Add(null);