function toggleScoreBoardGUI(%val)
{
if(%val)
ScoreBoardGUI.toggle();
}
function ScoreBoardGUI::OnWake(%this)
{
UpdateScoreBoardListView();
}
$ScoreBoard::Count = 5; // 0 to 4
$ScoreBoard::Names[0] = "Visitor1 ";
$ScoreBoard::Names[1] = "Visitor2";
$ScoreBoard::Names[2] = "Visitor3";
$ScoreBoard::Names[3] = "Visitor4";
$ScoreBoard::Names[4] = "Visitor5";
$ScoreBoard::Scores[0] = "0.50";
$ScoreBoard::Scores[1] = "0.55";
$ScoreBoard::Scores[2] = "0.60";
$ScoreBoard::Scores[3] = "0.65";
$ScoreBoard::Scores[4] = "0.70";
$ScoreBoard::Mission[0] = "desert";
$ScoreBoard::Mission[1] = "desert";
$ScoreBoard::Mission[2] = "desert";
$ScoreBoard::Mission[3] = "desert";
$ScoreBoard::Mission[4] = "desert";
$ScoreBoard::isLoaded = false;
function LoadScores()
{
%loadFile = new FileObject();
%dataFile = expandFilename("scripts/gui/scoreboard.txt");
%loadFile.openForAppend(%dataFile);
%loadFile.close();
%loadFile.openForRead(%dataFile);
// read in 5 scores
{
$ScoreBoard::Scores[%count] = %loadFile
.readLine
();
$ScoreBoard::Names[%count] = %loadFile
.readLine
();
$ScoreBoard::Mission[%count] = %loadFile
.readLine
();
}
%loadFile.close();
%loadFile.delete(); // object not file it self
$ScoreBoard::isLoaded = true;
}
function SaveScores()
{
%saveFile = new FileObject();
%dataFile = expandFilename("scripts/gui/scoreboard.txt");
%saveFile.openForWrite(%dataFile);
{
%saveFile
.writeLine
( $ScoreBoard::Scores[%count] );
%saveFile
.writeLine
( $ScoreBoard::Names[%count] );
%saveFile
.writeLine
( $ScoreBoard::Mission[%count] );
}
%saveFile.close();
%saveFile.delete(); // delete %saveFile object, not file itself
}
function SortScoreBoardList()
{
// simple bubble sort
for(%high
= %count+1; %high
< $ScoreBoard::Count; %high
++)
{
// check if its a higher value
if ( $ScoreBoard::Scores[%high
] > $ScoreBoard::Scores[%count])
{
// swap places
%tempScore
= $ScoreBoard::Scores[%count];
%tempName
= $ScoreBoard::Names[%count];
%tempMission
= $ScoreBoard::Mission[%count];
$ScoreBoard::Scores[%count] = $ScoreBoard::Scores[%high
];
$ScoreBoard::Names[%count] = $ScoreBoard::Names[%high
];
$ScoreBoard::Mission[%count] = $ScoreBoard::Mission[%high
];
$ScoreBoard::Scores[%high] = %tempScore;
$ScoreBoard::Names[%high] = %tempName;
$ScoreBoard::Mission[%high] = %tempMission;
}
}
}
// Use this to add a new Top Score ... it will drop the last one
// and replace it with this score
function AddScoreBoardList( %score, %name, %mission)
{
SortScoreBoardList();
$ScoreBoard::Scores[4] = %score;
$ScoreBoard::Names[4] = %name;
$ScoreBoard::Mission[4] = %mission;
echo(" New score added " @ %score SPC %name SPC %mission);
// save it to file, so its there later //
SaveScores();
}
//This function updates the StatsListView
function UpdateScoreBoardListView()
{
if ( $ScoreBoard::isLoaded != true)
LoadScores();
ScoreBoardGuiList.clear();
SortScoreBoardList();
// Client stats
ScoreBoardGuiList.addRow(0, $ScoreBoard::Scores[0] SPC $ScoreBoard::Names[0] SPC $ScoreBoard::Mission[0]);
ScoreBoardGuiList.addRow(1, $ScoreBoard::Scores[1] SPC $ScoreBoard::Names[1] SPC $ScoreBoard::Mission[1]);
ScoreBoardGuiList.addRow(2, $ScoreBoard::Scores[2] SPC $ScoreBoard::Names[2] SPC $ScoreBoard::Mission[2]);
ScoreBoardGuiList.addRow(3, $ScoreBoard::Scores[3] SPC $ScoreBoard::Names[3] SPC $ScoreBoard::Mission[3]);
ScoreBoardGuiList.addRow(4, $ScoreBoard::Scores[4] SPC $ScoreBoard::Names[4] SPC $ScoreBoard::Mission[4]);
ScoreBoardGuiList.setSelectedRow(0);
ScoreBoardGuiList.scrollVisible(0);
}
function ScoreBoardGUI::toggle(%this)
{
if (%this.isAwake())
Canvas.popDialog(%this);
else
Canvas.pushDialog(%this);
}
function ScoreBoardGUI::onPopDialog()
{
}