Added AI Soldier.

Squashed commit of the following:

commit a3a8fb6b54ec4fd8adb9b990ae7204caf5719f56
Merge: e58ea8c d215248
Author: Philipp Abraham <abrahamp@informatik.uni-luebeck.de>
Date:   Tue Apr 24 01:33:04 2012 +0200

    Merge branch 'Soldiers' of https://github.com/Delvar/Catacomb-Snatch into Soldiers

commit d2152486722cc8fec0b25366f58a206de15772bd
Merge: 2a0518f aea10b2
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Apr 23 11:40:47 2012 -0700

    Merge pull request #1 from LordofMaps/Soldiers

    Added the Soldier to the Tilesets

commit aea10b2f84b9532218209e08215d23a3bcec0948
Author: LordofMaps <LordofMaps@gmail.com>
Date:   Wed Apr 18 23:33:30 2012 -0400

    Edited the player 1 and player 2 tileset to include the soldier and
    added the tile id to levelutils.

commit 2a0518f213f5a132382bea53eab04e4d4b2ed300
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Wed Apr 18 21:15:33 2012 +0100

    replace 99999999f with Double.MAX_VALUE

commit 70c4a2216c6e4c0d673fed4359975341116a9cd9
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 22:49:07 2012 +0100

    Fixed canBuy to check player level

commit 226d3ba8ec82fea2ba26dd6913e069db9f8824f0
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 22:48:31 2012 +0100

    Fixed Upgrade when in creative mode (copied direct form Building)

commit d4ed2204ee9a2a1d6c61b3d66f0c181a9a8da858
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 22:08:35 2012 +0100

    Added ShopItemSoldier to getNewObjectFromId

commit 2c9d080350f90d4c0db5ca303709473ce1c3edab
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:45:53 2012 +0100

    Fixed Soldier for Bitmap/Screen Abstraction

commit 6c1ec812d558c67f332500ad2eec1973f84d925d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:44:33 2012 +0100

    Fixed Pather for Bitmap Abstraction

commit 2624e63b31b2eb42559de81dbe5863962edc6991
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:43:16 2012 +0100

    Fixed ShopItemSoldier for Bitmap Abstraction

commit 44d11a67c0ea2ae4a450ed90c103759830e6808d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 23 21:12:17 2012 +0000

    Made Soldiers far more expensive.
    buy:2,K upgrade level2:4K, upgrade level3:6K

commit b11cf97c5e76f7a13dca4f84c0f11729abbc3c5f
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 22 23:34:44 2012 +0000

    added a variable for the ratio for the focus enemy, so while patrolling
    they will focus on and move towards Mobs with 70% or less health. but
    while following they only do this when the Mob is on 40% or less.

commit a294f4845182b97b5e9140201bfa2855993a9904
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 22 23:22:20 2012 +0000

    Added Check if we have a target, if we do and its low on health move
    towards it but stay at least Tile.WIDTH away from it
    if not use super.getMoveToPos();

commit ca8f63a0bb5888ad5b4836f25cce10bfe248571d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 22 22:49:40 2012 +0000

    added some checks for entity.removed so it stops targeting entities that
    are dead.

commit 635e0efaa9111c15f473712df39b3ef5c88b8f55
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 22 22:17:05 2012 +0000

    Added a target Entity to Pather so it will focus on specific Enemies for
    longer instead of always switching ot teh closest.

commit f20fe19324532db61a1dbb2bceab73a3b64fdefa
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:30:59 2012 +0000

    Added java doc to IRemoveEntityNotify

commit acc0050421e5a112f27014add9381d4f549c66c6
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:27:09 2012 +0000

    Added Java doc to ShopItemSoldier

commit 07004bd11ff31e3ee256ffe579583c068032c02e
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:20:16 2012 +0000

    Added comment on new LocalPlayer

commit 8b1c9381bc1f46a61a782ae13bf94179146873d0
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:16:49 2012 +0000

    Made all members private and added setters/getters to AvoidableObjects

commit 74d0008e7cde80c3cce6cbe31f7817d4e740e032
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:13:00 2012 +0000

    added java doc to AvoidableObject

