#!/usr/bin/perl

use strict;
use warnings;
use Term::ReadKey;
use lib '../lib';
use Games::Maze::FirstPerson;

my $maze = Games::Maze::FirstPerson->new(dimensions => [3,3]);

print <<"END_CONTROLS";
q = quit

w = move north
a = move west
s = move south
d = move east

END_CONTROLS

ReadMode 'cbreak';

my %move_for = (
    w => 'go_north',
    a => 'go_west',
    s => 'go_south',
    d => 'go_east'
);

while ( ! $maze->has_won ) {
    print $maze->surroundings;
    my $key = lc ReadKey(0);
    if ( 'q' eq $key ) {
        print "OK.  Quitting\n";
        exit;
    }
    if ( my $action = $move_for{$key} ) {
        unless ( $maze->$action ) {
            print "You can't go that direction\n\n";
        }
        else {
            print "\n";
        }
    }
    else {
        print "I don't understand\n\n";
    }
}

print "Congratulations!  You found the exit!\n";
print $maze->to_ascii;