Browse Source

Update TODO list with more clarity

master
Forest Belton 3 years ago
parent
commit
cc7be333a7
2 changed files with 77 additions and 31 deletions
  1. +76
    -31
      TODO
  2. +1
    -0
      src/player.s

+ 76
- 31
TODO View File

@ -1,55 +1,100 @@
# TODO
TODO of TODOs: move these into issues
## ~~Boilerplate ~~
* ~~Project setup ~~
* ~~Input engine ~~
## Player
* Jumping
* Climbing and ladders/ropes
* Metasprite animations (walking, jumping, climbing)
* Inventory
* Combat statistics
* Basic attack by pressing A
## Maps
* ~~Player-background collision ~~
* ~~32x32 maps ~~
* ~~Map scrolling through SCX/SCY ~~
* 127x127 maps
* Update background collision to be aware of map changes
* Portals between maps
* Write editor for collision maps
* Update map generation script to use new collision map format
* New collision map flag
* Load new map on collision
* Ladders/ropes
* New collision map flag
* Play climbing animation when player collides
* Allow movement up/down without gravity
## Items
* Item entity type
* Render item on map
* Create data structure for storing items on the map
* Copy item OAM data to shadow OAM on each frame
* Make items float up and down a little bit
## Player
* ~~Movement ~~
* ~~Jump physics ~~
* Velocity should not exceed 7px per frame
* Animations
* Keep track of animation state
* Update metasprite tile indexes on new frame
* Add jumping animation
* Add walking animation
* Create inventory data structure
* Add inventory item
* Remove inventory item
* Check for having at least N of an item
* Player item pickup to inventory
* Player pickup (press B? collide?)
* Remove item from map
* When pickup button pressed and player colliding with item, pick up item
* Combat statistics type
* Basic attack by pressing A
* Display attack animation
* Implement battle formula
* Connect to button press
## Menu
* Menu UI
* Render start menu
* Select menu item
* Switch between menu and game states
* Render statistics screen
* Render equipment screen
* Player inventory
* Render inventory screen
* Allow selecting an inventory item
* Equip/use/drop item
## Monsters
* Monster entity type
* Render monster
* Metasprite
* Take damage if attacked
* Death
* Attacks (animations + closed curve movement + speed)
* Create data structure for storing monsters on the map
* Generalize player metasprite code
* Update player attack routine to check for monster collision
* Death
* Play death animation
* Drop items from drop table
* Remove monster from map
* Player experience / level up routines
* Allow point distribution in stats menu
* Attacks
* Play attack animation
* Check for player collision and damage player
* Translate monster position along a closed curve
* Randomly pace to the left/right
## NPC
* NPC entity type
* Read NPC description from file
* Render NPC
* Create data structure for NPCs on map
* Use metasprite code for NPCs
* Scrolling text display engine
* Render NPC dialogue
* Dialogue prompt
* Prompts should present themselves as a modal containing a set of buttons
corresponding to a provided set of replies
* Render modal with yes/no answer buttons
* Cursor to select button
* Clicking button updates NPC state with response
* Run NPC dialogue handler when answer given
## Quests
* Extend dialogue to display item requests
* Keep track of completed quests
* Display icon above NPC when a quest is available
## Maps
* 32x32 maps
* Implement map scrolling through SCX/SCY
* Update collision routine to fetch new index
* NxM maps (where N, M > 32)
* Long way off, may not make it
* Portals between maps
* New collision map flag
* Transition between maps on collision
## General
* Generalize metasprites to work across monsters, players, NPCs
## Nice to have
* Metasprites of different sizes? (Could enable boss monsters)
* Battle formula
* Animated damage number for attacks
* Player name select

+ 1
- 0
src/player.s View File

@ -303,6 +303,7 @@ Player_UpdateOAM::
or c
jr z, .done
; TODO: Can be sped up by using LD A, [NN]
ld_OAM_tile hl, SPRITE_OAM_IDX
ld [hl], SPRITE_IDX + 1

Loading…
Cancel
Save