<?php
define('KEY', '########################' );
define('VERSION', "0.0.1");
define('LOG_MESSAGES', TRUE);
include ("./assist.php");  //Source Code: http://example.preinheimer.com/wbb/bots/assist.phps
if (isset($_GET['displaySource']))
{
    $source = file_get_contents(__FILE__);
    $source = str_replace(KEY, "########################", $source);
    echo highlight_string($source);
    exit;
}


 set_error_handler("myErrorHandler");
if($_GET['serverKey'] != KEY)
{
    var_dump($_GET);
    echo "invalid key";
    exit;
}

mlog(print_r($_GET, 1));
switch($_GET['callType'])
{
    case "gameInit":
        echo VERSION;
        $state = array("angle" => 70);
        maintainState($_GET['gameID'], $state);
        break;
    case "round":
        echo "Let's Play";
        playRound();
        break;
    default:
        var_dump($_GET);
        echo "huh?";
}

function playRound()
{
    $state = maintainState($_GET['gameID']);
    $roundEnergy = $_GET['energy'];
    $params = array();
    $params['method'] = "scan";
    $params['clientKey'] = KEY;
    $params['gameID'] = $_GET['gameID'];
    $angle = $state['angle'];
    if(isset($state['target']))
    {
        $angle = (int) $state['target']['angle'];
        mlog(print_r($state,1));
        $angle = $angle - 2;
        unset($state['target']);
    }
    while($roundEnergy > 0)
    {
        mlog("\n-- Energy: $roundEnergy \t Angle: $angle --\n");
        if(isset($state['target']))
        {
            mlog("Open Fire! at " . $state['target']['angle'] . "\n");
            $params = array();
            $params['method'] = "fire";
            $params['degree'] =(int) ($state['target']['angle']);
            $params['energy'] = $roundEnergy;
            $params['clientKey'] = KEY;
            $params['gameID'] = $_GET['gameID'];
            $url = $_GET['url'] . "?" . http_build_query($params);
            mlog( "I should invoke: $url to Fire!\n");
            $roundEnergy = 0;
            mlog(file_get_contents(($url)));
        }else
        {
            $params['degree'] = $angle;
            $url = $_GET['url'] . "?" . http_build_query($params);
            echo "I should invoke: $url to scan!\n";
            $response = file_get_contents($url);
            $xml = simplexml_load_string($response);            
    //        mlog(print_r($params, 1) . "\n\n" . $response . "\n\nXML:" . print_r($xml, 1) . "end");
            if ($xml === FALSE)
            {
                mlog("It's false");
            }
            
            if ($xml->responseValues->hits > 0)
            {
                mlog($response,TRUE);
                mlog("oh shit a hit", 1);
                $fireAngle = array();
                foreach($xml->responseValues->coords AS $hits)
                {
                    mlog("I should totally fire on angle " . $hits->a->angle . "\n");
                    $angle = (int)  $hits->a->angle;
                    $distance = (int) $hits->a->distance;
                    $state['target'] = array("angle" => $angle, "distance" => $distance);
                }
            }
            $angle += 5;
            if ($angle > 360)
            {
                $angle = $angle - 360;
            }
            $roundEnergy -= 7;
        }
    }
    $state['angle'] = $angle;
    maintainState($_GET['gameID'], $state);
    
}

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    mlog($errno . $errstr . $errfile . $errline);
}
?>
1