- [DONE] Networking: All primitive data types should use the SFML explicitly sized types

- [DONE] Networking: Extend Packet- count size, then implement zlib compression and count again

- [DONE] Networking: Throw away packets that are "too old"

- [DONE] SFMLImGUI Name, IP (Start Game for First Joiner)

- [DONE] recursive overlay processing and drawing

- [DONE] Modular GUI system

- [DONE] Modular input system

- [DONE] GameGui for placing turrets (display turret sprite as well as turret range)

- [DONE] Break server logic into stand along class so it may be used in the client later

- [DONE] Host game server from inside client

- [DONE] Turret range when mouse over

- [DONE] Resource Manager

- [DONE] Debug turret double fire

- [DONE] Get money form killing creeps

- [DONE] Transmit money via world update

- [DONE] Restrict turret building based on money

- [DONE] Server keep track of players (IDs + names)

- [DONE] Client dissconnect message

- [DONE] Remove client from player list on disconnect

- [DONE] Multiple streams of creeps

- [DONE] Convert from left bar to bottom bar for UI

- [DONE] New background + paths to demo multiple creep paths

- [DONE] Work on network protocol (World Setup to contain paths, World Update, should contain EVERY thing, then simple Creep Update is sent most often)

- [DONE] Map file format:
	+ Configurable creep waves
	+ Image path (for now, may pack later)
	+ Creep Paths

- [DONE] Sync turret creation over the network (used to be handled in World_Update)

- [DONE] Load map background based on Map data

- [DONE] Add title screen

- [DONE] Restrict turrets from being built on or "near" the path

- [DONE] Implement data driven creeps
	+ Creep XML
	+ Creep description containers
	+ Creep description managers
	+ New CreepClient
	+ Network syncing for new creep system

- [DONE] Implement creep wave system

- [DONE] Implement data driven turrets
	+ Turret XML
	+ Turret description containers
	+ Turret description managers
	+ New TurretClient
	+ Network syncing for new turret system

- [DONE] In release mode, redirect std::out to a file

- [DONE] Implement turrets actions via AngelScript
    + Implement Turret Fire Proccess client for calling effects script

- [DONE] Load the starting money for each player from the Map file

- [DONE] Load turret fire animation from turret XML

- [DONE] Explosion world overlay on creep death

- [DONE] Improve turret scripting
    + Calls to include World refrence
    + Expose more functionality for all registered objects

- [DONE] Add path width into map file

- [DONE] Properly sync Map over network

- [DONE] Sync creep wave data in Setup_World NetworkMessage

- [DONE] Enforce turret build constraints at the World::addTurret() level

- [DONE] Implement "Host" GUI to select the map to load

- [DONE] Right click after selecting a turret will unselect it

- [DONE] Create a config file
    + Provide an option to run in full screen
    + Default player name

- [DONE] Start world NOT running, then when switching to running, reset timer

- [DONE] Make resource managers thread safe

- [DONE] Add to config: IP, Port, debug options

- [DONE] Make the config write to disk to save changes

- [DONE] const all the description pointers

- [DONE] After a creep wave is finished, the Host must press a button to start the next wave

- [DONE] Don't remove the player on dissconnect, simply store that they are dissconnected, then on new connection, see if there are any dissconnected players spots to fill

- [DONE] World should pack current turrets and creeps to set up late joiners

- [DONE] Bug: [CLIENT] Turret owner not found for turret (after client connects into a old client's spot)

- [DONE] Handle connection failure more gracefully

- [DONE] Implement chat/console

- [DONE] "Close the loop" Clean up after successful game and be able to start another

- [DONE] Player list status icons

- [DONE] Implement robust map browser

- [DONE] Restrict turrets from being built on or "near" other turrets

- [DONE] Make world thread safe

- [DONE] Build on Linux 64

- Display red invalid placement areas when placing a turret

- Creep health overlay

- Turrets should be script classes

- Syncronize WorldId allocation (this is going to be a tad difficult)

- If server detects a failed turret build, send a Remove_Turret message to that client

- Improve turret scripting more
    + Register Vector2d type
    + Document exposed function in Cannon script files
    + Must have a way for turrets to create script varriables that stay alive

- Make everything resolution independent

- Debug:
            Player "Defender" disconnected
            Client connected from: (

- Dead creep overlay

- Provide an option to set the resolution in config file

- Preload resources based on Map data for creeps (turrets?)

- Debug client side mem leak

- When placing turret, place dummy, and wait for network update to actually place it
	( possibly transmit the turret's current target in an effort to keep more in sync )

- Fixed width time step

- Run server 1 step behind clients?

- Turrets should rotate to track their current target (do in scripting)
