An extensive list of changes for this commit: Isomatrix: - Full Unicode support has been added, making the game 100% translatable. Included the freely available, Unicode-supporting Roboto font for ingame use. - Isomatrix is now state-based and contains wrapper classes for your game and its various states. See the com.sigmatauproductions.isomatrix.game package for more information. - MouseHandler.java has been removed because Slick already handles input for us just fine. - Updated Globals.java to contain a linear interpolation function. - Documented the Prop.createCluster() functionality, and sped it up by over 250,000% (that's not an exaggeration, either--it was painfully slow before). - Tiles now support mouseover actions, and games can request which tile currently has the mouse over it via TileMap.getMouseOverIndex(). - Added the TileMap.gotoTile() method, which is useful for pathfinding. - Tilesets now also track their directory name in addition to their proper tileset.cfg-based name. - ConfigFile.java now has functions for getting the full filename (relative to the classpath) of the config file, as well as a string array containing all of the lines in the file. - The game now boots based on settings found in ./resources/isomatrix.cfg. Sigtopolis: - First build of the game... with an actual game! No gameplay yet, but maps are randomly generated with trees and a cursor over the currently mouseover'd tile. Humble beginnings. - A whole slew of GUI options and controls have been added to com.sigmatauproductions.sigtopolis.ui. Buttons, checkboxes, dropdown menus, check it out! - A FontHandler and WordWrap utility class have been included for convenience. - Included (and created) tree graphics. - Included temporary window icons.
Code changes: - Event.java and EventHandler.java have been added for handling time-based events, see the javadoc for more information. - A TestEvent class has also been included for reference on how to extend the Event class if anonymous inner classes are not your preference. - Added a class for handling, locking, and displaying mouse input via a cursor. - Added a Transform2D helper class, as well as .toArray() functions to both Transform and Transform2D. - Props now implement the Cloneable interface and a copy of the Prop can be obtained via .clone() method. - New static method in Prop.java - .createCluster(map, props, freq, center, radius) allows for the creation and dispersion of randomized clusters across a TileMap, allowing for easier procedural generation of natural formations such as forests and rocks. - TileMaps no longer take a height offset in their constructor and now read the value from the tileset.cfg. - Reduced the minimum factor for FastNoise.getNoiseImage() to 15f rather than 30f. Resources: - Added a grid overlay tileset. - Added a few test heightmaps. - Added a cursor image. - Added a few tree images as well as the PSDs so you can play with the Prop code. - Updated the tileset.cfg files so that height offsets are included to reflect the code changes.
- Heightmaps and the associated family of methods (slope interpolation, height validation, etc.) are, for the most part, now working and documented. - Added the DirectionUtils class for working with heightmaps; may be useful later. - Reduced the maximum map size to 4096 on a side due to OutOfMemoryExceptions. Possible plans in the works to cache TileMap data to prevent future errors.
- Adjusting the slope of a tile will now update its image accordingly, do not use Tile.setImage() to adjust slope directly. - TileMaps can now be given variation in appearance using the randomizeFlats() method. See the javadoc for details. - Tiles now memorize their Tileset, and accordingly, require a tileset to be initialized, meaning they can only be created from within TileMap.