Wednesday 22 November 2000 Console.cpp: console keyhandler Thursday 23 November 2000 Console.cpp: keyhandler does keynames and can react to the release of key Friday 24 November 2000 Console.cpp: Keyhandler supports instructions w/ arguments read inifile at startup with CmdTable.execCmdFile(file) added 'dir' commando to console load map via console Field.cpp: fixed a bug in border detection Saturday 26 November 2000 consoletest.cpp: added some conveniency functions cmd_* to debug the players players are now handled in a vector. Sunday 27 November 2000 Game.cpp: new, taking over globals and the main_loop from Main.cpp handle bombs and flames nicely in linked lists Main.cpp: new, old consoletest.cpp removed the boids. Console.cpp: get the KeyNames through KeyNames &Key::getKeyNames() fixed a bug in inifile reading that caused the program to crash when reading an empty line Player.cpp: changed the coordinate system. (x,y) now indicates top-left of the sprite. Bomb.cpp: new added flame class Friday 01 December 2000 Game.cpp: added the Viewport class, to ease split screen display and object (player) following on screen. Wednesday 06 December 2000 GameObject.h: added an interface for player/bomb/flame/bonus. Main.cpp: added cmd_game_toggle_fullscreen. SDL docs say that this doesn't work with win9x, but i have to check that out. Field.cpp: added class MapImportField, which defines a new map format with unlimited size. added an GameObject array to Field, together with the methods add, remove, and get_object_at[_xy] to manipulate them. Bomb.cpp: added support for the theObjects array in Field. Bombs now make eachother explode Thursday 07 December 2000 Field.cpp: added destroy(x,y) to try to destroy a wall at that place. the Field decides if it's possible. Bomb.cpp: bombs destroy walls Player.cpp: players die and respawn after dead_delay frames cannot put bomb if dead or already bomb anymore players have names Friday 08 December 2000 - Begins to look like a bomberman game :) GameObject.h: added a die() method. comes in handy for the Flame. Bomb.cpp: bombs have owners Flame.cpp: flame kills his tile amd all the GameObject on it on creation. flames have owners Bonus.cpp: new, GameObject daughter Player.cpp: do bonuses (+firepower, +speed) stop if there's a bomb Sunday 10 december 2000 Wall.cpp: added a wall class for exploding walls. explosions now stop after one brick not any. anirender/ created some animation 'assembler' for jeroen who prefers working with a sinus than with a mouse Wednesday 16 october 2002 - exhuming code created Makefiles for linux, copied old ones to Makefile.bcc Game.cpp: added a nextTarget method that focusses the viewport on the next player Main.cpp created binding 'player_next' for Game::nextTarget changed backslashes as dir seps to DIR_SEP Bomb.cpp explosion now also kill ppl on the center Thursday 17 october 2002 aniplay.cpp Made it compatible with the other improvements and wrote added it to Makefile Player.cpp, Main.cpp player can only put a limited # of bombs, and can handle the bomb bonus command cmd_bombs_number added to configuration Console.cpp +Keys.cpp +CmdTable.cpp moved CmdTable and Keys from Console.cpp Game.cpp +ViewPort.cpp moved ViewPort from Game.cpp to ViewPort.cpp Main.cpp made key configuration readable Friday 18 october 2002 Player.cpp When player dies levels are reset to game defaults Saturday 19 october 2002 +blob.ani Added jeroen's blob animation +Menu.cpp add Menu Sunday 20 october 2002 - dreaded reorganisation Game.cpp +BbMan.cpp BbMan is now the game running class, and Game handles a game ( map + players + action ) BbMan handles initalization of defaults, screen, sound and graphics main_loop is in BbMan, and calls game->think each loop +Config.h all defines are set in Config.h SDLTool.cpp full screen initalisation if full screen is defined Main.cpp +Callbacks.h +Callbacks.cpp moved cmd_* to Callbacks.cpp GameObject.h added method lives +Flame.h +Flame.cpp Bomb.cpp moved Flame code to Flame Console.cpp added setAlpha wrapper cmdTable.cpp ignore comments (line starting with '#') in config files Monday 21 october 2002 - reorg continues.. Anim.cpp added colorkey to constructor of AnimationTable (no more deps on BbMan nor Game) Bomb.cpp flames now stop when they burn a bonus +PlayerTemplate.h +PlayerTemplate.cpp added player template (player settings, used by bbMan to create a Player in Game) Game.cpp Callbacks.cpp added pause game Anim.h added type AnimationTableFiles to links filename to Animation and spare some memory, also used in cleanup Game.cpp ViewPort.cpp hacked it a bit to make it work for 2 player split screen. this one will need some attention. Game now has a list of viewports. Bomb.cpp Player.cpp Game.cpp added first part of pushable bombs + callbacks Game.cpp Config.h defined animation constants, added player standing still Wednesday 23 October 2002 Sprite.cpp all GameObjects added m_xoffset, m_yoffset that defines relation between sprite pos and logical object position Bomb.cpp bombs can be set to crush bonusses or to stop with crush_bonus, bomb speed can be changed with bomb_speed bomb stops for player when moving (maybe this should be an option) Player.cpp bombs can be stopped with action key 1 speed in floats speed bonus increases speed with bbman->m_speed_increase setting Player.cpp Bomb.cpp added trigger bombs Thursday 24 October 2002 Game.cpp nothing happens if pause is pressed Callbacks.cpp Player.cpp state of action keys is kept Bomb.cpp Player.cpp added punch (except for animations) Friday 25 October 2002 Bomb.cpp BbMan.cpp exported bomb bouncing variables explosion is only possible is status=B_WAIT random bouncing only turns 90deg trigger bombs don't explode in mid air anymore ViewPort.cpp added averaging autofollow multiplayer thingie Sprite.cpp added method Sprite::draw(const ViewPort*) SDLTool.cpp Game.cpp ViewPort.cpp Field.cpp support other resolutions than 640x480 Saturday 26 October 2002 Anim.cpp random choosing of animations fixed at last Game.cpp added m_last_now and m_time_elapsed to Game to make things move per sec, not per frame Player.cpp After a night of hacking, the players walks at the same speed (px/s) in any resolution Monday 28 October 2002 Bomb.cpp bomb uses ticks instead of frames. stabalized behaviour (no more bouncing when kicking against a wall) bbman like explosions, fixed at last when a bomb encounters a flame it gets its owner ie, you make a point even if you triggered some1 else's bomb bombs go through dead ppl Flame.cpp uses ticks when a flame meets a bomb, bomb gets owner of flame Wall.cpp uses ticks Player.cpp trigger explode in chronological order added m_deaths and m_kills Field.cpp fixed: lowest line missing in some viewports Tuesday 29 October 2002 - Windows support BBman compiles with the Borland freecommandline tools again. Wednesday 30 October 2002 +KeySet.cpp +KeySet.h manages a keyset. to create a gameplayer, a playertemplate and a keyset are combined +Button.h +Button.cpp implements a button that runs a command when pressed, and buttonbar, a container for them +Page.h +Page.cpp implements a menu page Wednesday 6 November 2002 Player.cpp moving bombs are selected in order Bomb.cpp bomb has m_owner for player notify and m_deserves_points Sunday 10 November 2002 ? fixed some bugs during the last week. bbman crashes much less. Monday 11 November 2002 Callbacks.cpp BbMan.cpp BbMan.h implemented resolution change before game starts - todo: reload gfx Thursday 15 November 2002 - Let's script Every file Changed objects to global, that's easier to use with tolua globals are: g_bbman, g_screen, g_game, g_field, g_ls (luastate) +BbMan.pkg interface definitions for lua Makefile Changed makefile to autmatically build C wrapper file for lua with tolua +ScriptObject.h +ScriptObject.cpp Gameobject that responds to the world with a lua script Saturday 16 November 2002 +MoveableObject.h +MoveableObject.cpp GameObject with features as slide,bounce (pasted from Bomb.cpp) you can add distance as a parameter to slide ScriptObject.h ScriptObject.cpp inherit from moveable object instead of GameObject. remember if a script was already loaded, don't load again all GameObjects set_remove_flag() causes object to be removed at the end of the game cycle. die() defaults to set_remove_flag set public class enums to global enums GameObject.h added functions to cast gameobject to children for use with field->get_object_at with lua. Bomb.h Bomb.cpp added function time_left that returns millisecs to go before boom Field.h Field.cpp added get_first_object(x,y,dir) Sunday 17 November 2002 Bomb.cpp center flame is added to map, ie be safe on your own bomb bug resolved Bomb.h added get_radius Monday 18 November 2002 Bomb.cpp fixed bug: flame doesn't stop when it makes a bomb explode ai.lua Added bot GanjaWarrior with an improved escape behaviour Monday 24 November - during last week as far as i can remember +BotHelper.h +BotHelper.cpp BbMan.pkg added some functions to help bots: a minimap and a pathfinder ai.lua create ReggaeAmbassada, a new bot that uses pathfinding to escape added a teleport Callbacks.cpp Field.cpp BbMan.cpp support for new map format (each map along with its graphics and scripts in its own directory. support for mutliple tiles/animations for fields tilesets for normal maps (ie .map and .sch) can be defined in autoexec.cmd Wednesday 26 November 2002 - windows compilation Main.cpp added my_luaref to exported lua functions ScriptObject.h ScriptObject.cpp added method blocks(GameObject*) Player.cpp Bomb.cpp use method blocks(GameObject*) to determine if move is possible. this fixes the bug where 2 sliding bombs can stop on the same tile. fixed bug: flame stops at center flame of other flame objects.lua added teleport added gate added switch Thursday 27 November 2002 Player.cpp fixed bug: don't touch things when you're dead Field.h Field.cpp removed inline from get_tile_at_xy for lua bindings and borland's free compiler BbMan.h BbMan.cpp added AnimationTable* loadAnimationTable(resourcetable, filename), caching animationloaded load resolution from _init.cmd Bomb.cpp Flames respect ScriptObject::blocks(GameObject*) Friday 7 December 2002 - version 0.0.3 Added this project to sourceforge under the name Bomberbastards. http://bbbastards.sourceforge.net Saturday 14 December 2002 - version 0.0.3b Anims.cpp Anims.h Sprite.h Sprite.cpp updated animation mechanism display frames in time units instead of frame units if last frame has a duration of 0, set loop to false, default is true Sprites don't update to next frame themselves anymore, but frames are chosen with add_time(time_elapsed) Sunday 15 December 2002 Directory stucture: created tilesets/std, tilesets/ext. Each tileset has its own directory and an .ani (tiles.ani) file. Ext tilesets have their own res file. (tiles.res) +TileSet.h +TileSet.cpp encapsulate tilesets in class TileSet. Field.cpp use g_bbman->m_tileSet as source for graphics. BbMan.h BbMan.cpp don't load tiles from autoexec.cmd, load tilesets from testgame.cmd CallBacks.cpp added tileset(path) (dynamically change tileset) Anims.cpp fixed bug in add_time (last frame of a non-looping animation wasnt displayed) Monday 16 December 2002 - version 0.0.4 Field.cpp ExtMapFields read their tileset from a file called field.cmd in the map folder. This file should also be used to specify bonus settings for a level. BomberImportFields read the (some) bonus settings from the original .sch files. Overrides and forbidden are just ignored. Callbacks.cpp added Exttileset to be called in field.cmd for extmaplevels. Player.cpp fixed a bug in trigger bomb handling: no longer always start with a trigger bomb changed behaviour of trigger bonus: make triggers of all bombs in currently owned by player and not in the field. Tuesday 17 December 2002 - version 0.0.5 10007 lines, 47 classes Directory stucture: moved player .ani files to player directories as player.ani +StartLocation.h, +StartLocation.cpp handles a (list of) startlocations: erase bricks around startlocation, get random one Field.cpp read bonus settings for .map files. settings are stored after the map, and are in command file syntax. added method erase(x, y) which sets a tile to TILE_EMPTY load startlocations from atomic bomberman maps PlayerTemplate.cpp get directory instead of animation file. look for player.ani in that directory. Callbacks.cpp added add_start_location x,y,team which should be used in .map files and field.cmd files added exec which executes a .cmd file Anims.cpp fixed bug where animations would go twice as fast if drawn in splitscreen Wednesday 18 December 2002 CndTable.cpp trim remove spaces before executing a command CallBacks.cpp for command using directories or files, don't use strtok (support dirnames with spaces) Friday 19 December 2002 Directory structure moved all .ani files to places where you expect graphics. bye ani folder ! Wednesday 25 December 2002 - version 0.0.6 Lots of changes during last week, probably more than listed ;) CmdTable CmdTable is global. Commands are embedded in a structure and have a context, a syntax string and a help string. Callbacks key bindings for players no longer use sscanf, but are defined for every player with some nasty macros syntax, help and context are added to most functions GameTemplate Game BbMan Games are no longer loaded directly, but through GameTemplates, which specify the field, tilesets, players and settings for the game. BbMan::create_game then uses the game template to load the game and override map settings changes to the gametemplate can occur at any time, and the next time a game is started, they will be used. Viewport.cpp only show field, don't scroll to center on players and display areas outside the field. Thursday 26 December 2002 BbMan.cpp fixed nasty bug that was eating a lot of fps by setting the console alpha at each frame. GameTemplate.cpp load and save gametemplates to files. Anim.cpp AnimationTable: don't quit with error, but use is_ready to see if loading was successful Viewport.cpp center small maps +LuaContext wrapper for lua_State. don't create a lua_State at startup, use for fields. ScriptObject.cpp don't add itself to game, use Game::addScriptObject (fixed a bug where scriptobjects where added twice, making the program crash when a field was unloaded) Friday 27 December 2002 - 0.0.7 StartLocation Game.cpp GameTemplate.cpp added option to choose startlocation mode: atomic style, don't use or random Anims added destuctors to all structures. fixed memory leaking of graphics. Menu fixed some bugs, added home, end changed type of MenuItem to (string title, string commands), where commands are executed by exec_buffer CmdTable added exec_buffer which runs newline separated instructions BbMan added sample menu Saturday 28 December 2002 CmdTable added context PLAYER_TEMPLATE changed context CMD_ALL to ff to avoid clashing with NO_ options PlayerTemplate remove m_keyset added load, save BbMan Game moved tileset from BbMan to game BbMan.cpp pause game when in menus draw background image when nothing is loaded (and eat 1.4mb of memory extra) display picture while loading Game.cpp don't draw paused sign while in menus fixed bug where scores and pause were drawn in last viewport draw scores on transparent window autoexec.cmd Main changed keys: F10=quit game at once, escape=toggle menu load a cmd file if specified on command line Field.cpp fixed tile animations for extfield Menu.cpp fixed dollar expansion in menu commands sort directory listings by name added Menu_MessageBox to display GameTemplate errors GameTemplate.cpp changed add_player to accept 1 arg (no keyset) as arg -> automatic choice of keysets Callbacks.cpp added option to deactivate transparents menus/screen elements fixed float values assignments for gametemplate Monday 30 December 2002 Most files bonus probabilities (hackish way..) Sunday 05 January 2003 Happy New Year source code.. tick counting goes on during pause, so it should be harder to go through walls now. +Match handles a series of games, is created by GameTemplate added variables number_of_sets, winning_mode (kills/survive), max_kills, max_time added variables screen_delay, end_game_delay SDLTool.cpp annoyance fixed: got rid of mouse cursor. GameTemplate.cpp spawn match don't save empty field or tileset strings Menu added add_directory(name, command_buf) to class Menu to create menus with both options and commands that use files. cursor wraps Monday 13 January 2003 Lots of fixes and enhancements - show game objective during game - save scores and player stats - fix paths with '..' - save last used configuration and reload at program start - add grey box behind timer - change game settings (numsets/winmode/maxkills/maxtime) in game menu - change number of trigs in menu - respawn in center of tile - don't limit number of sets/maxkills when set to 0 - correct text in menu: "set: 0" -> not limited, cancel->back - no resurrect when game mode = survive Friday 24 January 2003 Changes to the graphics engine. Affects a lot of files: - flags double_buf and hw_surfaces can be set in _init.cmd. If double_buf is set, it will be handled as such everywhere, everything will be redrawn at each frame. if not set, a list of changes is kept for each viewport, and only the changes are updated. - added scroll_delta (can be set everywhere) to speedup the game if double_buf is not set. A larger delta increases fps since there are less frames that require a complete update. +GameViewPort moved game specific functionality of ViewPort to new class. it handles the updatelist for non double_buf display +GameSprite daughter of Sprite that signals changes between two calls of :draw() to g_game. Saturday 25 December 2003 +MapCell contains linked list of sprites. demultiplexes GameObject calls (die, signal_object_over, push, blocks) Tuesday 11 Febrary 2003 changed a lot of details to the tiled sprite engine. GameObject: changed blocks to blocks(GameObject*, int tx, int ty) Bomb.cpp explode if moving over a flame reset coords and anim after bounce center flame blocks only block objects in current cell removed flame propagation delay Player only get kick/punch from neighbuoring cell Bonus fix override_has_inarow Game display time elapsed between sets Wednesday 12 Febrary 2003 +Joystick.cpp, Joystick.h added class JoystickManager. converts joystick events to keysyms BbMan.cpp console can be displayed even if there is a menu f10 cannot be remapped and leaves the game at any moment added joystick to mainloop Bomb added atomic bomb (kills everything on open tiles in radius) and power bomb (explosions go through soft walls) added animations for trigger bombs and atomic bombs Wall exploding walls block everything Player: put atomic bombs, power bombs. fixed bug: remember player had trigger bombs +ExtField.h, ExtField.cpp, ExtMapCell.h, ExtMapCell.cpp, ExtTileSet.h, ExtTileSet.cpp moved extended map code to own files Thursday 13 February 2002 Joystick finished joystick code Game set g_game to null in begin of destructor, so that object don't notify their destruction to it. GameViewPort, BbMan added options scroll_min, scroll_max (min diff in px before scrolling/max diff before stop scrolling) clip when drawing animations, fixed z-level fixed updates for overlays (no more glittering) disable alpha for OSD's if doublebuffer not set BbMan call signal_redraw on current game when menu or console hides redraw everythin when game is unpaused