aboutsummaryrefslogblamecommitdiffstats
path: root/Game/Code/Screens/UScreenTop.pas
blob: 340fe2ad705f19ea53b979c2674549ad99018f46 (plain) (tree)

















































































































































































































                                                                                                          
unit UScreenTop;

interface

uses
  UMenu, SDL, SysUtils, UDisplay, UMusic, USongs, UThemes, ULCD, ModiSDK;

type
  TScreenTop = class(TMenu)
    const
      ID='ID_029';   //for help system

    public
      TextLevel:        integer;
      TextArtistTitle:  integer;

      DifficultyShow:  integer;  //TODO
      TeamInfo : TTeamInfo;      //for M2-MOD

      StaticNumber:     array[1..8] of integer;
      TextNumber:       array[1..8] of integer;
      TextName:         array[1..8] of integer;
      TextScore:        array[1..8] of integer;
      TextDate:         array[1..8] of integer;

      Fadeout:      boolean;
      constructor Create; override;
      function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override;
      procedure onShow; override;
      function Draw: boolean; override;
      //procedure DrawScores(difficulty: integer);  TODO
  end;

implementation

uses UGraphic, UDataBase, UMain, UIni, UPartyM2, DateUtils, UHelp, ULog;

function TScreenTop.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean;
begin
  Result := true;
  If (PressedDown) Then begin
    case PressedKey of
      SDLK_TAB:
        begin
          ScreenPopupHelp.ShowPopup();
        end;
        
      SDLK_Q:
        begin
          Result := false;
        end;

      SDLK_ESCAPE,
      SDLK_BACKSPACE,
      SDLK_RETURN:
        begin
          if (not Fadeout) then begin
            if(ScreenSong.Mode = smNormal) or (ScreenSong.Mode = smMedley) then
              FadeTo(@ScreenSong)
            else
            begin
              ScreenSong.SongIndex := -1;
              Music.FadeStop(Ini.PreviewFading);
              FadeTo(@ScreenPartyNewRoundM2);
            end;
            Fadeout := true;
          end;
        end;
      SDLK_SYSREQ:
        begin
          Display.PrintScreen;
        end;
    end;
  end;
end;

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

  LoadFromTheme(Theme.Top);


  TextLevel := AddText(Theme.Top.TextLevel);
  TextArtistTitle := AddText(Theme.Top.TextArtistTitle);

  for I := 0 to 7 do
    StaticNumber[I+1] := AddStatic(Theme.Top.StaticNumber[I]);

  for I := 0 to 7 do
    TextNumber[I+1] := AddText(Theme.Top.TextNumber[I]);
  for I := 0 to 7 do
    TextName[I+1] := AddText(Theme.Top.TextName[I]);
  for I := 0 to 7 do
    TextScore[I+1] := AddText(Theme.Top.TextScore[I]);
  for I := 0 to 7 do
    TextDate[I+1] := AddText(Theme.Top.TextDate[I]);

end;

procedure TScreenTop.onShow;
var
  I:      integer;
  PMax:   integer;
  sung:   boolean;
  TimeStamp: integer;
begin
  if not Help.SetHelpID(ID) then
    Log.LogError('No Entry for Help-ID ' + ID + ' (ScreenTop)');

  Fadeout := false;
  sung:=false;
  TimeStamp := DateTimeToUnix(Now());

  PMax := PlayersPlay - 1;

  for I := 0 to PMax do
  begin
    if(ScreenSong.Mode=smChallenge) then
      TeamInfo.TeamInfo[I].Score:=Player[I].ScoreTotalI;

    if (Player[I].ScoreTotalI>100) and ScreenSong.SungToEnd and (ScreenSong.Mode<>smMedley) and
      (not ScreenSong.PartyMedley) then
    begin
      DataBase.AddScore(AktSong, Ini.Difficulty, Ini.Name[I], Player[I].ScoreTotalI, TimeStamp);
      sung := true;
    end;
  end;

  if ScreenSong.Mode=smChallenge then
  begin
    PartySessionM2.Teams:=TeamInfo;
    PartySessionM2.EndRound;
  end;

  if sung then
    DataBase.WriteScore(AktSong);

  DataBase.ReadScore(AktSong);

  Text[TextArtistTitle].Text := AktSong.Artist + ' - ' + AktSong.Title;

  for I := 1 to Length(AktSong.Score[Ini.Difficulty]) do begin
    Static[StaticNumber[I]].Visible := true;
    Text[TextNumber[I]].Visible := true;
    Text[TextName[I]].Visible := true;
    Text[TextScore[I]].Visible := true;
    Text[TextDate[I]].Visible := true;

    Text[TextName[I]].Text := AktSong.Score[Ini.Difficulty, I-1].Name;
    Text[TextScore[I]].Text := IntToStr(AktSong.Score[Ini.Difficulty, I-1].Score);
    Text[TextDate[I]].Text := AktSong.Score[Ini.Difficulty, I-1].Date;
  end;

  for I := Length(AktSong.Score[Ini.Difficulty])+1 to 8 do begin
    Static[StaticNumber[I]].Visible := false;
    Text[TextNumber[I]].Visible := false;
    Text[TextName[I]].Visible := false;
    Text[TextScore[I]].Visible := false;
    Text[TextDate[I]].Visible := false;
  end;       

  Text[TextLevel].Text := IDifficulty[Ini.Difficulty];
end;

function TScreenTop.Draw: boolean;
//var
{  Min:    real;
  Max:    real;
  Wsp:    real;
  Wsp2:   real;
  Pet:    integer;}

{  Item:   integer;
  P:      integer;
  C:      integer;}
begin
  // Singstar - let it be...... with 6 statics
{  if PlayersPlay = 6 then begin
    for Item := 4 to 6 do begin
      if ScreenAct = 1 then P := Item-4;
      if ScreenAct = 2 then P := Item-1;

      FillPlayer(Item, P);

{      if ScreenAct = 1 then begin
        LoadColor(
          Static[StaticBoxLightest[Item]].Texture.ColR,
          Static[StaticBoxLightest[Item]].Texture.ColG,
          Static[StaticBoxLightest[Item]].Texture.ColB,
          'P1Dark');
      end;

      if ScreenAct = 2 then begin
        LoadColor(
          Static[StaticBoxLightest[Item]].Texture.ColR,
          Static[StaticBoxLightest[Item]].Texture.ColG,
          Static[StaticBoxLightest[Item]].Texture.ColB,
          'P4Dark');
      end;}

{    end;
  end;}

  inherited Draw;
end;

end.