implement player as a state machine

this allows for animation + better control