c++ object-oriented version of the old movement code.
also contains some map things but aren't really imlemented