commit 0dcdeedfd128f9c657b3845efa435ce4891cc3ef
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 21:01:17 2012 +0000

    added note about Entity.canPass()

commit 84513658c6c6956de202082d601fd50d790b380d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 20:58:23 2012 +0000

    Added java doc to Level

commit 5ea01d1cd4a60db97e28a04aa4d30f32f5301782
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 20:26:22 2012 +0000

    Added javadoc to Soldier

commit 3d6bef74f36b5950daca9d231cd8eed93603140a
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 15 02:08:03 2012 +0000

    Formatted and added javadoc comments

commit 0b771bbc020d500029f03e2b904b349a93261c94
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:36:08 2012 +0100

    Fixing line endings to UNIX as per spec

commit 332cecb6d374705587cbdeaa7f64f44b1c09c6b5
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Wed Mar 14 01:57:56 2012 +0000

    this is the dish gfx

commit 3c938901b358457bafe83ce67e7d4e7c784e508d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:23:00 2012 +0100

    added little dish above soldiers head as a visual indicator.

    Conflicts:
    	src/com/mojang/mojam/screen/Art.java

commit f8e3a418e421857c804b4b61ac633a6915661a55
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 22:12:12 2012 +0000

    Made Mth.PI and Mth.PI2 public

commit 4b76cc82cf3aa455233886333482858d0f9b5804
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 21:43:37 2012 +0000

    added dust puffs and removed walkTime as i already have stepTime!

commit 3e8008cf899f8c61dd6362df40d0fdcc5efecd8f
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:20:26 2012 +0100

    fixed SmokePuffAnimation for bitmap/screen abstraction

commit bfb6c782d55acbc0d0f5183ee87507c2a0165cb7
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 21:35:37 2012 +0000

    Added Smoke puff constructor that doesn't require a Mob!

commit c5b1327b86769f2d7aab09c72b62482fd255eb29
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 21:21:58 2012 +0000

    added render of upgrade cost above soldiers

commit c4f734b0aa99e751c2640f97342d02489f1106c8
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:14:29 2012 +0100

    Fixed addProgressBar

commit 03f87ba0239b8ef0b92444ab8a70e0fa18b3e493
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 21:07:54 2012 +0100

    Moving renderMarker to Mob instead of entity

    Conflicts:
    	src/com/mojang/mojam/entity/building/Building.java

commit f3bbe9ef4455063c8849a9aced1a991e7e85a63c
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 20:00:29 2012 +0000

    removed polling soldiers list to see if they are dead.

commit 43ca283ea33c8d9cfb4ac8c9367ac49b74733208
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 19:59:28 2012 +0000

    soldiers now notify spawner on death

commit 1f3e79c720da88225c633210cad0fc6776d01352
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 19:52:15 2012 +0000

    added IRemoveEntityNotify interface so Entity can notify SpawnOwner, i
    may turn this into a subscription.. ill thik about it.

commit b8572d524dfcac4ed11ef8e741c91e7abeded0d3
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 19:43:45 2012 +0000

    added spawnSource to entity so when an entity dies/is removed it can
    call back to the original spawner.

commit f93f2e494b4b91cedf807c76ea3b9a846815f38d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 02:48:42 2012 +0000

    POC of a level limit on Soldiers, currently uses a nasty way to keep
    track of how many soldiers there are alive by keeping a local list and
    polling every frame to see if any have been removed from the level.
    not ideal but just POC.

commit 29d234ced3cffc6fd5e06a2d20acb409b7d103f9
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 02:25:58 2012 +0000

    Added player level check and list of Soldiers to keep track of how many
    have been spawned.
    also added Gray out when too may soldiers are spawned.

commit 1affdfa870eb7bbc4dace304a91cc74773dfdc27
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 02:18:40 2012 +0000

    Added localPlayer static similar to localTeam to se can access it from
    anywhere in the code

commit 245d84aeaa66fc4445f6ad1c1d3007c48f8e149e
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Tue Mar 13 02:09:17 2012 +0000

    added getters and setters to Player for plevel

