Complete BigTask
Sync changed files to Google Drive / sync (push) Successful in 21m38s

This commit is contained in:
admin_d committed 2026-09-17 13:48:56 +05:00
1 parent 3d5edaa086
commit 27cf50da27
4 files changed
+345 -12

No files matched your search

+70 -1
View File
@@ -16,10 +16,15 @@ type
FFileIOButton: TCastleButton;
FStatusLabel, FDetailsLabel, FExportFeedbackLabel: TCastleLabel;
FExportButton: TCastleButton;
FTerrainReadinessButton: TCastleButton;
FTerrainReadinessStatusLabel: TCastleLabel;
FTerrainReadinessDetailsLabel: TCastleLabel;
FFileIOInProgress, FExportInProgress: Boolean;
FTerrainReadinessInProgress: Boolean;
procedure RefreshReport;
procedure UpdateWrapWidth;
procedure FileIOClick(Sender: TObject);
procedure TerrainReadinessClick(Sender: TObject);
procedure ExportClick(Sender: TObject);
procedure ExportComplete(const AOutcome: TDiagnosticExportOutcome);
public
@@ -31,7 +36,8 @@ type
implementation
uses
SysUtils, GameDiagnosticsFileIO, GameDiagnosticsReport;
SysUtils, GameDiagnosticsFileIO, GameDiagnosticsReport,
GameDiagnosticsTerrainReadiness;
const
LayoutMargin = 16;
@@ -72,11 +78,19 @@ begin
FExportFeedbackLabel := TCastleLabel.Create(Self);
FFileIOButton := TCastleButton.Create(Self);
FExportButton := TCastleButton.Create(Self);
FTerrainReadinessButton := TCastleButton.Create(Self);
FTerrainReadinessStatusLabel := TCastleLabel.Create(Self);
FTerrainReadinessDetailsLabel := TCastleLabel.Create(Self);
FContent.InsertFront(FExportFeedbackLabel);
FExportButton.Caption := 'Export Report';
FExportButton.OnClick := @ExportClick;
FContent.InsertFront(FExportButton);
FContent.InsertFront(FTerrainReadinessDetailsLabel);
FContent.InsertFront(FTerrainReadinessStatusLabel);
FTerrainReadinessButton.Caption := 'Test MAP/RXX Terrain Readiness';
FTerrainReadinessButton.OnClick := @TerrainReadinessClick;
FContent.InsertFront(FTerrainReadinessButton);
FContent.InsertFront(FDetailsLabel);
FContent.InsertFront(FStatusLabel);
FFileIOButton.Caption := 'Test File I/O';
@@ -94,6 +108,7 @@ begin
WrapWidth := Width - 2 * LayoutMargin;
if WrapWidth < 1 then WrapWidth := 1;
FDetailsLabel.MaxWidth := WrapWidth;
FTerrainReadinessDetailsLabel.MaxWidth := WrapWidth;
FExportFeedbackLabel.MaxWidth := WrapWidth;
end;
@@ -101,6 +116,7 @@ procedure TDiagnosticsView.RefreshReport;
var
State: TDiagnosticReportState;
Stage: TDiagnosticStageId;
TerrainStage: TTerrainReadinessDiagnosticStageId;
Details: string;
begin
State := CurrentDiagnosticReport;
@@ -132,6 +148,45 @@ begin
if RepeatEqual.HasValue then Details := Details + LineEnding + 'repeat_equal: ' + OptionalBooleanText(RepeatEqual);
end;
FDetailsLabel.Caption := Details;
FTerrainReadinessStatusLabel.Caption := 'MAP/RXX terrain readiness: ' +
DiagnosticStatusToken(State.TerrainReadiness.Status);
Details := '';
for TerrainStage := Low(TTerrainReadinessDiagnosticStageId)
to High(TTerrainReadinessDiagnosticStageId) do
begin
if Details <> '' then Details := Details + LineEnding;
Details := Details + TerrainReadinessDiagnosticStageIdToken(TerrainStage) + ': ' +
DiagnosticStatusToken(State.TerrainReadiness.Stages[TerrainStage]);
end;
if State.TerrainReadiness.FailureStage.HasValue then
Details := Details + LineEnding + 'failure_stage: ' +
TerrainReadinessDiagnosticStageIdToken(
State.TerrainReadiness.FailureStage.Value);
if State.TerrainReadiness.Error.Present then
begin
Details := Details + LineEnding + 'error class: ' +
OptionalStringText(State.TerrainReadiness.Error.ClassName);
Details := Details + LineEnding + 'error message: ' +
OptionalStringText(State.TerrainReadiness.Error.MessageText);
end;
with State.TerrainReadiness.Evidence do
begin
if RxTilesLoaded.HasValue then
Details := Details + LineEnding + 'rx_tiles_loaded: ' +
OptionalBooleanText(RxTilesLoaded);
if GeneratedTransitionsReady.HasValue then
Details := Details + LineEnding + 'generated_transitions_ready: ' +
OptionalBooleanText(GeneratedTransitionsReady);
if MapX.HasValue then Details := Details + LineEnding + 'map_x: ' + OptionalInt64Text(MapX);
if MapY.HasValue then Details := Details + LineEnding + 'map_y: ' + OptionalInt64Text(MapY);
if GameRev.HasValue then Details := Details + LineEnding + 'game_rev: ' + OptionalInt64Text(GameRev);
if ExpectedTileCount.HasValue then
Details := Details + LineEnding + 'expected_tile_count: ' + OptionalInt64Text(ExpectedTileCount);
if CompletedTileCount.HasValue then
Details := Details + LineEnding + 'completed_tile_count: ' + OptionalInt64Text(CompletedTileCount);
end;
FTerrainReadinessDetailsLabel.Caption := Details;
end;
procedure TDiagnosticsView.Start;
@@ -160,6 +215,20 @@ begin
end;
end;
procedure TDiagnosticsView.TerrainReadinessClick(Sender: TObject);
begin
if FTerrainReadinessInProgress then Exit;
FTerrainReadinessInProgress := True;
FTerrainReadinessButton.Enabled := False;
try
RunTerrainReadinessDiagnostic;
RefreshReport;
finally
FTerrainReadinessButton.Enabled := True;
FTerrainReadinessInProgress := False;
end;
end;
procedure TDiagnosticsView.ExportClick(Sender: TObject);
begin
if FExportInProgress then Exit;