To do:
 / A loop that identifies which player is in use
 / A section that allows players to move in both directions
 / Face in the direction of travel
 / Lift right leg (bend at hip)
 / Straighten right knee (bend at knee), lower right leg
 / Lower right leg
 / Move left leg up
 / Move left leg forwards
 / Bend more (make angle tighter) at left knee
 / Move left leg forwards
 / Straighten left knee
 / Allow jumping
 / Jump by starting off with, say, 100N, and gravity takes 3 every frame
 / Face the screen
 / Bend both legs at hip and knee (hip++, knee--) slowly
 / Bend both legs at hip and knee (hip--, knee++) fast
 / Fly into air
 / Code to make them keep jumping until they are done
 / Limit movement with walk credit
 / Put walking in bar along bottom
 / Put jumping in bar along bottom
 / Fix the first segfault (creating players)
 / Fix the second segfault (deleting all players)
 / Fix the third segfault (copying players)
 / The basis for the bar along the bottom
 / A loop that chooses what to draw along the bottom bar
 / Pretty up the menu screen
 / Put the textbox control in
 / Put the click() function in
 / Make a button function : I had crossed this, but I then converted toa GUI system
 / Implement a GUI system
 / A loop that allows players to select their info
 / Allow users to select number of players on each team
 / Allow users to select number of AI from total players
 / Allow users to select Name
 / Allow users to select Team
 / Allow users to select their map
 / Make the HP bar have good colours
 / Give the people elbows
 / Give the people knees
 / Show the points next to the name
 / A draw_scene() function which draws the scene
 / Draw the ground
 / Draw blocks and scenery artifacts
 / Make a struct to hold a rectangle and a pointer to the bitmap
 / Allow screen mode changing
 / Draw a coffin for dead players, act as scenery artifact
 / Add high score sorter to bar at bottom
 / Do a scrolling thing at the bottom with my name and addresses
 / Make the scrolling thing readable
 / Make the panel mention the current player
 / Move arms when walking
 / Gravity thing
 / Make current player be in that players team colour
 / Make code in 'NEXT' less error prone
 / Make buttons prettier
 / Draw cursor by code
 / Make arrow cursor
 / Make some more cursors
 / Do side scrolling
 / Allow [space] and [arrow] at same time (jump and move)
 / Make Next change the menu background
 / Write a shell script to print out lines done and points done
 / Make coffin look pretty
 / Do collision detection with bounding box
 / Make the bounding box fit the player
 / Make the ground work with collision detection instead of where the feet are
 / Add nice graphics to the players
 / Add screen to select level
 / Convert to C++
 / Nice menu system based on GUI system
 / Make 'I' cursor for text entry
 / GUI item text entry
 / GUI item text spinner
 / Make it grey out on last and first
 / GUI item button
 / GUI item tickbox
 / GUI item number entry
 / Make it grey out on last and first
 / Load images from files
 / Menu stuff
 / GUI images
 / Player images - Upper arms (10x20), Lower arms (10x25), Upper legs (10x25), Lower legs (10x35), Elbows (10x10), Knees (10x10), Body (10x60), Left body (10x60), Right body (10x60), Head (30x30), Left head (30x30), Right head (30x30)
 / Draw some player skins
 / Do the menu screens from the WHSmith notebook folder
 / Use lookup tables for sin and cos
 / Separate graphics from logic
 / do_button() splits into draw_button() and update_button(), update_panel() splits into draw_panel() and update_panel(), etc.
 / FPS counter
 / Sort out timing problems
 / Make the jump button right control and space so they can jump while aiming with the mouse
 / Split game.cpp up into map.cpp, player.cpp, init.cpp and game.cpp
 / Make it so the players' name can't extrude over the divider
 / Make it put red on red end and blue on blue end
 / Fix segfault in NEXT section
 / Make draw_player() easier on the eyes...
 / load_image() to give an error if image fails and find the right file extension
 / On GUI list box, use NULL instead of "(null)"
 / Stop them from getting their limbs in a twist
 / Make the players hands fit the gun better
 / Make the keyboard operate the aiming
 / Convert back to C...
 / A section that allows players to select weaponry
 / Put weapon selection in bar along bottom
 / A section that allows players to aim
 / Draw the weapon on the player
 / Put aiming in bar along bottom
 / Get points when you hit someone
 / Lose HP when hit
 / A section that allows players to watch the actions
 / Put something like 'Please Wait...' in bar along bottom when watching actions
 / Allow player to control power of gun
 / Add x speed deceleration to projectiles (y speed is gravity)
 / Implement some weaponry
 / Draw some nice guns : Thanks to Nick Burns and Rory Lucas
 / All images can be animations
 / Draw some bullets
 / All images can be animations
 / Shrapnel off projectiles
 / Dynamic maps and objects
 / Get 20 more points when you kill someone
 / Make them always go on the correct spawn points
 / Allow map to set different image for objects
 / Allow map to have custom objects (specify image and size and other stuff)
 / Load cursors from files, not cursor.c
 / Make most stuff smaller (now, as soon as you can see them you can't miss them)
 / Make it actually add a coffin when people die
 / Make coffin spawn in right place
 - Make people move backwards when their width grows
 - Remove power adjustment for some weapons in some modes
 - Allow users to select personality/traits
 - AI movement
 - AI weapon selection
 - AI target selection
 - AI weapon usage
 - AI info selection in player selection screen
 - Do a credit screen
 - Make a random map generator
 - Do help screen
 - Do a thing that selects how many battles to do
 - Keep the points between battles
 - Do a congrats screen at the end of the battles to say the winning team
 - Do a thing to let players die
 - Make the panel say something on the menu screen, maybe a pong ball bouncing around
 - Indicate on player that they are to play
 - Make it say team health and lives and points at top corners
 - Make some maps
 - Music
 - Sound effects
 - Traps as map objects
 - Powerup engine - Treat powerups as map objects
 - Potions and spells as powerups
 - Weapons and movement credit as powerups
 - Do collision detection with do_line and do_circle or pixel perfect if bounding box returns true
 - Self destruct with big blast radius
 - Use sectors for collision detection
 - map_init() to initialise the sector thing
 - Spells. player_spells() - works out what spells have been put on the player
 - Shrink - Halves your size, all distances in draw_player() are halved is one way of doing it
 - Fatigue - On enemy players next turns they only have half the movement credit
 - Blindness - On enemy players next turns they are faced with a blank movement window. Control window is still visible
 - Sharp shooter - Player gets +5 damage on all weapons
 - Make the people slowly straighten out when they stop walking
 - Networking
 - Screen to allow host or client
 - Screen to connect
 - Screen to setup server info
 - Screen to setup client info
 - Network protocol to include info about the players turns and actions
 - Network handler
 - Use OpenLayer for graphics
 - Normal gun - Unlimited ammo - No points required
 - Grenades - Start with three - Collectable
 - Shot gun - 5 goes - Collectable, when at 50 points get it for free
 - Weapon modifier Hurting - Gives the weapon +5 damage, takes 10 HP off attacker, collectable.
 - Powerups to give you points, HP, weapons, etc
 - Game mode FreeForAll - Each for himself, No teams, Regular maps, Allow custom colour, Allow AI, No Respawn
 - Game mode TeamDM - Each for his team, Regular Maps, Allow to choose team, Allow AI, No Respawn
 - Game mode CTF - Each for his team, CTF Maps, Allow to choose team, Allow AI, Respawn
 - Game mode Race - Each for himself, 1 on 1, CTF Maps, Allow to choose colour, Allow AI, Respawn, All start on spawn point 1, first to red flag wins.
 - Make text entry scroll like proper GUI text entries
 - Allow text to be selectable like proper GUI text entries
 - Game mutator Action - Stops it from being turn based. Only allow one human if on Local mode. Faster walking, faster weapons, faster jumping, faster aiming
 - Game mutator Mousework - Use the mouse for movement, aiming, shooting and jumping
 - Do a screen that allows mutators
 - Make general optimisations and cleanings - Read through every line, re-think every algorithm, etc.
 - Make the start game screen show the values in a different colour
 - Controls image in help section to make it easier to understand
 - Add blood and guts engine
 - Load maps from files, one file contains list of maps, one directory contains map_name.map's
 - Find new skins that are available and load them, similar system to maps
 - Add hands and feet
 - Allow controls to be customised
 - Parallax scrolling background to impress Rory - Can specify up to three layers when making map, and the speed they scroll at
 - Beam weapons
 - Vehicles
 - Blast radii
 - Allow skin images to be any width
 - Make high score loop in draw_panel() a bit faster, possible move into update9_panel()
 - Draw a picture on the panel background
 - Deformable environment
 - Skins and Subskins (find new name...)
 - Allow projectiles to have a trail of smoke
 X Do away with level_list, just have one map loaded at a time : Keeping level_list but only loading object_list at run time
 X Write a built in IRC Client : Defacement of List
 X Make the gun point the same upwardness when they switch direction : It resets to horizontal
 X Nice physics : The physics are fine for now
 X Spam this list... : Defacement of list
 X Make nice blur effects by drawing the new frame with partial translucency : No point, extremely slow
 X Use BDNE for networking : Not powerful enough
 X Make it work on Windows : That was a driver issue
 X Old player variables and backup player variables : They're not needed with the new algorithm
 X Make the collision work out which direction they have travelled : I found a better algorithm
 X Do collision response. Work out which corner to move by the way they have moved : I found a better algorithm
 X Do collision response. Work out which direction is the easiest way out of the box : I found a better algorithm
 X Add plasma cannons : Defacement of list
 X Add black hole generators : Defacement of list
 X Make it go Red, Blue, Red, Blue : Up to the players which order it goes in
 X Make some maps with map_init() : They get hard-coded at the start
 X Kill Max : Defacement of list
 X Stop players from walking through each other : No point
 X Use SCI networking library for networking : SCI is not being developed
 X Change weaponry items depending on points (more points = more weapons) : Have to collect weapons

     Todo: -
     Done: /
Not doing: X : Reason

Credits:
James Stanley             - Wrote the game, did everything not mentioned below
The Allegro Team          - Wrote Allegro
Rory Lucas                - Rifle images, skin improvements
Nick Burns                - Shotgun images
Kris Asick of A.cc        - Spent lots of time helping me with Windows support, collision detection, timing issues, and rendering times
Max Krupa                 - Fixed a memory error in the weapons[][] array
Jakub Wasilewski of A.cc  - Helped fix a segfault in the new_player() function
ReyBrujo of A.cc          - Helped fix a segfault in the del_all_players() function
orz of A.cc               - Helped fix a compiler error when changing to C
Evert of A.cc             - Showed me how to use pivot_sprite()
Richard Phipps of A.cc    - Gave a plan for collision detection
LennyLen of A.cc          - Helped simplify the copy_player() function, which was abandoned for Richard Phipps' idea
John Amato of GameDev.net - Explained bounding box collision detection
Tobias Dammers of A.cc    - Gave more information about collision detection

Hidden Messages/Features:
(Put this list somewhere)
The number on the side of the grenade launcher is 27-1-07, the date it was begun
Pressing Next on the menu section switches to an old style menu screen
Some images can be deleted and the game will generate replacements

Gun specification:
Guns should be 100x64.
The point that the hand holding the gun is at is 49, 31.

Player skin sizes:
Heads: 20x20
Bodies: 10x40
Lower Arms: 10x20
Upper Arms: 10x15
Elbows: 10x10
Knees: 10x10
Lower Legs: 10x25
Upper Legs: 10x20
