Added JSON test file. Created Player and Enemy models with initialisers.
Created MODELS: Player, Enemy
Created VIEWS: PlayerView, BattleView, HomeHeaderView, HomeFooterView, HomeViewController's View

Linked views together - The HomeViewController's XIB contains placeholders for HomeHeaderView, HomeFooterView, and BattleView. These subviews get loaded based on their respective XIBs (see code in their initWithCoder and initWithFrame).
Create STORE: PlayerStore, EnemyStore
 - Store enemies in a store as they are retrieved (caches their data)
Create MODEL, VIEW, and CONTROLLER for AttackButton
- Since I used UIButton, the View and Controller have been combined into one (KLBAttackButton)
Created JSON Parser to save/load data
Implemented AttackDelegate Protocol
Added KLBAnimator - class methods apply animations to CALayers.
Added player data loading in application delegate. Data stored in PlayerStore.
Renamed BattleView to BattleViewController. BattleViewController will house the Controller logic also.
    Added loading of Enemy Data to the Enemy Store whenever a battle starts. Data is kept unique by a key in the JSON file.
    Created simple "battle start" method in BattleViewController.
Changed Enemy initialiser method and overrode the description method.
Added functionalities to Enemy Store to add and retrieve Enemies stored in it.
Implemented button to start battle in Footer View.
Refactored initialisers for the Header, Footer, and Battle Views.
    Transferred responsibility of initialising views from Home View Controller to the views themselves that it loads in its XIB.
Added constants to the JSON Controller to access specific JSON attributes.
Added Notifications object that stores constants that represent events to listen to.
Refactored Player initialiser and its constants.
Added methods to store and retrieve Player data from Player Store.
Added battle placeholder images.
Updated test JSON file to implement the list of enemies as a dictionary instead of an array (so that entries are accessed by key).
Removed responsibility to load Player data from AppDelegate.
    Home View Controller, the main View Controller, now does this.
Created PlayerController to handle Player data.
    Implemented level up, gain experience, reduce / gain energy.
    Implemented Alert that appears when energy is zero and Battle is attempted.
        Will restore energy if you "pay".
Added "key" property to Enemy to be able to access them from the Enemy Store.
    Updated JSON Controller accordingly.
Added notifications for Battle Start Attempt, Battle Start, Battle End.
Added notifications to handle the changing of player stats: Level, Experience, Energy, Name.
Implemented Player energy reduction on Battle Start
    Changed implementation of Battle Start to make an Attempt first
        If Player has enough energy, deduct energy cost then proceed
Added Player stat labels to Home Header View. They update when the relevant notifications are posted.
Fixed issue with Player Store that caused infinite setter calls.
9/1
Created EnemyController to handle Enemy stats logic
Removed responsibility of loading Enemies from BattleViewController
    Moved to EnemyController
Added dealloc methods to PlayerController and EnemyController
Prevented the Start Battle Button (in HomeFooterView) from working if a battle is on-going
Created time limit countdown logic in EnemyController
Added lose condition: timer runs out in BattleViewController
Added win condition: enemy health runs out in BattleViewController
Fixed Enemy initialiser bug that caused a saving error for the enemy name.
BattleViewController now follows that AttackDelegate protocol.
Implemented placeholder attack (done by tapping the BattleView screen).
Merge pull request #1 from cgosingtian/enemyControl_1

9/1
Added Fade In and Move to Animator.
Linked Attack to AttackButton - AttackButton now uses data from the Attack model object.
Linked AttackButton to BattleViewController via AttackDelegate Protocol.
Implemented full Battle logic: Starting a Battle costs Energy. In Battle, Attack Buttons randomly spawn. Tapping an Attack Button deals damage, but Attack Buttons fade over time. If time runs out, battle ends in defeat. If enemy loses all health before time runs out, Player is rewarded experience points.
Created an AttackButtonStore to hold attack buttons. Will use this as a Factory later (low priority). It's working fine now, even if the generation of attack buttons is a bit inefficient.
Added failure methods to AttackDelegate Protocol.
Merge pull request #2 from cgosingtian/attackDelegate_1

Attack delegate 1
Added Flash animation to Animator.
Fixed issue with Attack Buttons getting deallocated twice (causing a crash) due to notifications and IBActions.
Added FlashAlpha with options and FadeIn with options to Animator.
Implemented attack button movement.
Updated AttackDelegate protocol to take the sender as a parameter.
Added to game logic:
    Victory / Defeat display
    Easy, Average, Hard difficulty
        Average = Shields allowed
        Hard = Shields and Movement allowed
Changed Enemy time and health to NSIntegers to allow negative values
Implemented Shield button: Tapping a shield causes player to lose time
Updated Home Footer View to show three buttons to select the difficulty
Added gradient effects for Successful Attack, Failed Attack, and Block.
    Also used these effects for Victory and Defeat
Merge pull request #3 from cgosingtian/battleControl_2

Battle control 2
Fixed a bug that caused a crash at the end of a battle. (pointer was dangling)
Cleaned up code.
Fixed flickering animations in Animator.
Updated cover image view.
Fixed some memory leaks.
Fixed crash bug caused by the "time changed" and "battle end" notifications being sent "simultaneously" due to the result of a Shield Button reducing time to zero (causing battle to end). Fixed by having only one of these notifications directly handling the "end button" processing.
Reduced Flash White opacity and duration slightly.
Fixed some memory leaks.
Fixed memory leak caused by timers.
Fixed memory leak in Player Store and some in Enemy Controller. Added some animation clearing when starting a new battle in Battle View Controller.
Fixed all memory leaks in Enemy Controller.