Rewrote to use libtcod