#include "GridNavigatorManual.h"

GridNavigatorManual::GridNavigatorManual() : GridNavigator()
{
}

void GridNavigatorManual::Navigate()
{
	moveresults mr = moveresults::ok;

	while (mr != moveresults::complete)
	{
		cout << "You can (v)iew the grid or enter a direction: (l)eft, (r)ight, (u)p or (d)own." << endl;
		string strDir;
		cin >> strDir;

		std::transform(strDir.begin(), strDir.end(), strDir.begin(), ::tolower);

		if (strDir == "l" || strDir == "left")
		{
			mr = grid->MovePlayer(movedirection::left);
		}
		else if (strDir == "r" || strDir == "right")
		{
			mr = grid->MovePlayer(movedirection::right);
		}
		else if (strDir == "u" || strDir == "up")
		{
			mr = grid->MovePlayer(movedirection::up);
		}
		else if (strDir == "d" || strDir == "down")
		{
			mr = grid->MovePlayer(movedirection::down);
		}
		else if (strDir == "v" || strDir == "view")
		{
			grid->PrintGrid();
		}
		else
		{
			cout << "Unknown command." << endl;
		}

		switch (mr)
		{
		case moveresults::complete:
			cout << "Maze complete!" << endl;
			return;
		case moveresults::wall:
			cout << "You walked into a wall. Oops!" << endl;
		}
	}
}
