unit uCreateGame;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  FMX.EditBox, FMX.SpinBox, FMX.ListBox, FMX.StdCtrls,
  FMX.Controls.Presentation,
  System.Generics.Collections, System.IOUtils;

type
  TfCreateGame = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    cbGames: TComboBox;
    Label2: TLabel;
    sbWebServerPort: TSpinBox;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fCreateGame: TfCreateGame;

implementation

{$R *.fmx}

uses uGeneral;

function GetGameFolders(const ARootDir: string): TArray<string>;
var
  gamesPath: string;
  folders: TStringDynArray;
  i: Integer;
begin
  // Формируем полный путь к папке с играми
  gamesPath := IncludeTrailingPathDelimiter(ARootDir) + 'games';

  // Проверяем существование папки
  if not TDirectory.Exists(gamesPath) then
  begin
    SetLength(Result, 0);
    Exit;
  end;

  // Получаем список подпапок
  folders := TDirectory.GetDirectories(gamesPath);
  SetLength(Result, Length(folders));

  // Извлекаем только имена папок (без полного пути)
  for i := 0 to High(folders) do
    Result[i] := ExtractFileName(ExcludeTrailingPathDelimiter(folders[i]));
end;

procedure TfCreateGame.Button1Click(Sender: TObject);
begin
  if cbGames.Text = '' then
    Exit;
  TTW_Bot.frOBS1.addGame(cbGames.Text, round(sbWebServerPort.Value));
  close;
end;

procedure TfCreateGame.FormCreate(Sender: TObject);
var
  gameFolders: TArray<string>;
  folder: string;
begin
  // Получаем список игровых папок
  gameFolders := GetGameFolders(ExtractFilePath(ParamStr(0)));
  // Укажите ваш корневой путь

  // Заполняем список (например, TComboBox)
  cbGames.Items.BeginUpdate;
  try
    cbGames.Items.Clear;
    for folder in gameFolders do
      cbGames.Items.Add(folder);
  finally
    cbGames.Items.EndUpdate;
  end;

  if cbGames.Items.Count > 0 then
    cbGames.ItemIndex := 0;
end;

end.
