aboutsummaryrefslogblamecommitdiffstats
path: root/Game/Code/Screens/UScreenCredits.pas
blob: 98cdc417ac39d5a4fc7fd6a2ff8ce24bfb11d5b4 (plain) (tree)
1
2
3
4
5
6




                     
                                                                         









                                
                                    

















































































                                                                                                          
                                   


                 
                    






















































































































                                                                                        
unit UScreenCredits;

interface

uses
  UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes, ULCD, ULight;

type
  TScreenCredits = class(TMenu)
    public

      Credits_Y: Real;
      Credits_Time: Cardinal;
      Credits_Alpha: Cardinal;

      Fadeout:      boolean;
      constructor Create; override;
      function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override;
      function Draw: boolean; override;
      procedure onShow; override;
      procedure onHide; override;
      procedure DrawCredits;
   end;

 const Credits_Text: Array[0..52] of PChar = (
  ':SPACE:',
  'Main Idea: Corvus 5',
  'Thank you very much for this great Game',
  ':SPACE:',
  'The Ultrastar Deluxe Team:',
  ':SPACE:',
  'blindy:',
  'VFX Programming',
  ':SPACE:',
  'commandi00:',
  'Beta Testing',
  ':SPACE:',
  'Crazy Joker:',
  'Graphics',
  ':SPACE:',
  'DennistheMenace:',
  'Beta Testing and great Support in "the Board"',
  ':SPACE:',
  'Mog:',
  'Programming, Graphics',
  ':SPACE:',
  'Mota:',
  'Programming, Idea of creating this Mod',
  ':SPACE:',
  'Sawyer:',
  'Web Master, Programming',
  ':SPACE:',
  'Whiteshark:',
  'Programming, Creating Release',
  ':SPACE:',
  ':SPACE:',
  'Thanks to',
  ':SPACE:',
  'Blind Guard',
  'for supporting us and administrate this great Board',
  ':SPACE:',
  'Weezl',
  'for the credits screen music',
  ':SPACE:',
  'The whole Community from www.ultra-star.dl.am',
  'for supporting us, supporting the newbies',
  'and remembering us to continue work',
  ':SPACE:',
  'You',
  'for using Ultrastar Deluxe',
  ':SPACE:',
  ':SPACE:',
  'Visit us at:',
  'http://www.ultrastardx.dl.am',
  'http://sourceforge.net/projects/ultrastardx/',
  'http://www.Ultra-Star.dl.am',
  'Please write Bug Reports and Feature Requests',
  'to help making this a better Game');


implementation

uses Dialogs,Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage;

function TScreenCredits.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean;
begin
  Result := true;
  If (PressedDown) Then
  begin // Key Down
    case PressedKey of
      SDLK_ESCAPE :
        begin
          FadeTo(@ScreenMain);
          Music.PlayBack;
        end;
     end;//esac
    end; //fi
end;

constructor TScreenCredits.Create;
var
  I:    integer;
begin
  inherited Create;

  AddBackground(Theme.Loading.Background.Tex);

//  for I := 0 to High(Theme.Loading.Static) do
//    AddStatic(Theme.Loading.Static[I]);

//  for I := 0 to High(Theme.Loading.Text) do
//    AddText(Theme.Loading.Text[I]);

  Fadeout := false;
end;

function TScreenCredits.Draw: boolean;
begin
  DrawCredits;
end;

procedure TScreenCredits.onShow;
begin
  Credits_Y := 600;
  Credits_Alpha := 0;
  //Music.SetLoop(true); Loop looped ned, so ne scheisse
  Music.Open(soundpath + 'wome_-_echoes.mp3'); //danke kleinster liebster weeeet�����!!
  Music.Play;
end;

procedure TScreenCredits.onHide;
begin
  Music.Stop;
end;

procedure TScreenCredits.DrawCredits;
var
  T,I: Cardinal;
  Y: Real;
  Ver: PChar;
begin
  T := GetTickCount div 33;
  if T <> Credits_Time then
  begin
    Credits_Time := T;
    //Change Position
    Credits_Y := Credits_Y - 1;
    //Change Alpha
    Inc (Credits_Alpha, 3);
  end;
  //If lowest Position is outside the Screen-> Show MainMenu
  if (Y <= 0) then
  Y := 600;
  //Draw BackGround
  DrawBG;


  //Draw pulsing Credits Text
  //Set Font
  SetFontStyle (2);
  SetFontItalic(False);
  SetFontSize(9);
  SetFontPos (10, 5);
  glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75));
  glPrint ('You may press ESC now');

  //Set Font Size for Credits
  SetFontSize(12);
  //Draw Version
  if (Credits_Y>-35) then
  begin
    Ver := PChar(Language.Translate('US_VERSION'));
    //Set Color
    if Credits_Y > 500 then
      glColor4f(1, 0.6, 0.08, (600 - Credits_Y)/100 - 0.2)
    else
      glColor4f(1, 0.6, 0.08, 0.8);

    SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y);
    glprint(Ver);
  end;

  //Set Color + Start Pos
  glColor4f(0.8, 0.8, 1, 0.8);
  Y := Credits_Y + 50;

  //Search upper Position
  For I := 0 to high(Credits_Text) do
  begin
    if (Credits_Text[I]=':SPACE:') then //Spacer
      Y := Y + 55
    else
      Y := Y + 30;

    if Y > -35 then
      break;
  end;

  //Draw Text
  For T := I+1 to high(Credits_Text) do
  begin
    if (Credits_Text[T]=':SPACE:') then //Spacer
      Y := Y + 55
    else
    begin
      //Set Color
      if Y > 500 then
        glColor4f(0.8, 0.8, 1, (600 - Y)/100 - 0.2)
      else
        glColor4f(0.8, 0.8, 1, 0.8);

      SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y);
      glprint(Credits_Text[T]);
      Y := Y + 30;
    end;

    if Y > 600 then
      break;
  end;

end;

end.