commit 143d157c3ceeaf04d8ec6bd5ea749217dc580bdb
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 22:41:25 2012 +0000

    Added the radius of the object to the local avoidance code, works better
    now.

commit 8ca770f597c7f9c31bec140befd367a239bd399b
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 22:12:55 2012 +0000

    added avoidDistance to avoidableObjects

commit e09df00a12ce17a9bc617688be7f01b4ff9dfd44
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 22:11:26 2012 +0000

    added avoidDistance to avoidableObjects

commit d3f3727d9c41dc6c761e83cfedea6736d8a29230
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 21:23:28 2012 +0000

    Added upgrade system back in. now upgrades correctly.

commit 4b86fd7cae97340dfd83c28d10fba9431d02c4b4
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 20:58:50 2012 +0000

    Added tool tip for ShopItemSoldier

commit 5dbe1285dbb10d6bd33b4492a7297acac6081509
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:48:45 2012 +0100

    Fixed SolderRifle for Screen/Bitmap abstraction

commit 16cbb24ad37e8622979f56dd8303ba55052255de
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 01:49:52 2012 +0000

    Added SoldierRifle as the default player Rifle is far too power full for
    an NPC

commit e8e2f1c9017436e173994b626144412cda3be2cc
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 01:28:01 2012 +0000

    Cleaned up the Player Bump to match existing calculations, this allows
    players to push them around a bit in case they get in the way.
    Set REGEN_HELTH to false as they have a lot of HP and allowing regen is
    silly :)
    Set their damage to 0 in an attempt to stop them killing mobs by walking
    into them.

commit 0a9df8ae75867148dc31ba486bde9bc2b22cd8f3
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 00:32:20 2012 +0000

    Removed renderFillBar from Soldier as no longer needed.

commit 99987b50ff302bbf841faf0ac22eb966043b1469
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:46:57 2012 +0100

    Fixed setDoShowMoneyBar again.

commit be4e4b46b101fe1621d3eeab2759a80f5dabd836
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Mon Mar 12 00:30:58 2012 +0000

    Added display of Current Mode above soldier when selected by the player

commit 7a676710d11692b1eec0f95a88ac587d8d572446
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 02:01:17 2012 +0000

    Fixed moneyBar so it only shows when highlighted

commit d8935e04646483caa6f955bd6bf6e82ccbd286d3
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:57:53 2012 +0000

    setDoShowMoneyBar to false

commit 84db7bbf42928eefafe3bbbb430b654cebe48a09
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:57:25 2012 +0000

    just moved maxMoney up under money

commit cc9021e7ee1429d86346fd7efcbaa1681455c95a
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:51:24 2012 +0000

    removed local money/maxMoney

commit 9c835057288838658268647dc72009566ef10440
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:50:40 2012 +0000

    replaced Money and MaxMoney with getters and setters

commit cb2c3460df103909b9418f833f62e8afc773846b
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:36:46 2012 +0100

    Added small fix to hide money bar when carried by players

commit 723c6a1d0f0fd3007fc25a3c75784e4c03ee13ab
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:33:37 2012 +0100

    Added fix for 0 divide in creative mode

commit 46f9799027704ac704418fcea2178a8c21bfb244
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:24:49 2012 +0100

    MoneyBar added to Mob using generic progress bar.

    Conflicts:
    	src/com/mojang/mojam/entity/mob/Mob.java

commit 4efd4b2279efcfc577ac206834f580d61cc47cf8
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:23:10 2012 +0100

    adding a basic generic progress bar draw function to Mob to be used by
    both Health and Money

    Conflicts:
    	src/com/mojang/mojam/entity/mob/Mob.java

commit cd45628780b9a99d37865dfdac2d8af00200ca3a
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:20:44 2012 +0100

    Moving addMoneyBar to Mob

    Conflicts:
    	src/com/mojang/mojam/entity/building/Harvester.java

commit 3d0c48492431f5b8799d3e62ac3e05eccf0b5d0a
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:20:00 2012 +0000

    modified addHealthBar so max start = 20 as there are only 20 sprites in
    the bar

