From cc7be333a7da260215559db45e49ccbb07eafeaa Mon Sep 17 00:00:00 2001 From: Forest Belton <65484+forestbelton@users.noreply.github.com> Date: Tue, 13 Jul 2021 19:55:48 -0400 Subject: [PATCH] Update TODO list with more clarity --- TODO | 107 ++++++++++++++++++++++++++++++++++++--------------- src/player.s | 1 + 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/TODO b/TODO index bcecc10..52e4f2e 100644 --- a/TODO +++ b/TODO @@ -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 \ No newline at end of file diff --git a/src/player.s b/src/player.s index e3ba365..443e06d 100644 --- a/src/player.s +++ b/src/player.s @@ -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