ttw_fmx_v10/forms/uCreateGame.pas

94 lines
2.1 KiB
Plaintext

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.