Saturday, February 27, 2010

Change Log

Log is kept in sync with my posting and indicates all the work  I have done. I try to put most of it anyway. The boring things I leave out.

v0.0.06 - Post: 02-03-10
````````````````````````````````````````````````````````````````````````````````````````````````````
+ Created TextBox class [BaseObj, AnimObj] - Behaves much like any RPG message box.
    - Supports any dimensions (height generated from text, and number of lines required. Box will
        scale down if the num lines required is less than it needs to display)
    - Supports <html tag> like symbols within the text string itself to denote certain colours and
        fonts for different characters witihn the string
    - Text cannot be skipped until the required number of lines has been shown, however it can be
        sped up a lot by holding down choosen button
    - If no title is supplied it is assumed the "per character drawing" is not needed as speech and
        prints whole line straight away.
* Added TextBox to GameState class, it is assumed most\if not all will need to display one


v0.0.05 - Post: 27-01-10
````````````````````````````````````````````````````````````````````````````````````````````````````
* Added GuiObj support via vector in GameState class (moved from just the MapEditor as it is deemed
    all classes will need some sort of GUI).
    - GameState clean_up() also responsible for removing any memory inside this vector during
        derived class's clean_up()
    - Add individual functions for calls to the GuiObj input, logc, draw routines. Due to the fact
        all the code will be identical for each derived game state. (The extra code, other than
        calling those GuiObj functions is just so we can keep track of the active menu and make
        sure it's drawn last, it's input is taken first (even when it's above another menu).
* Added font support inside the GameState class through an array. Named at the moment Main Font,
    Header Font, Gui Font. Can always add more support later. Clean up of fonts done in GameState.
    - Also added load_font(int font_id, std::string font_name) for convinience when checking if
        a font loaded, and so I dont have to type the path for the font all the time. If function
        fails, initialisation for that state fails, as font is considered "Primary Resource".
+ Text class created - Wrapper for Allegro equiv draw_text\f functions with some helpful additions
    like colour, transparency etc...
* Replaced header guards with #pragman once since it's sexier.
* Changed filename format from lower_case.cpp to SexyStyle.cpp (49 of them >.<)
* Added transparency support to Sprite class.
+ Label class create [GuiElement] - Like a text box, but the value inside cannot be updated via
    input, but rather it's callback function.
* Windows can now be locked in place
* Added "reset position" button inside Window title bars (optional)
* Added GuiObj Menus to MapEditor
* Implemented New\Save\Load map functions - (still need to get those dialog boxes in a new thread)
* Can now "paint" map with selected sprite and type
* Added support for buttons to call their callback function just on one "click\press" or while their
    "held\pressed"


v0.0.04 and below & Complete Class Listing (Anything bulleted with a + is after 0.0.04)
````````````````````````````````````````````````````````````````````````````````````````````````````
* Console class created  - For debug purposes, can be written to and viewed in-game
* Text File class created  - Handles the opening\saving\writing to
* System class created  - Responsible for setting up allegro, installing addons, creating display
* Keyboard class created - Handles all keyboard input through Allegro event system (global)
* Mouse class created - Handles all mouse input through Allegro event system (global)
* Engine class created - Responsible for main game loop, handling game states and events
* GameState class created - Base class for all game states, has all the stuff a typical gamestate
    might need
* BaseObj class created - For all objects to derive from who have an x,y,width,height
* AnimObj class created - For any class who wants animation support (graphical or not)
* Sprite class created [BaseObj, AnimObj] - For any "graphical" obj to derive from. Handles
    rotation\scaling\transparency etc...
* Image class created - Loads an image from disk, stores its name and path
* ImageManager class created - For the GameState class, takes care of making sure we only load one
    image of the same name. Responsible for loading\unloading images. Has a vector of Image class
* MapCell class created [Sprite] - A single cell which as a group makes up a map
* Map class created [BaseObj] - Has a vector of MapCells for dynamic maps, responsible for drawing
    the map, scrolling (built in camera functions)
* GuiElement class created [Sprite] - A single GUI element responsible for its own input, drawing
    (through base sprite class), and logic (Pure Virtual class)
* GuiObj class created [BaseObj] - Stores GUI elements inside a vector. Responsible for group action
    via input logic and drawing for these vector members.
* Button class created [GuiElement] - Simple button element, calls callback function on mouse click
    or keyboard input (1 + Created TextBox class [BaseObj, AnimObj] - Behaves much like any RPG message box.key)
* TextField class created [GuiElement] - Takes input from keyboard, returns value in requested
    format
* Window class created [GuiObj] - Adds functionality to the basic GuiObj in that it behaves much
    like any window you've seen before... kind of
* MainMenu class created [GameState] - Main menu for game (empty at the moment), use F keys for
    debug, swap state)
* Game class created [GameState] - State for the main game (empty at the moment)
* MapEditor class created [GameState] - As the name suggests. Used for mainly test purposes at the
    moment.
+ Text class - Wrapper for Allegro equiv draw_text\f functions with some helpful additions
    like colour, transparency etc...
+ Label class create [GuiElement] - Like a text box, but the value inside cannot be updated via
    input, but rather it's callback function.
+ Created TextBox class [BaseObj, AnimObj] - Behaves much like any RPG message box.

No comments:

Post a Comment