Skip to content

Latest commit

 

History

History
37 lines (32 loc) · 1.68 KB

TODO.md

File metadata and controls

37 lines (32 loc) · 1.68 KB

TODO

  • chore:(core): new() versus setup() for proper Lua. why not new() with args?
  • docs: use kdheepak/panvimdoc or equivalent
  • feat(core): DRY-up all the events and init stuff, good golly
  • feat(core): add chaos mode (piece swap mid-drop, broken UI, noclip, etc.)
  • feat(core): add options for classic and modern systems
  • feat(core): stats for moves, pieces played, etc.
  • feat(state): load game state from file
  • feat(state): save game state to file
  • feat(ui): add game over screen
  • feat(ui): add pause screen
  • feat(ui): add start screen
  • feat(ui): add theme support
  • feat(ui): add title screen (maybe not, nice to just start)
  • feat(ui): draw next from data not display and remove display props
  • perf(core): double buffer for rendering
  • perf(renderer): verify extmark use and cleanup in draw_shape
  • test(core): add tests

DONE

  • feat(core): add pieces
  • feat(input): add piece movement
  • feat(input): add piece rotation
  • feat(pieces): change colors and/or support themes
  • feat(ui): add next piece preview
  • feat(ui): add score info
  • feat(ui): hide cursor/input/block
  • feat(ui): namespace for highlights
  • perf(core): decouple game (loop) tick from level/speed
  • perf(core): should we try virtual text?
  • perf(ui): are we creating thousands of extmarks?

SUPER STRETCH

This is just Lua. There's no reason it can't be a standalone Tetris that happens to support being run in Neovim. Maybe we have support for multiple inputs and renderers: NeoVim and standard terminal. Honestly might not be too bad, but I haven't really finished the NeoVim bit so why am I even writing this.