program Pipes_tetris;

{$R Ico.res}

uses
  Omega,
  OmegaPNG,
  uInit in 'uInit.pas',
  uGame in 'uGame.pas',
  uMenu in 'uMenu.pas',
  MikModEng,
  load_xm;

// Главная процедура
  procedure Main;
  begin
    case Scene of
      sMenu : Menu_Process;
      sGame :
      begin
        Game_Process;
        Nick := Nick;
      end;
      sLogo : Logo_Process;
      sPause : Pausegame;
    end;
  end;

  // Инициализация
  procedure Init;
  begin
    AllInit;
    Scene := sLogo;
  end;

  // Отриовка
  procedure Paint;
  begin
    case Scene of
      sMenu : Menu_Paint;
      sGame : Game_Paint;
      sLogo : Logo_Paint;
      sPause : Pausegame_Paint;
    end;
  end;

  // Процедура выхода
  procedure Exit;
  begin
    {if (savenick = true) then Nick := Save_Nick
    else Nick := Key_EndReadText;}
    Nick := Save_Nick;
    INI_WriteKeyStr( 'Other', 'Nickname', PChar(String(Nick)) );
    INI_WriteKeyInt( 'Volume', 'Music', Music_Volume );
    INI_WriteKeyInt( 'Volume', 'Sounds', Sounds_Volume );
    INI_WriteKeyInt( 'Other', 'Brightness', Brightness );
    INI_WriteKeyInt( 'SrollBars', 'Music', Music_Bar.move_x );
    INI_WriteKeyInt( 'SrollBars', 'Sounds', Sounds_Bar.move_x );
    INI_WriteKeyInt( 'SrollBars', 'Brightness', Brightness_Bar.move_x );
    INI_WriteKeyStr( 'Volume', 'Mute', PChar(String(BoolToStr( MuteSounds_Check.check ))) );
    INI_WriteKeyStr( 'Show', 'Gears', PChar(String(BoolToStr( ShowGears_Check.check ))) );
    INI_WriteKeyStr( 'Show', 'Greed', PChar(String(BoolToStr( show_greed ))) );
    INI_WriteKeyStr( 'Show', 'FPS', PChar(String(BoolToStr( ShowFPS_Check.check ))) );
    INI_WriteKeyStr( 'Other', 'Fullscreen', PChar(String(BoolToStr( Fullscreen ))) );
    INI_SaveToFile( 'data\save\settings.ini' );
    INI_WriteKeyStr( 'Other', 'Fullscreen', PChar(String(BoolToStr( Fullscreen ))) );
    add_score;
    save_top;
  end;

  begin
    LoadOMEGA('data\libs\Omega.dll'); // Загружаем Омегу
    Main_Timer := Timer_Create (@Main, 5); // Создаём таймер
    // Регистрируем системыне процедуры
    OE_REGPROCEDURE(SYS_DRAW, @Paint); // Регистрируем
    OE_REGPROCEDURE(SYS_QUIT, @EXIT);  // системные
    OE_REGPROCEDURE(SYS_INIT, @INIT);  // процедуры
    INI_LoadFromFile( 'data\save\settings.ini' );
    Fullscreen := StrToBool( String(INI_ReadKeyStr( 'Other', 'Fullscreen' )) );
    if fullscreen then OE_SetScreenOptions( 800, 600, 32, 0, TRUE, FALSE )
    else OE_SetScreenOptions( 800, 600, 32, 0, FALSE, FALSE );
    //OE_SetScreenOptions( 800, 600, 32, 0, TRUE, FALSE ); // Параметры экрана
    //OE_SetAdvancedOptions( TRUE, TRUE, FALSE );
    OE_ShowCursor(FALSE); // Скрываем дефольтный курсор
    OE_INIT; // Запускаем движок
  end.
