Created AIAgent doing nothing for now.
Implemented first version of AI sacrifice/play/activate.
Rectified creating of non-persistent behaviors;
Rectified implementation of non-persistent behaviors: default constructor is compulsory.
Implemented Game cloning:
* Behaviors are cloned in two phases;
* * In the first phase behaviors are default-constructed;
* * In the second phase behaviors are transferred from the original behavior to the cloned one;
* Implemented correctly transferring for:
* * Warrior;
* * LastingEffect;
* * Various behaviors involving warrior attack modifier;
Removed Passive_NoPlayerAttacker;
Removed Profile from Player.
Renamed/Relocated MessageMap.MessageHandlerAttribute to MessageHandlerAttribute;
Refactored BaseController : Made it work in sync mode, which no inter-thread communication happens between Notify and Respond;
Refactored BehaviorModel : subclasses now can override the GetBehaviorType() method if BehaviorModelAttribute is not provided (fixed crash on some behavior's ModelType.Instantiate());
Added Game.SimulateMainPhase() to run MainPhase once on simulate-only game;
Implemented Simulation.Context for basic choice-based game state forking:
* Each different purposed simulation shall derive from BaseSimulator and yields every possible choice at every interaction;
* Refer to PlayCardSimulator (W.I.P.);
* Implemented some choices, more to come soon.
Implemented evaluation of a game;
Used the AI to decide how to play a card instead of hard coding card's value.
Card attack score is now weighted by the warrior's state and the presence of Neutral behavior;
Choices are now printed to debug output;
PlayCard choices are now only selected for distinct card models.
Made Card UI rotate/flip correctly in both VsAI mode and Hotseat mode;
Made particles be double-faced temporarily.
Added DoubleFace option to particle system.
Implemented MainStage2Simulator which basically enumerates every possible attacker/defender pair;
Used MainStage2Simulator to make a plan for AI attacking;
Fixed a crash in LastingEffect.
Implemented planning for AI outside Main phrase.
Implemented correct game simulation out of main phase;
Game evaluation now takes battlefield cards' value into account.
Moved AI planning to a standalone thread to make the game run smoother.