the pieces are falling into place for jumping. this looks really terrible so far because i haven't implemented a grounding check and am currently just checking for recent jump input and making sure a jump hasn't been performed recently.
of course, the timing for both of these haven't been tweaked at all and you still automatically double jump every time you jump. but i'm setting this down for tonight.
this game may not need such nuanced jumping mechanics (stuff probably better found in a super tight platformer), but this the kind of feel i like best so i'm going to try it first.
also check out this ridiculous DelayedBool class. i love this thing even though i suspect it breaks several useful design principles.