The Game Engine  1
Todo List
Member Animation::clear ()
remove hotspots
Member Animation::loadAnimation (string animFile)
Set hotspots
Class Background
allow tiled bgs and have them blit to a single surface / texture when loaded
Member Background::collisionData
implement collisions
Member Camera::updatePos ()
implement edge stopping. I.E. if screen hits the edge of the map stop following the sprite in that direction.
Class Collision
change this to where you can specify collision from object poll perspective or by partitioning and listing collisions for all objects in a map.
Member Collision::CollisionLists
make sure that things get removed from this and add at the appropriate time (think streaming maybe instead of hard level boundaries because otherwise we're going to have overlap issues)
Member CollisionCircle::collision (const CollisionRectangle *c, WorldObject *wo, WorldObject *mObj) const
test
Member CollisionObject::CollisionObjectType
make sure to put all CollisionObject children in here!
Member CollisionObject::name
make this actually be useful
Class CollisionSegment
make this implement something other than simply axis aligned segments
Member CollisionSegment::collision (const CollisionRectangle *c, WorldObject *wo, WorldObject *mObj) const
test
Member CollisionSegment::collision (const CollisionObject *c, WorldObject *wo, WorldObject *mObj) const
implement! initially just AA but later any normal
Class Game

Handling Loading/Unloading of Audio content from disk

Storing Game Menus

Member Game::addActor (string name, Actor actor)
add find for each of these things.
Member Game::handleInput (SDL_Event event)
get rid of most of these. Put the rest in a #define determining whether or not to use cheats
Member Game::mAnims
make into map?
Member Game::run ()
remove this after testing done
Class HUD
maybe put menus as HUDS?
Class Input
move to Player class
Member Input::doubleTapped (SDLKey key, int ms=-1)
this should reeeally be tested to make sure - values of ms don't break.
Member Input::doubleTapped (JoyButton button, int ms=-1)
make TRIGGERTIME (this value cannot be larger than 2^31) settable
Member Input::getDeviceCounts ()
determine number of keyboards on linux
Member Input::Input (bool isJoy=false)
this should at some point store the defaults for both keyboard and joystick (player's personal preferences)and just use the one that is selected
Member Input::inputs
define NumKeyboards if we care about more than one
Member Input::mIndex
have this represent the joypad or keyboard index depending on isJoystick
Member Input::removeKeyDownCallback (void(*fn)(SDLKey, SDLMod))
fix all of these so they don't delete themselves instantaneously
Member Input::triggered (SDLKey key, int ms=-1)
this should reeeally be tested to make sure - values of ms don't break.
Member Input::triggered (JoyButton button, int ms=-1)
make TRIGGERTIME (this value cannot be larger than 2^31) settable
Member Input::updateInputs (SDL_Event event)

see if it makes more sense for mousebutton and other things to allow the user to provide a processing function for each type of thing (makes lots of sense for mouse so that each event can be handled by a custom handler)

make this have a mapping from a joybutton to storage button (after getting a non-ps3 and non-360 controller) to make configurable

Class Level
Storing Level specific Menus
Member Level::clearData ()
stop and delete sound
Member Level::load ()
Add menu (not sure what I meant by this)
Member Level::postEvent (SDL_Event event)
this should probably dissapear because Input will handle this in the future
Member Level::update ()

implement

implement

do collisions (do grid dropping for enemeies(maybe global scope?) collide ones in the same grid and then by name or all if you choose)

pause/unpause

loading screen

Member Menu::Menu (std::string name, std::string themeName=NULL, bool fullscreen=true)

make MenuButtonList

make MenuPanel (for displaying content etc will consists of Buttonlists and displayAreas (inherit from to make info for monsters etc)

make Button class that has at minimum text, optional location for an image, ability to highlight selection

make changing from one menu to another

Member MouseButton
the alternate buttons don't exist to sdl atm
Member ParticleSystem::CollisionList
implement
Member ParticleSystem::collisionWithSprites (string name, int count=-1)
if vals has items in it add each of them into the marked set
Member Player::doubleTapped (InputAction act, int ms=-1)

define a trigger time

make this check if shift and ctrl are down instead of triggered and triggered for the rest

Member Player::InputAction
this needs to be loaded/generated from a config file.
Member Player::moveTowards (Point2D point)
Implement with AI
Member Player::Player (string filename)

LOAD FROM FILE!!!!

fix up the initialization

Member Player::triggered (InputAction act, int ms=-1)
define a trigger time
Class Point2D
implement length squared and length between two points (because it'll be needed)
Class Sprite

make this be able to exist w/o loading all content

maybe rename to something else because this should also be the same thing used for 3D but with a model?

Member Sprite::collisionWithSprites (string name, int count=-1)
if vals has items in it add each of them into the marked set
Member Sprite::getAnimation ()
see if this is slower maybe undo
Class SpriteFrame

make this handle frame being part of a larger texture (top left pos)

maybe also store the name of the texture so we can load them again?

Member SpriteFrame::hotSpots
implement default
Member TestUpdate ()
Players need to be added into game!!!
Member Text::draw ()
split the strings and then add an entry like \t at the end of each'page' to denote difference between same text or a new blob of text.
Member Text::Text (string filename, string sectionName, FontType t, int size=24, Color c=Color::WHITE, int w=600, int h=150, Point2D pos=Point2D())
move this to TextBox or some other class. This really shoudln't be a constructor for Text
Member Text::wrap ()
implement it sometime add one char at a time until the next char would make it too long and wrap like that (will probably break for jap but that's the best I can come up with for now)
Class Texture
see if making a template for this idea would make sense since Texture and Font both do it.
Member WorldObject::moveTowards (Point2D direction)

Implement with AI

have Point2D keep track of magnitude for useability later

move velocity magnitude towards direction defaultly or pathfind

Member WorldObject::mVelocity
split into magnitude and direction (can use more efficienct computation of values since they are obtainable)
Member WorldObject::update ()
Handle basic physics here or just do in all inheriting classes (probably better to do later). Make sure to implement velocity and acceleration correctly
Member WorldObject::WorldObjectType
make sure to put all WorldObject children in here!