deductionTactics Wishlist: * Token Animations * Probably in the Liberated Pixel Cup style * alternative console-based main method * Multi-stance tokens * The Spy, as described in the Three Hundred Mechanics article. == a.6.0 == === Major/Breaking === Changed a bunch of interfaces to make them more functional and less imperative. Internal stuff. Doesn't matter in the slightest. * No listening to token events. Instead, the MainRunner calls a function on the PlayerAI. * The PlayerAI's commands are not set to a token, but through the takeTurn return value * Tokens are treated as values, not as references. * PlayerAIs are expected to be stateless, with a Memo object being passed around instead A new token selection scheme, in which each player selects a set of token classes independently, that set of tokens that each player chose is revealed to everyone, and then each player chooses a subset of the tokens chosen in the previous step. A new swing view, which shows the field and only one token's state at a time. This broke all animations that did exist. === Fixes === Players will take the maximum allowed number of tokens, rather than always trying to take five. Reversing direction multipliers, so that what actually happens agrees with the intended and documnted results. == a.5.3 == * Metastability improvements * Swingview: * Sequential animations * Damage value display * New SuspicionsPanel == a.5.2 == * Consolidating spaceclasses into one class with parameters * Changing a few dialogs to use JOptionPane instead of custom solution * Fixing spaceclasses such that all of them only permit passage when unoccupied * Adding SpaceClasses: SlowPassageSpaceClass * Making FlyingPassageSpaceClass actually work === Data === * Modifying maps: tripath, nobamb-farm3 * Adding tilemap: simple high contrast * Forest can now deal with Fire and Slow space classes === Fixes === * fixing WithAutorecord - it set up listeners to notice when a token attacked itself. Now listens for things that are actually possible. Presumably broken since a.5.0. I told you they didn't go through proper testing. == a.5.1 == * Adding AI: field potential ai * Rewriting console interface * Allowing preferences to persist == a.5.0 == === Major / Breaking === * No longer uses scala.swing or scala.actors. === Minor === * Adding Interface as example of broken encapsulation: RepeatAttackCheater * Adding AIDecorator: WithConsoleEventPrinting * Disabling Console interfaces * Adding support for a binary format (the json format still works) * Adding ability to change ListCellRenderers in Swing token-Choosing component === Data Level === * Modifying image: Kestrel - which isn't actually used anywhere... * Adding classes: Pheonix, Owl (with image), Pigeon (with image) * Changing weaponWeaknesses for Umbrella Swordsman * Using said binary format for token classes * found out that pack200 repacking is good for file sizes == a.4.1 == === Minor === * Adding Interface: ConsoleInterface_CFN * Turning the GrassyFieldChess tileset into a precompiled class because A: it's low-enough quality to be possible B: as a workaround for incredibly slow scripting. * The AI and Map choosing components have labels now along with changed appearance. === Fix === * ai NetworkClient will now respond to a "RequestAttackForStatus" with a Status attack, rather than a damage attack. * Main will now properly truncate the list of selected tokens to the available slots for tokens * Doesn't consume excessive amounts of CPU at all times from constant repaints… … again … === Implementation detail === * Icons are no longer held in Enumeration classes * Tokenclasses use "DontCare" instead of "Rand" to specify the choose-for-me condition. * Map starting spaces can now be provided inline === Data Level === * Adding Map: Tournament Bracket, Trimap * Adding image for class: Medic * Adding classes: Magenta Lion, Yellow Tiger, Cyan Leopard, Runner, Volleyball hitter === Dependencies === * svgSalamander updated from `October 2010` to `January 2013`. * scala updated from `2.9.1` to `2.9.3`. == a.4.0 == === Major level === * "How to make dungeons pretty" 2.0 > overlay - tile images can be compositions of multiple images, and some images can be specified to appear over the tokens > infinite discretion - tiles can use tiles from any distance to determine its own appearance > Doesn't actually have multiple layers of randomness yet… * map-choosing ability === Minor level === * The beginnings of combat-noises; currently only one type of sound when there is a hit and accessed with a new ai decorator: WithSound * Swing view: Added status infliction animations * Swing view: When selected, token's background will be a team color rather than a constant lime-green. > I would prefer a constant colored ring - like Fire Emblem Tellius - but that would require effort * Swing view: Now able to display information about more than two players * Started an interface using the console * Made the space types actually work as expected. === Data Level === * Added Forest tileset, because it shows off the Major change in a noticeable way. > MORE CREDITS!!!1! * Added a Castle-like tileset, because ??? * Removed the supermarket tileset, due to lack of ability to handle multiple types of tiles * Added Tokenclasses: Haunted Hoodie, Tiny Evergreen Tree, Snowman; with icons. === Minuscule level === * Changed the title of the Filter Classes dialog * Swing view: Switched which side the player's and enemy's token info panels appear on. * Better MANIFEST.MF == a.3.2 == * Adding tokenclass icons > Bluebird, Cardinal, Eagle, Crow, Falcon, Turkey * Selecting a token will cause it's side panel to scroll into view * WithNetworkServer and NetworkClient AIs can control multiple players now. * The "View Classes…" dialog now includes multiple views for displaying tokenclass information. > Todo: get that type of information display choice everywhere else * Adding Player AI Decorator: WithConsoleViewport == a.3.1 == * Adding tokenclasses > The birds * Adding tokenclass icons > Remaining Swordsmen generics > Clubmen generics > Pitcher > Penguin * Adding Base AI > GangUpAI * Fixed the About Dialog, which broke due to moved image resources * WithArbitraryTeam's frame now uses a JFormattedTextBox instead of a JTextBox it's now impossible to enter an invalid value and attempt to parse it * Making movement speed a public option * Making sure that when units die, they stay dead: Status effects can kill a unit, and units will not be able to move or attack when dead. == a.3.0 == * Decorators can be applied to PlayerAIs * Turning SwingInterfaceWithAutorecord base into WithAutorecord decorator * Turning SwingInterfaceWithNetworkServer base into WithNetworkServer decorator * Replacing hardcoded Viewport option into WithSwingViewport decorator * Adding WithRandomTeam decorator * Adding WithArbitraryTeam decorator * Moving icons from /sprites/** to /com/rayrobdod/deductionTactics/tokenClasses/** * Tokenclass maps can now have their "weakDirection" key set to "Rand" which is changed to a real Direction at run time deterministically. Thus, removing the PHP scripts whose only purpose was to do this at compile time. == a.2.3 == * Renaming com.rayrobdod.deductionTactics.ai.HumanAI to com.rayrobdod.deductionTactics.ai.SwingInterface * Renaming com.rayrobdod.deductionTactics.ai.HumanAutorecordAI to com.rayrobdod.deductionTactics.ai.SwingInterfaceWithAutorecord * Adding PlayerAI: NetworkClient * Adding PlayerAI: SwingInterfaceWithNetworkServer == a.2.2 == * Allowing observation of computer-vs-computer games * Giving a few dialogs default buttons * No longer eats CPU while idle (Added cache to generated generic images) * Class filters when working with numbers treat number as a lower bound, not an equality == a.2.1 == ==== Interface Change ==== * Possibility of animated Tilesheets (not that any of them are) * Allowing specification of a suspicion class's weapon weaknesses * Allowing to fill in all details by selecting a class by clicking on a name ==== Model Change ==== * The unused body value in a tokenclass is read from files properly now ==== Data Change ==== * Golfer tokenclass added * Additional class icons provided == a.2.0 == === Major level === ==== Model Change ==== * Turning unit classes into a service * no longer stored in the file unitClasses/basic.json * built-in classes resides in com/rayrobdod/deductionTactics/tokenClasses/*.json, but see service for extending === Minor level === ==== Model Change ==== * Adding Weaponkind: Powderkind * Adding Status: Heal ==== Interface Change ==== * Adding indication about all of a class's weapon weakness values. * Allowing unsetting of suspicions ==== Data Change ==== * Adding more classes; 36 now, although most don't have proper icons * A few more icons for token classes == a.1.1 == === Interface Change === * In the battle screen, BUTTON3 click (Right click on windows) a unit selects it * Move and attack orders now only sent by BUTTON1 (Left click for windows) * Changed layout of "Choose Team" panel; the current members and buttons are fixed width, while the possible members are variable width == a.1.0 == First released version * There are 25 units - the 20 standard ones, plus some either showing extra range, or extra speed. * There are 4 player intelligences. * HumanAI is human controlled and uses a GUI. * HumanAutorecordAI is an extension of HumanAI that uses the same algorithms as the computer-controlled players to determine enemy attributes * BlindAttackAI is computer controlled and simply tries to attack whatever is closest, ignoring whatever it knows about enemy units * SleepAbuserAI is computer controlled and will attempt to use sleep to it's potential, staying out of enemy range when possible, and putting enemies to sleep to reduce range further.