# Perl example to load results
# version 0.01 created on 13 march 2010 by Skybuck Flying ! ;) :)
#
# SimpleResults and DetailedResults are loaded and printed to screen.
#

$false = 0;
$true = 1;

$SizeOfInteger = 4;

sub ReadInteger
{
	if ( read( InputFile, $_[0], $SizeOfInteger ) != $SizeOfInteger ) { return $false; } 
	$_[0] = unpack( "i", $_[0]  );
	return $true;
}

sub ReadResults
{

	$InputFilename = "Results.bin";

	open( InputFile, "<", "$InputFilename" ) or die "Can't open $InputFilename: $!";

	binmode( InputFile );
	
	
	# read simple results section first
	if ( &ReadInteger( $mWarriorCount ) == $true )
	{
		print "mWarriorCount: "; print $mWarriorCount; print "\n";
	
		$vIndex = 0;
		
		while ($vIndex < $mWarriorCount)
		{			
			if ( &ReadInteger( $mWarriorScore ) == $false ) { return $false };
			if ( &ReadInteger( $mWarriorDetailedScore ) == $false ) { return $false };
			
			print "mWarrior["; print $vIndex; print "].Score: "; print $mWarriorScore; print "\n";
			print "mWarrior["; print $vIndex; print "].DetailedScore: "; print $mWarriorDetailedScore; print "\n";
			
			$vIndex = $vIndex + 1;
		}	
	}
	
	
	# read detailed results section next
	if ( &ReadInteger( $mWarriorCount ) == $true )
	{
		print "mWarriorCount: "; print $mWarriorCount; print "\n";
	
		$vIndex = 0;
		
		while ($vIndex < $mWarriorCount)
		{
			if ( &ReadInteger( $mUniqueCorePositionsOwned ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsExecuted ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsBombed ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsStunned ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsJumpInjected ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsCopiedTo ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsSpawned ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsInternalDecisions ) == $false ) { return $false };
			if ( &ReadInteger( $mUniqueCorePositionsExternalDecisions ) == $false ) { return $false };
			if ( &ReadInteger( $mFriendlyProcessesSpawned ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyProcessesSpawned ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyProcessesKilled ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyPositionsBombed ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyPositionsStunned ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyPositionsJumpInjected ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyPositionsInjected ) == $false ) { return $false };
			if ( &ReadInteger( $mEnemyPositionsDecisions ) == $false ) { return $false };
			
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsOwned: "; print $mUniqueCorePositionsOwned; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsExecuted: "; print $mUniqueCorePositionsExecuted; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsBombed: "; print $mUniqueCorePositionsBombed; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsStunned: "; print $mUniqueCorePositionsStunned; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsJumpInjected: "; print $mUniqueCorePositionsJumpInjected; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsCopiedTo: "; print $mUniqueCorePositionsCopiedTo; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsSpawned: "; print $mUniqueCorePositionsSpawned; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsInternalDecisions: "; print $mUniqueCorePositionsInternalDecisions; print "\n";
			print "mWarrior["; print $vIndex; print "].mUniqueCorePositionsExternalDecisions: "; print $mUniqueCorePositionsExternalDecisions; print "\n";
			print "mWarrior["; print $vIndex; print "].mFriendlyProcessesSpawned: "; print $mFriendlyProcessesSpawned; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyProcessesSpawned: "; print $mEnemyProcessesSpawned; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyProcessesKilled: "; print $mEnemyProcessesKilled; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyPositionsBombed: "; print $mEnemyPositionsBombed; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyPositionsStunned: "; print $mEnemyPositionsStunned; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyPositionsJumpInjected: "; print $mEnemyPositionsJumpInjected; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyPositionsInjected: "; print $mEnemyPositionsInjected; print "\n";
			print "mWarrior["; print $vIndex; print "].mEnemyPositionsDecisions: "; print $mEnemyPositionsDecisions; print "\n";
			
			$vIndex = $vIndex + 1;
		}	
	}	
	
	close( InputFile );
}


sub Main
{
	&ReadResults();
}

&Main();
