Game Features: -os x integration (menus, hooks for about and exit) -create a set of tutorial levels for learning the game -Make real game UI: -preinit the bsh interpreters so there's not a lag during gameplay -explain keyboard shortcuts in tutorial level (DEL, new gates, etc) -it should be possible to include inline images (sourced from the level pack resources) in level descriptions -explain the gates better in tutorial level descriptions (use pictures) -explain grod spinning wildly on conflicting inputs -something special for having completed every level (totals?) -Level editor -make a file filter for project files, and check that saved projects match it -allow "reposition using mouse" for robots and switches ----release---- -init sound manager with a gameconfig argument, and add sound configuration to the game file -save the "playtest" circuits with the project, but not with the exported level packs -accelerators for close, quit, save -have resource managers fire events when resources are added, removed, and modified. -implement a GUI resource manager (for adding and removing files in the project) -make an animated sprite creator thing -make a sound preview thing so you can play audio resorces that exist in the project -make a music pattern editor thing (like a 1-track mod) -factor out each makeXXXProps.. editor into its own class, and add validate methods -in config files, add a version attribute to top-level element and autobackup old versions -effect for the "cursor" box to fade in and out and change colours and stuff -put a real spotlight on the currently-selected robot or switch -be able to save all circuits in the entire game into one file, and load it back later -ED: use this to remember the circuit associated with each level, and save with project (will need a check that the restored circuit hasn't gone over gate limits) -make an effects API for switch scripts: int getNumFrames() and void doFrame(int). -bonus points for left-over gates -Batteries -Radio Communication between robots -init sound manager sound set from config file -Make sound manager available to onEnter/onExit scripts -Make all exceptions (even on the game loop thread) become user-visible dialogs -Be able to group and label sets of gates -Be able to shrink groups of gates into small ICs -Split LevelConfig and Level, where LevelConfig doesn't change and Level does. (?) -Consider splitting the Gate interface into Gate (model) and GateComponent (view/controller) Images: -Smaller robot sprite and/or larger tiles? -Start/Pause/Single Step/Reset buttons -Images for different floor textures -Different floor patterns in various colours Sounds: -When game is running -AND/OR/NOT gate goes on/off -robot steps up/down/left/right -robot is confused about which direction to step -bonus points earned -teleport -Circuit Editor -"you suck" sound (for trying to delete undeletable stuff) -entering a connectable region while dragging a wire -exiting a connectable region while dragging a wire -removing a wire -deleting all gates at once (clearing the circuit out) -music for circuit editor and running game -little ditties for the beginning of each level (maybe this would be better suited to the MIDI sequencer api) Completed: -ensure the overall score doesn't reset when going to the next level -ED: Fixed refactoring fallout bug that made it impossible to create a new project -Fixed integer rounding error that caused IOOBE in AbstractGate.getInputAt() -ED: delete the JarResourceManager temp files on exit (uses lifecycle event) -Created project lifecycle event infrastructure (it can generalize to anything, but it's only being used for projects right now) -ED: fix the problem where gates used in the playtest circuit are permanently deducted from the robot's gate allowance! -ED: created an action with a dialog that lets you rearrange the sequence of the levels -ED: fix the "Open Project" action so it behaves in a more usual manner -ED: combine the "save" and "export level pack" actions into one "save" action -ED: started the resource manager GUI (not planned for completion this release) -ED: projects are now a single file, just like level packs. however, there is no GUI resource manager yet. -Created a new ResourceManager interface which is an extension of ResourceLoader: it can list the resources it contains, and provides write access as well as read -Turned ResourceLoader into an interface, and moved its former contents into the new AbstractResourceLoader class -ED: set robot start position as well as current position in robot props dialog (otherwise reset undoes changes after initial playtest) -ED: ensure reasonable window distribution in playtest mode -removed superfluous messages to stdout and made the little DIY-debug facility more similar between classes -ED: preview mode for playing the current level without running the game -teleport effect -bonus points animation thingy -level description renders too low when centred. now it's aligned to the top -level description should have a stylesheet that puts more space between paragraphs -ED: implemented new strategy for setting the split pane divider location (to unsquish the level edit panel) -label the gates in the toolbox -put a "click here" message in initial level -say you have to press Start once the wiring is complete in initial level -about 7 tutorial levels.. all should be easy to complete if you understand the game -ED: fix bug with saving level pack on Windows (default.map isn't included) -- attempted fix; not tested -fix score so it doesn't overlap map -button for going to the next level when you win -make ghosts work again (each set of ghosts need their own level config) -ensure ghost circuit editors are always locked -ensure ghosts remain in playfield after reset -better error message when a resource within a ZIP is missing (display the FileNotFoundException's message) -pause the game loop before changing the current level (otherwise, the animation doubles in speed) -ensure game play still works now that LevelConfig.copyState() creates fully independent copies (including robots and their circuits) -solution: made the full independence optional in LevelConfig.copyState(). -have an HTML description for each level that gives hints and stuff (especially useful in the tutorial stage) -Level Editor: -controls for resizing the map -fix NPE in promptUserForProject when there are no recent projects -make level chooser a combo box and move it above level props dialog -change "add xxx" and "remove xxx" buttons to just "+" and "-" with original labels as tooltips -make sure robots get duplicated when copying a whole level -make it possible to copy robots and switches from same or other levels -line wrap the level description textarea -show the level title as the HTML header so the description string only has to be the body, and doesn't have to have the initial and
tags (but it can still contain html markup). -be able to copy a level -gate allowances on robot editor -when recent "file" is actually a project directory, use the parent directory as the recent dir, not the project dir itself -saving levels should show exceptions when they happen -make all list models simpler by not allowing the game config to change; make most/all member variables final -make sure all GUI components refresh when opening new project (editor wasn't updating until you select a different level) Solution: dispose and re-create the whole frame when opening a new project! Much better. -make save safer (rename the level map file before overwriting) -make a save feature that doesn't need to save a level pack -remove the "teleport gregory" switch from the level in default resources -be able to delete levels -set the square type on a level when it gets selected (otherwise the list has a selected square, but the level won't paint) -fix the addLevelAction! -be able to delete robots -be able to delete switches -be able to delete square types -be able to delete sensor types -create a default set of resources that every new project gets -fixed off-by-1 in SquareChooserListModel.getElementAt() -save sprite sizes and other attribs in map file -prepopulate new projects with a starter set of resources -restrict sprite chooser list to just the sprite files (image and rsf files) -implement a "close" feature that goes back to the welcome menu thing -make sprite editor and hook into switch and robot properties -make label edit stuff for switch and robot properties -make it possible to set positions for robots and switches -make the map appear centred in the editor/playfield (by tweaking layouts) -put a red circle around the currently-selected robot or switch -make ESC cancel a property dialog (close button on window should also work) -make switch selection list (with add button) -make OK the default button on property dialogs -make robot selection list (with add button) -make robot properties editor -make switch properties editor -make level properties editor (attached to level map editor) -make the level edit panel rebuild every time user picks a different level -autoload the project that was opened last time the editor was running -make level selection list (with add button) -make square configs and sensor configs editable -implement the "project" paradigm -save and load -stop playfield from painting disabled labels -user-controllable label positioning for switches and grods (n, ne, e, se, s, sw, w, nw) -simpler robot and switch repositioning (via setX/getX and setY/getY) -make location vs. position consistent throughout (standardise on position) -allow map manipulation from switches -allow switches to enable/disable other switches -make it possible to start a switch in the disabled state (config file) -Be able to specify how many circuit evaluations per step in a level -Fix bug where there are multiple async repaint threads running after switching levels -disallow multiple switches and/or robots to share the same name -XML format for level config (ok, I'll cry uncle) -Make gates their proper size when saved and loaded in a circuit file -fix security problem (loading a circuit when editor is locked!) -figure out why the wrong inputs and outputs turn blue when hovered over (and orange when activated) -Fade the labels in and out instead of abrupt appearance/disappearance -Let the user choose how big a gate looks on screen -Fix "clear" feature in circuit editor to give back gate allowances! -Make zoom effect also apply to input stick length and output stick length -Make gates zoom back to their toolbox spot when deleted -Animated sprites for anything that can use a static image -Make labels disappear when the game starts (and reappear when it stops) -moved sprite classes into their own package -reset score when level resets, but accumulate scores across levels! -drag a new gate off its toolbox icon to create it, and delete by putting it back into the toolbox. -fix the problem that circuits don't reset properly (some inputs/outputs stay active) -Make load/save circuits and ghosts work with multiple robots per level -make input and output stick lengths part of the gate interface -Pull out the gate input/output locating code to the Gate interface -make little gate icons in the circuit editors that show remaining allowance -Pull out the gate drawing code to the Gate interface -Gate allowances -Split Circuit class out of CircuitEditor, and give an instance of it to the Robot. (Circuit will include gate allowances) *create event publisher interface for Circuit class, and use it to know when to repaint CircuitEditor -Score keeping (based on switches that modify the score) -Fix accelerator key for adding gates (was getting the wrong Keystrokes) -Create a snapshot/restore facility for LevelConfig (so the level state can be reset after the switches have had at it) -Make an effort not to stack circuit editor windows on top of each other -Good debug messages for runtime eval errors on switches -Show labels on robots and switches when game is in "not started" state -Specify sprite image scale factor in config file -Goodies to pick up along the way or numbered checkpoints -Secondary colour tiles (CMY) that detect as 2 colours at once (white would become all 3) -NAND and NOR gates (and buffers?) -Make loading levels and circuits more fault-tolerant and provide specific error messages -Figure out why grod appears in wrong spot when level first starts -Remember preferences: window location, load and save dialog paths -Load multiple "ghost" robots and circuits so you can compare solutions -Make the game actually exit when you quit on Windows/X11 -Put in the number of steps counter on the play field -Use files to load and save circuits -Fix single-step -Clear old gates when loading circuit -Button for clearing circuit editor -Fix the "You Win!!" message (incl. when single-stepping into the cake) -Fix reset when game is running -another reworking of the start/pause/step/reset UI -Single-step button for debugging (and redo interface with Start/Pause/Single Step/Reset) -Lock circuit editor when game is running (unlock after reset) -Be able to load new levels from a chosen file -Multi-frame robot sprite Dismissed/Changed/Bad Ideas: -Different floor textures that the robot can detect (metal, carpet, dirt, tile, ...) -Random gate delays in "hard" mode -In the level editor, create a LevelSelectionListener system that fires events when the selected level changes? (listeners would include: the levelChooser list, the LevelEditor component, and the LevelProperties component. Robot Chooser and Switch Chooser will also have to know when the current level changes.. but would it be cleaner to create a whole new set of those components whenever the selected level changes? Probably so.) -Fix problem where the framerate doubles when you re-visit a level in the editor (it fixed itself...?) -fix the File->Open bug where the level chooser is empty after opening new project (problem went away on its own!?)