Simple Tile Editor:
Need a specific custom built tile map editor to the following requirements:
Language : Java (preference) or C++ O/s windows xp
(source and binary objects to be delivered.)
Tile editor consist of three windows and a status bar: the three windows being:Tile map area (main), Scenery tiles, Object tiles
The windows are moveable, resizeable and scrollable up down left right.
Default positions:
Tilemap window Left top.
Scenery window top right
Object window bottom right
Menu options:
>New project
>Load project
>edit project attributes
>Save project
>Load tilemap
>Output tilemap
>Load scenery tiles
>Load object tiles
Project attributes:
Project name
Tilemap input file
Tilemap output file
Tilemap main row prefix string
Tilemap Main row suffix string
Tilemap Layer output prefix string
Tilemap Layer output suffix string
Tilemap width
Tilemap height
Scenery Png file
Object png file
Tile width
Tile height
Labels file
Tile rotating
Tilemap Window coords,size and position
Scenery Window coords,size and position
Objects Window coords,size and position
These attributes are saved via the save project and loaded via the load project
When loading: LOAD PROJECT
>if the tilemap input file exists it is loaded into the tile map area window.
>if the scenery png file exists it is loaded into the scenery tiles window.
>if the object png file exists it is loaded into the object tiles window.
>if the labels file exists it is loaded. {See labels}
When saving:SAVE PROJECT
>The project attributes file is saved.
>The labels file is saved
>the tilemap matrix is saved.
Load tilemap
When this option is selected the tilemap file is loaded and replaces the current active tilemap matrix and is presented in the tilemap area. Load tilemap reads a file in the format produced by Ouput tilemap
Scenery tiles & object tiles:
Scenery and object tiles are contained within separate png sheets. Within the png sheets each tile has a one pixel spacer right and bottom thus a 32x32 tile is 33x33 with last column and bottom row discarded. Tile size requirements are set via the project attributes: Tile width e.g. 32, tile height e.g. 32. The Scenery tiles are loaded into the Scenery tile window and the objects tiles are loaded into the objects tiles window.
Loading:
Loading will automatically determine tiles based on png sheet width/(tile width+1) and png sheet height/(tile height+1). Tiles are presented order in according to tiles window size. Viz if using 32x32 tiles and a 64 x 320 window. The window will be displaying 2 tiles across by 10 deep. Tiles are presented in the order left to right, top to bottom.
Tile rotating: (applicable to both Scenery and object tiles)
If tile rotating is specified as “Y” then the tiles loaded are multiplied by 4. These being:
Original tile, 2) tile rotated clockwise 90 deg, 3) 180, deg 4) 270 deg.
Rotated tiles are included in the tiles window and presented in an adjacent sequence left to right, before presenting the next tile in sequence.
Tile processing: (applicable to both Scenery and object tiles)
Tiles are selected by clicking on the tile. This becomes the active tile. The active tile is highlighted and it’s index and label is shown in the status bar
Once selected two options are available:
1) Paint in tile map area window
2) Assign the tile a label
Labels:
Assign label
Each tile can be assigned a tile label
A 3 character string.
E.g. 11A, 24B etc.
Labels are stored in the labels file in the following simple text format:
B 1 “. “
S 1 “11A”
S 2 “11B”
S 3 “23C”
O 1 “_A_”
O 2 “_D_”
O 3 “_E_”
X 1 “_ZZ”
X 2 “_ZT”
S 1 “11A” is the label (11A) for the first (1) tile in the scenery (S) tiles window.
O 2 “_D_” is the label (_D_) for the second (2) tile in the objects (O) tiles window.
B 1 “. “ Is a special label to denote the label for any tile in the tilemap area not containing a tile. i.e. the label for blank tiles. There is only one B entry
X 1 “_ZZ” all X entries denote special entries within the matrix that are used inGame and do not appear in the object and scenery tiles. These entries only appear in the Layer Main layer. (see Layers below.)
Saving a project saves the labels to the labels file.
Tilemap:
Tile map is shown as a grid (matrix). The size of the tilemap grid is set by the tilemap width and height. Note these may be changed during a session. So if the width is increased then additional columns are added to the end of matrix (to the right). If the width is decreased then columns are removed from the right of the matrix. If the height is increased then additional rows are added to the bottom of the matrix. If the height is decreased then rows are removed from the bottom of the matrix. New squares default to blank tiles.
A square within the grid is painted using the active tile by left clicking on the grid square. Right clicking on grid square de-populates the square.
Note if Layer Main contains a special InGame label the grid square cannot be edited in Layer Main. (see layers below.)
The tilemap grid contains 3 layers.
Layers:
{Note tiles must retain their transparency so that when tiles are layered they are displayed correctly.}
There are only three layers:
Layer 0 bottom layer
Layer Main:
Layer 1 top layer
Within a menu option the current options are selectable:
1)Active layer 0:
2)Active layer Main:
3)Active layer 1
4)Active layer all (main)
The active option is always displayed in the status bar.
Active layer 0 means any tiles painted in the tilemap will be associated to layer 0. Only layer 0 is displayed in the tilemap.
Active layer main means any tiles painted in the tilemap will be associated to layer Main. Only layer Main is displayed in the tilemap.
Active layer 1 means any tiles painted in the tilemap will be associated to layer 1. Only layer 1 is displayed in the tilemap.
Active layer all means any tiles painted in the tilemap will be associated to layer Main, but all layers are displayed in the tilemap. (layer 0, then Main then layer 1)
Output tilemap:
Simple text file output.
Firstly Layer 0, then layer 1 are output followed by layer Main.
Processing is left to right top to bottom matrix output
Layer 0, and layer 1 do not produce any output for blank tiles.
Layer 0 output
In the format of
Tilemap Layer output prefix string+column_x+”,”+row_y+”,”+label+”,0 ”+ Tilemap Layer output suffix string
So if we had a 3 width x 4 height matrix with a level 0 tile in position x 2, y 3 with a label “11A” and a level 0 tile in position x 4, y 4 with a label “23D”
With Tilemap Layer output prefix string=”t(“
With Tilemap Layer output suffix string=”);“
The output would be:
t(2,3,”11A”,0);
t(4,4,”23D”,0);
Layer 1 Output
Is the same as layer 0 output but replacing 0 with 1
e.g.
t(2,3,”11A”,1);
t(4,4,”23D”,1);
Layer Main output;
Is in the form of concatinating the labels within a row:
Tilemap main row prefix string+concatenated tile labels+Tilemap Main row suffix string+row number
Eg
Lu(". 01A01A12B. . . 01B. ")//1;
Where Lu(" is prefix string ")//; is suffix string
Putting this together a sample output would be for a sample matrix:
t(7,7,"20b",0);
t(7,9,"20b",1);
lu("20b21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//1
lu("20b21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//2
lu("20b21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//3
lu("20b21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//4
lu("20b21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//5
lu("20b23c20c20c20c20c20c20c20c20c20c23d21a21a21a21a21a21a");//6
lu("20b_Ja. . . . . . . . . 20d21a21a21a21a21a21a");//7
lu("23b20a22b56a56a56a. . . . . 20d21a21a21a21a21a21a");//8
lu("21a21a20b. . . 56a. . . 56a20d21a21a21a21a21a21a");//9
lu("21a21a20b. . . . . . 56a. 20d21a21a21a21a21a21a");//10
lu("21a21a20b. . . 56a56a56a. . 20d21a21a21a21a21a21a");//11
lu("21a21a20b. . 56a56a. . . . 20d21a21a21a21a21a21a");//12
lu("21a21a20b. . . . . . _Xt. 20d21a21a21a21a21a21a");//13
lu("21a21a20b56a56a. . . . 56a. 20d21a21a21a21a21a21a");//14
lu("21a21a23b20a20a20a20a20a20a20a20a23a21a21a21a21a21a21a");//15
lu("21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//16
lu("21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//17
lu("21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a21a");//18
IMPORTANT Load tilemap reads a file in this format and will populate the matrix accordingly.
Some labels are not assigned to tiles but are special labels for ingame objects.
When encountering a label not recognized in the labels file a graphical “?” is displayed on the matrix.
When encountering a label referencing a known inGameobject a graphical “G” is displayed on the matrix.
Note any additional information can be output in the output tilemap file format if it assists with reading and processing. But these must not be on lines outputting the matrix.
The additional information lines must be prefixed by the string “//”