commit e9519fc58dea9c1545dbeb92e5f9f3069b48a7da
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 01:09:35 2012 +0000

    Added money to Mob

commit 3e18c86b204f69a594e694a443266313fdd36a69
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 00:58:03 2012 +0000

    tweaked flash timeout to 5 ticks for Mobs and Player

commit bc7720180be1eb6ec4cf722247c68751f384ab92
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:15:02 2012 +0100

    Fixed flash for Mobs (had it in the wrong place in render!)

    Conflicts:
    	src/com/mojang/mojam/entity/mob/Mob.java

commit 145ee0a9e93dd037a8261f2a21a67e0b2ef55d87
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 00:43:24 2012 +0000

    made flashTime a timer instead of force setting to 0 instantly.

commit d964831c20855df0540a1c460e8fe70cb2698c21
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 00:29:36 2012 +0000

    added setter getters for flashTime

commit bde8c9404eb54edca62b0275aa931d1bb2dd3693
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Fri Mar 9 00:26:40 2012 +0000

    added countdownTimers() to Mob

commit 525e70e641e46efb2a0ad5ca0ee8eeafc8b518aa
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:13:51 2012 +0100

    Moving Flashtime from Player to Mob

    Conflicts:
    	src/com/mojang/mojam/entity/mob/Mob.java

commit 13f40cca1b0972a09492205ea0b1fb836b0f4ad9
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 23:48:13 2012 +0000

    Ooops fixed an issue with Hard coded Team values for Soldier and Pather

commit c6b6cd91897625e3cf255de7adb1bf9461bc645f
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 23:22:30 2012 +0000

    added bounds check to getWorldPos()
    Soldiers initial working release!!!

commit 8f46e097933e6f884fff5a1bf4a1b77b7df37996
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 23:15:48 2012 +0000

    added constance for Soldier movement

commit 7c7100222a322a0ed8480f092e82ebb8c40c4c1c
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:52:42 2012 +0000

    wrapped isTargetBehindWall to level.checkLineOfSight

commit 5f41633a9af0aa54c055f231f304fa8099d58670
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:29:05 2012 +0000

    Added ShopItemSoldier Class so players can buy soldiers

commit 6f6d0b919418d72fa9113cc3947fea197cc34d92
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:25:54 2012 +0000

    Added setters and getters for weapon in Mob.

commit 0937aaa1d1630de12501b9dcea16395be1fcf4b8
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:21:00 2012 +0000

    Added normalizeAngle() to Mth this clamps a given angle into a 2*PI ark
    around a given center point.

commit 4e299509a0e778aa21389ce64813aa6314150e94
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:19:10 2012 +0000

    Added normal() to Vec2 returns a 1 unit long vector like normalizeSelf
    but none destructive.

commit 2a33ef187766aa218cd1652e5511f152ebd6f0cc
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:11:02 2012 +0100

    added getPositionFromTile() to Level

    Conflicts:
    	src/com/mojang/mojam/level/Level.java

commit 37f69534c27ced89d0dafbe2d797055dfff5f04d
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:12:57 2012 +0000

    Added optional Mods to AStar path finding to make them more
    natural ie not always the shortest path 1. paths next to walls 2. random
    per node variation.

commit c0a8e7f3c96c03f2189dd6bef548a740b486c941
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 22:08:11 2012 +0000

    added getCurrentWorldPos() previous()

commit 9f22d3aa23881991240cd14280d44b53572a7277
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:08:53 2012 +0100

    Added checkLineOfSight and getTileFromPosition to Level.

    Conflicts:
    	src/com/mojang/mojam/level/Level.java

commit 60ad0751cf0e1eeb45748fa5ecdd26553a232b4b
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Apr 5 20:07:21 2012 +0100

    Added checkIfEnemyNear to HostileMob

    Conflicts:
    	src/com/mojang/mojam/entity/mob/HostileMob.java

commit be5d4cda612aae7f08ba5f8eda93a1bca8b3f46e
Author: Morgan Gilroy <morgan.gilroy@gmail.com>
Date:   Thu Mar 8 21:50:58 2012 +0000

    Adding the base classes FIXME: