dev: refactor player states into objects