//------------------------------------------------------------------------------
//
// DebriefGui.cs
//
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
function DebriefGui::onWake( %this )
{
   moveMap.pop();
   if ( isObject( passengerKeys ) )
      passengerKeys.pop();
   if ( isObject( observerBlockMap ) )
      observerBlockMap.pop();
   if ( isObject( observerMap ) )
      observerMap.pop();
   //flyingCameraMove.pop();

   if ( isObject( debriefMap ) )
   {
      debriefMap.pop();
      debriefMap.delete();
   }
   new ActionMap( debriefMap );
   %bind = moveMap.getBinding( toggleMessageHud );
   debriefMap.bind( getField( %bind, 0 ), getField( %bind, 1 ), toggleDebriefChat );
   debriefMap.copyBind( moveMap, activateChatMenuHud );
   debriefMap.bindCmd( keyboard, escape, "", "debriefContinue();" );
   debriefMap.push();
      
   DB_ChatVector.attach( HudMessageVector );
   DB_ChatScroll.scrollToBottom();
   DB_LoadingProgress.setValue( 0 );
   LoadingProgress.setValue( 0 );
   DB_LoadingProgressTxt.setValue( "LOADING MISSION" );
   LoadingProgressTxt.setValue( "LOADING MISSION" );
}

//------------------------------------------------------------------------------
function DebriefGui::onSleep( %this )
{
   debriefMap.pop();
   debriefMap.delete();
}

//------------------------------------------------------------------------------
function DebriefResultText::onResize( %this, %width, %height )
{
   %fieldHeight = getWord( DB_ResultPane.getExtent(), 1 );
   %x = getWord( DB_ResultScroll.getPosition(), 0 );
   %w = getWord( DB_ResultScroll.getExtent(), 0 );
   %h = %fieldHeight - %height - 4;
   DB_ResultScroll.resize( %x, %height + 2, %w, %h );
}

//------------------------------------------------------------------------------
function toggleDebriefChat()
{
   Canvas.pushDialog( DB_ChatDlg );
}

//------------------------------------------------------------------------------
function DB_ChatDlg::onWake( %this )
{
   DB_ChatEntry.setValue( "" );
}

//------------------------------------------------------------------------------
function DB_ChatEntry::onEscape( %this )
{
   Canvas.popDialog( DB_ChatDlg );
}

//------------------------------------------------------------------------------
function DB_ChatEntry::sendChat( %this )
{
   %text = %this.getValue();
   if ( %text !$= "" )
      commandToServer( 'MessageSent', %text );

   Canvas.popDialog( DB_ChatDlg );
}

//------------------------------------------------------------------------------
function debriefDisconnect()
{
   MessageBoxYesNo( "DISCONNECT", "Are you sure you want to leave this game?", "Disconnect();" );
}

//------------------------------------------------------------------------------
function debriefContinue()
{
   Canvas.setContent( LoadingGui );
   Canvas.repaint();
}

//------------------------------------------------------------------------------
addMessageCallback( 'MsgGameOver', handleGameOverMessage );
addMessageCallback( 'MsgClearDebrief', handleClearDebriefMessage );
addMessageCallback( 'MsgDebriefResult', handleDebriefResultMessage );
addMessageCallback( 'MsgDebriefAddLine', handleDebriefLineMessage );

//------------------------------------------------------------------------------
function handleGameOverMessage( %msgType, %msgString )
{
   weaponsHud.clearAll();
   inventoryHud.clearAll();

   // Fill the Debriefer up with stuff...
   Canvas.setContent( DebriefGui );
}

function handleClearDebriefMessage( %msgType, %msgString )
{
   DebriefResultText.setText( "" );
   DebriefText.setText( "" );
}

//------------------------------------------------------------------------------
function handleDebriefResultMessage( %msgType, %msgString, %string )
{
   %text = DebriefResultText.getText();
   if ( %text $= "" )
      %newText = detag( %string );
   else
      %newText = %text NL detag( %string );
   DebriefResultText.setText( %newText );
}

//------------------------------------------------------------------------------
function handleDebriefLineMessage( %msgType, %msgString, %string )
{
   %text = DebriefText.getText();
   if ( %text $= "" )
      %newText = detag( %string );
   else
      %newText = %text NL detag( %string );
   DebriefText.setText( %newText );
}
