1.  function toggleScoreBoardGUI(%val)
  2. {
  3.     if(%val)
  4.       ScoreBoardGUI.toggle();
  5. }
  6.  
  7. function ScoreBoardGUI::OnWake(%this)
  8. {
  9.     UpdateScoreBoardListView();
  10. }
  11.  
  12. $ScoreBoard::Count = 5; // 0 to 4
  13. $ScoreBoard::Names[0] = "Visitor1 ";
  14. $ScoreBoard::Names[1] = "Visitor2";
  15. $ScoreBoard::Names[2] = "Visitor3";
  16. $ScoreBoard::Names[3] = "Visitor4";
  17. $ScoreBoard::Names[4] = "Visitor5";
  18.  
  19. $ScoreBoard::Scores[0] = "0.50";
  20. $ScoreBoard::Scores[1] = "0.55";
  21. $ScoreBoard::Scores[2] = "0.60";
  22. $ScoreBoard::Scores[3] = "0.65";
  23. $ScoreBoard::Scores[4] = "0.70";
  24.  
  25. $ScoreBoard::Mission[0] = "desert";
  26. $ScoreBoard::Mission[1] = "desert";
  27. $ScoreBoard::Mission[2] = "desert";
  28. $ScoreBoard::Mission[3] = "desert";
  29. $ScoreBoard::Mission[4] = "desert";
  30.  
  31. $ScoreBoard::isLoaded = false;
  32. function LoadScores()
  33. {
  34.    %loadFile = new FileObject();
  35.    %dataFile = expandFilename("scripts/gui/scoreboard.txt");
  36.    
  37.    %loadFile.openForAppend(%dataFile);
  38.    %loadFile.close();
  39.    
  40.    %loadFile.openForRead(%dataFile);
  41.  
  42.    // read in 5 scores
  43.    for (%count=0; %count < $ScoreBoard::Count; %count++)
  44.    {    
  45.       $ScoreBoard::Scores[%count] = %loadFile.readLine();
  46.       $ScoreBoard::Names[%count] = %loadFile.readLine();
  47.       $ScoreBoard::Mission[%count] = %loadFile.readLine();      
  48.    }  
  49.    
  50.    %loadFile.close();
  51.    %loadFile.delete(); // object not file it self
  52.    
  53.    $ScoreBoard::isLoaded = true;
  54. }
  55.  
  56. function SaveScores()
  57. {
  58.     %saveFile = new FileObject();
  59.  
  60.     %dataFile = expandFilename("scripts/gui/scoreboard.txt");  
  61.     %saveFile.openForWrite(%dataFile);
  62.  
  63.    for (%count=0; %count < $ScoreBoard::Count; %count++)
  64.    {    
  65.       %saveFile.writeLine( $ScoreBoard::Scores[%count] );
  66.       %saveFile.writeLine( $ScoreBoard::Names[%count] );
  67.       %saveFile.writeLine( $ScoreBoard::Mission[%count] );      
  68.    }  
  69.    
  70.     %saveFile.close();
  71.     %saveFile.delete();  // delete %saveFile object, not file itself      
  72. }
  73.  
  74. function SortScoreBoardList()
  75. {
  76.    // simple bubble sort
  77.    for(%count = 0; %count < $ScoreBoard::Count; %count++)
  78.     for(%high = %count+1; %high < $ScoreBoard::Count; %high++)
  79.     {
  80.        // check if its a higher value
  81.        if ( $ScoreBoard::Scores[%high] > $ScoreBoard::Scores[%count])
  82.        {
  83.           // swap places
  84.           %tempScore = $ScoreBoard::Scores[%count];
  85.           %tempName = $ScoreBoard::Names[%count];
  86.           %tempMission = $ScoreBoard::Mission[%count];
  87.          
  88.           $ScoreBoard::Scores[%count] = $ScoreBoard::Scores[%high];
  89.           $ScoreBoard::Names[%count] = $ScoreBoard::Names[%high];
  90.           $ScoreBoard::Mission[%count] = $ScoreBoard::Mission[%high];
  91.  
  92.           $ScoreBoard::Scores[%high] = %tempScore;
  93.           $ScoreBoard::Names[%high] = %tempName;
  94.           $ScoreBoard::Mission[%high] = %tempMission;
  95.        }    
  96.     }  
  97. }
  98.  
  99. // Use this to add a new Top Score ... it will drop the last one
  100. // and replace it with this score
  101. function AddScoreBoardList( %score, %name, %mission)
  102. {
  103.    SortScoreBoardList();
  104.    $ScoreBoard::Scores[4] = %score;
  105.    $ScoreBoard::Names[4] = %name;
  106.    $ScoreBoard::Mission[4] = %mission;
  107.    
  108.    echo(" New score added " @ %score SPC %name SPC %mission);
  109.    
  110.    // save it to file, so its there later //
  111.    SaveScores();
  112. }
  113.  
  114. //This function updates the StatsListView
  115. function UpdateScoreBoardListView()
  116. {
  117.    if ( $ScoreBoard::isLoaded != true)
  118.       LoadScores();      
  119.    
  120.     ScoreBoardGuiList.clear(); 
  121.    
  122.     SortScoreBoardList();
  123.  
  124.    // Client stats  
  125.    ScoreBoardGuiList.addRow(0, $ScoreBoard::Scores[0] SPC $ScoreBoard::Names[0] SPC $ScoreBoard::Mission[0]);
  126.    ScoreBoardGuiList.addRow(1, $ScoreBoard::Scores[1] SPC $ScoreBoard::Names[1] SPC $ScoreBoard::Mission[1]);
  127.    ScoreBoardGuiList.addRow(2, $ScoreBoard::Scores[2] SPC $ScoreBoard::Names[2] SPC $ScoreBoard::Mission[2]);
  128.    ScoreBoardGuiList.addRow(3, $ScoreBoard::Scores[3] SPC $ScoreBoard::Names[3] SPC $ScoreBoard::Mission[3]);
  129.    ScoreBoardGuiList.addRow(4, $ScoreBoard::Scores[4] SPC $ScoreBoard::Names[4] SPC $ScoreBoard::Mission[4]);
  130.  
  131.     ScoreBoardGuiList.setSelectedRow(0);
  132.     ScoreBoardGuiList.scrollVisible(0);
  133. }
  134.  
  135. function ScoreBoardGUI::toggle(%this)
  136. {
  137.     if (%this.isAwake())
  138.       Canvas.popDialog(%this);
  139.     else
  140.       Canvas.pushDialog(%this);
  141. }
  142.  
  143. function ScoreBoardGUI::onPopDialog()
  144. {
  145.    
  146. }