Noah Petherbridge
c8620f871e
* Add new pkg/drawtool with utilities to abstract away drawing actions into Strokes and track undo/redo History for them. * The freehand Pencil tool in EditorMode has been refactored to create a Stroke of Shape=Freehand and queue up its world pixels there instead of directly modifying the level chunker in real time. When the mouse button is released, the freehand Stroke is committed to the level chunker and added to the UndoHistory. * UndoHistory is (temporarily) stored with the level.Level so it can survive trips to PlayScene and back, but is not stored as JSON on disk. * Ctrl-Z and Ctrl-Y in EditorMode for undo and redo, respectively.
79 lines
2.2 KiB
Markdown
79 lines
2.2 KiB
Markdown
# TODO
|
|
|
|
## Alpha Launch Minimum Checklist
|
|
|
|
- [ ] Open Source Licenses
|
|
- [ ] Doodad Scripts: an "end level" function for a level goalpost.
|
|
|
|
|
|
**Blocker Bugs:**
|
|
|
|
- [ ] Sometimes the red Azulians don't interact with other doodads
|
|
properly, but sometimes they do. (i.e. they phase thru doors, don't
|
|
interact with buttons or keys).
|
|
|
|
**UI Cleanup:**
|
|
|
|
- Doodads Palette:
|
|
- [ ] Hide some doodads like the player character.
|
|
- [ ] Pagination or scrolling UI for long lists of doodads.
|
|
|
|
**Nice to haves:**
|
|
|
|
## Release Launch Checklist
|
|
|
|
**Features:**
|
|
|
|
- [ ] Single-player "campaign mode" of built-in levels.
|
|
- campaign.json file format configuring the level order
|
|
- [ ] Level Editor Improvements
|
|
- [ ] Undo/Redo Function
|
|
- [ ] Lines and Boxes
|
|
- [ ] Eraser Tool
|
|
- [ ] Brush size and/or shape
|
|
- [ ] Doodad CLI Tool Features
|
|
- [ ] `doodad show` to display information about a level or doodad.
|
|
- [ ] `doodad init` or some such to generate a default JS script.
|
|
- [ ] Options to toggle various states (hidden, hasInventory?)
|
|
|
|
**Shareware Version:**
|
|
|
|
- [x] Can't draw or edit doodads.
|
|
- [ ] Can only create Bounded maps, not infinite ones.
|
|
- [ ] Can play custom maps but only ones using built-in doodads.
|
|
- [ ] Can not place custom doodads in maps.
|
|
|
|
**Built-in Doodads:**
|
|
|
|
- [x] Buttons
|
|
- [x] Press Button
|
|
- [x] Sticky Button
|
|
- [ ] Switches
|
|
- [ ] Doors
|
|
- [x] Locked Doors and Keys
|
|
- [x] Electric Doors
|
|
- [ ] Trapdoors (1 of 4)
|
|
|
|
## Doodad Ideas
|
|
|
|
In addition to those listed above:
|
|
|
|
- [ ] Crumbly floor: Tomb Raider inspired cracked stone floor that
|
|
crumbles under the player a moment after being touched.
|
|
- [ ] Firepit: decorative, painful
|
|
- [ ] Gravity Boots: flip player's gravity upside down.
|
|
- [ ] Warp Doors that lead to other linked maps.
|
|
- For campaign levels only. If used in a normal player level, acts
|
|
as a level goal and ends the level.
|
|
- Doodads "Warp Door A" through "Warp Door D"
|
|
- The campaign.json would link levels together.
|
|
|
|
## New Ideas
|
|
|
|
- [ ] New Doodad struct fields:
|
|
- [ ] `Hidden bool`: skip showing this doodad in the palette UI.
|
|
- [ ] `HasInventory bool`: for player characters and maybe thieves. This way
|
|
keys only get picked up by player characters and not "any doodad that
|
|
touches them"
|
|
- [ ] ``
|