+// $Id$
using System;
using System.IO;
using System.Collections;
[Glade.Widget]
private Gtk.Window MainWindow;
[Glade.Widget]
+ private Gtk.CheckMenuItem useNewSyntax;
+ [Glade.Widget]
private Gtk.DrawingArea DrawingArea;
[Glade.Widget]
+ //Flags CheckButtons
private Gtk.CheckButton SolidCheckButton;
[Glade.Widget]
private Gtk.CheckButton UniSolidCheckButton;
[Glade.Widget]
private Gtk.CheckButton WaterCheckButton;
[Glade.Widget]
+ private Gtk.CheckButton HurtsCheckButton;
+ [Glade.Widget]
+ private Gtk.CheckButton FireCheckButton;
+ [Glade.Widget]
+ private Gtk.CheckButton BrickCheckButton;
+ [Glade.Widget]
+ private Gtk.CheckButton CoinCheckButton;
+ [Glade.Widget]
+ private Gtk.CheckButton FullBoxCheckButton;
+ [Glade.Widget]
private Gtk.CheckButton SlopeCheckButton;
[Glade.Widget]
+ private Gtk.CheckButton GoalCheckButton;
+ [Glade.Widget]
private Gtk.CheckButton DontUseCheckButton;
[Glade.Widget]
private Gtk.CheckButton HiddenCheckButton;
[Glade.Widget]
+
private Gtk.Entry DataEntry;
[Glade.Widget]
private Gtk.Entry AnimFpsEntry;
SelectionChanged();
FillTileGroupComboBox();
FillTileList();
+
+ useNewSyntax.Active = tileset.IsNew;
+ if (tileset.IsNew)
+ Console.WriteLine("Warning: new syntax of 0.3.x files \"More tiles in one image\" isn't currently supported for WRITING");
+
}
protected void OnImportImage(object o, EventArgs e) {
tile.ID = startid + i;
ImageRegion region = new ImageRegion();
region.ImageFile = currentimage;
- region.Region = new System.Drawing.Rectangle(x*32, y*32, 32, 32);
+ region.Region = new System.Drawing.Rectangle(x*TileSet.TILE_WIDTH, y*TileSet.TILE_HEIGHT, TileSet.TILE_WIDTH, TileSet.TILE_HEIGHT);
tile.Images.Add(region);
if(Tiles[i] != null) {
Console.WriteLine(
}
try {
pixbuf = new Pixbuf(tilesetdir + "/" + file);
- if(pixbuf.Width % 32 != 0 || pixbuf.Height % 32 != 0)
+ if(pixbuf.Width % TileSet.TILE_WIDTH != 0 || pixbuf.Height % TileSet.TILE_HEIGHT != 0)
Console.WriteLine("Warning: Image Width or Height is not a multiple of 32");
} catch(Exception e) {
ShowException(e);
return;
}
currentimage = new FileInfo(file).Name;
- TilesX = pixbuf.Width / 32;
- TilesY = pixbuf.Height / 32;
+ TilesX = pixbuf.Width / TileSet.TILE_WIDTH;
+ TilesY = pixbuf.Height / TileSet.TILE_HEIGHT;
SelectionArray = new bool[TilesX * TilesY];
Tiles = new Tile[TilesX * TilesY];
continue;
ImageRegion region = (ImageRegion) tile.Images[0];
if(region.ImageFile == currentimage) {
- int px = region.Region.X / 32;
- int py = region.Region.Y / 32;
+ int px = region.Region.X / TileSet.TILE_WIDTH;
+ int py = region.Region.Y / TileSet.TILE_HEIGHT;
int i = py*TilesX+px;
if(i < 0 || i >= Tiles.Length) {
Console.WriteLine("Invalid Imageregion at tile " +
}
if(Tiles[i] != null) {
Console.WriteLine("Multiple tiles for region " +
- px*32 + " , " + py*32);
+ px*TileSet.TILE_WIDTH + " , " + py*TileSet.TILE_HEIGHT);
continue;
}
Tiles[i] = tile;
}
protected void OnSave(object o, EventArgs e) {
- if (tileset.TooNew)
- Console.WriteLine(
- "Sorry, the file you are editing is too new, there will be huge data loss if you save this.");
- else
+ if (tileset.IsNew && useNewSyntax.Active) {
+ MessageDialog dialog = new MessageDialog(MainWindow, DialogFlags.Modal | DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok,
+ "Sorry, the file you are editing is too new and 0.3.x syntax is not supported yet.");
+ dialog.Run();
+ dialog.Destroy();
+ } else {
tileset.Write(tilesetfile);
+ }
}
protected void OnQuit(object o, EventArgs e) {
}
private void select(int x, int y) {
- int tile = y/32 * TilesX + x/32;
+ int tile = y/TileSet.TILE_HEIGHT * TilesX + x/TileSet.TILE_WIDTH;
if(tile < 0 || tile >= SelectionArray.Length)
return;
tile.SetAttribute(Attribute.ICE, IceCheckButton.Active);
if(sender == WaterCheckButton)
tile.SetAttribute(Attribute.WATER, WaterCheckButton.Active);
+ if(sender == HurtsCheckButton)
+ tile.SetAttribute(Attribute.HURTS, HurtsCheckButton.Active);
+ if(sender == FireCheckButton)
+ tile.SetAttribute(Attribute.FIRE, FireCheckButton.Active);
+ if(sender == BrickCheckButton)
+ tile.SetAttribute(Attribute.BRICK, BrickCheckButton.Active);
+ if(sender == CoinCheckButton)
+ tile.SetAttribute(Attribute.COIN, CoinCheckButton.Active);
+ if(sender == FullBoxCheckButton)
+ tile.SetAttribute(Attribute.FULLBOX, FullBoxCheckButton.Active);
if(sender == SlopeCheckButton)
tile.SetAttribute(Attribute.SLOPE, SlopeCheckButton.Active);
+ if(sender == GoalCheckButton)
+ tile.SetAttribute(Attribute.GOAL, GoalCheckButton.Active);
if(sender == HiddenCheckButton)
tile.Hidden = HiddenCheckButton.Active;
if(sender == DontUseCheckButton)
UniSolidCheckButton.Active = tile.HasAttribute(Attribute.UNISOLID);
IceCheckButton.Active = tile.HasAttribute(Attribute.ICE);
WaterCheckButton.Active = tile.HasAttribute(Attribute.WATER);
+ HurtsCheckButton.Active = tile.HasAttribute(Attribute.HURTS);
+ FireCheckButton.Active = tile.HasAttribute(Attribute.FIRE);
+ BrickCheckButton.Active = tile.HasAttribute(Attribute.BRICK);
+ CoinCheckButton.Active = tile.HasAttribute(Attribute.COIN);
+ FullBoxCheckButton.Active = tile.HasAttribute(Attribute.FULLBOX);
SlopeCheckButton.Active = tile.HasAttribute(Attribute.SLOPE);
+ GoalCheckButton.Active = tile.HasAttribute(Attribute.GOAL);
HiddenCheckButton.Active = tile.Hidden;
DontUseCheckButton.Active = tile.ID == -1;
DataEntry.Text = tile.Data.ToString();