Remove terrain readiness diagnostic and fix graphics container name
Sync changed files to Google Drive / sync (push) Successful in 3m1s
Sync changed files to Google Drive / sync (push) Successful in 3m1s
This commit is contained in:
1 parent
d6676896d4
commit
f1b253e842
22 files changed
+2989
-352
No files matched your search
@@ -15,13 +15,6 @@ type
|
||||
dsiSeekReadConsistency
|
||||
);
|
||||
|
||||
TTerrainReadinessDiagnosticStageId = (
|
||||
trsiRxTilesLoad,
|
||||
trsiMapStreamLoad,
|
||||
trsiMapHeader,
|
||||
trsiTileRecords
|
||||
);
|
||||
|
||||
TGraphicsReadinessDiagnosticStageId = (
|
||||
grsiContextReady, grsiPhysicalSurface, grsiRendererSizeMatch,
|
||||
grsiTextureBackend, grsiSampledProgram, grsiMaxTextureSize
|
||||
@@ -56,11 +49,6 @@ type
|
||||
Value: TDiagnosticStageId;
|
||||
end;
|
||||
|
||||
TOptionalTerrainReadinessDiagnosticStageId = record
|
||||
HasValue: Boolean;
|
||||
Value: TTerrainReadinessDiagnosticStageId;
|
||||
end;
|
||||
|
||||
TOptionalGraphicsReadinessDiagnosticStageId = record
|
||||
HasValue: Boolean;
|
||||
Value: TGraphicsReadinessDiagnosticStageId;
|
||||
@@ -103,24 +91,6 @@ type
|
||||
Stream: TFileIODiagnosticStreamResult;
|
||||
end;
|
||||
|
||||
TTerrainReadinessDiagnosticEvidence = record
|
||||
RxTilesLoaded: TOptionalBoolean;
|
||||
GeneratedTransitionsReady: TOptionalBoolean;
|
||||
MapX: TOptionalInt64;
|
||||
MapY: TOptionalInt64;
|
||||
GameRev: TOptionalInt64;
|
||||
ExpectedTileCount: TOptionalInt64;
|
||||
CompletedTileCount: TOptionalInt64;
|
||||
end;
|
||||
|
||||
TTerrainReadinessDiagnosticResult = record
|
||||
Status: TDiagnosticStatus;
|
||||
FailureStage: TOptionalTerrainReadinessDiagnosticStageId;
|
||||
Error: TDiagnosticError;
|
||||
Stages: array[TTerrainReadinessDiagnosticStageId] of TDiagnosticStatus;
|
||||
Evidence: TTerrainReadinessDiagnosticEvidence;
|
||||
end;
|
||||
|
||||
TGraphicsReadinessDiagnosticEvidence = record
|
||||
ContextAvailable, RendererContextSynced, PhysicalSizeKnown,
|
||||
TextureBackendReady, SampledProgramReady: TOptionalBoolean;
|
||||
@@ -199,7 +169,6 @@ type
|
||||
SelectedMap: TDiagnosticSelectedMapMetadata;
|
||||
OverallStatus: TDiagnosticStatus;
|
||||
FileIO: TFileIODiagnosticResult;
|
||||
TerrainReadiness: TTerrainReadinessDiagnosticResult;
|
||||
GraphicsReadiness: TGraphicsReadinessDiagnosticResult;
|
||||
GraphicsTexture: TGraphicsTextureDiagnosticResult;
|
||||
GraphicsVisibleDraw: TGraphicsVisibleDrawDiagnosticResult;
|
||||
@@ -207,8 +176,6 @@ type
|
||||
|
||||
function CurrentDiagnosticReport: TDiagnosticReportState;
|
||||
procedure ReplaceFileIODiagnosticResult(const AResult: TFileIODiagnosticResult);
|
||||
procedure ReplaceTerrainReadinessDiagnosticResult(
|
||||
const AResult: TTerrainReadinessDiagnosticResult);
|
||||
procedure ReplaceGraphicsReadinessDiagnosticResult(
|
||||
const AResult: TGraphicsReadinessDiagnosticResult);
|
||||
procedure ReplaceGraphicsTextureDiagnosticResult(
|
||||
@@ -217,8 +184,6 @@ procedure ReplaceGraphicsVisibleDrawDiagnosticResult(
|
||||
const AResult: TGraphicsVisibleDrawDiagnosticResult);
|
||||
function DiagnosticStatusToken(const AStatus: TDiagnosticStatus): string;
|
||||
function DiagnosticStageIdToken(const AStage: TDiagnosticStageId): string;
|
||||
function TerrainReadinessDiagnosticStageIdToken(
|
||||
const AStage: TTerrainReadinessDiagnosticStageId): string;
|
||||
function GraphicsReadinessDiagnosticStageIdToken(
|
||||
const AStage: TGraphicsReadinessDiagnosticStageId): string;
|
||||
function GraphicsTextureDiagnosticStageIdToken(
|
||||
@@ -234,7 +199,6 @@ uses
|
||||
|
||||
var
|
||||
CurrentFileIO: TFileIODiagnosticResult;
|
||||
CurrentTerrainReadiness: TTerrainReadinessDiagnosticResult;
|
||||
CurrentGraphicsReadiness: TGraphicsReadinessDiagnosticResult;
|
||||
CurrentGraphicsTexture: TGraphicsTextureDiagnosticResult;
|
||||
CurrentGraphicsVisibleDraw: TGraphicsVisibleDrawDiagnosticResult;
|
||||
@@ -298,17 +262,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TerrainReadinessDiagnosticStageIdToken(
|
||||
const AStage: TTerrainReadinessDiagnosticStageId): string;
|
||||
begin
|
||||
case AStage of
|
||||
trsiRxTilesLoad: Result := 'rx_tiles_load';
|
||||
trsiMapStreamLoad: Result := 'map_stream_load';
|
||||
trsiMapHeader: Result := 'map_header';
|
||||
trsiTileRecords: Result := 'tile_records';
|
||||
end;
|
||||
end;
|
||||
|
||||
function CurrentDiagnosticReport: TDiagnosticReportState;
|
||||
begin
|
||||
Result.ApplicationInfo.Name := 'kam_mobile';
|
||||
@@ -323,18 +276,15 @@ begin
|
||||
Result.SelectedMap.RelativePath := SelectedMapRelativePath;
|
||||
Result.SelectedMap.Url := SelectedMapUrl;
|
||||
Result.FileIO := CurrentFileIO;
|
||||
Result.TerrainReadiness := CurrentTerrainReadiness;
|
||||
Result.GraphicsReadiness := CurrentGraphicsReadiness;
|
||||
Result.GraphicsTexture := CurrentGraphicsTexture;
|
||||
Result.GraphicsVisibleDraw := CurrentGraphicsVisibleDraw;
|
||||
if (Result.FileIO.Status = dsFail)
|
||||
or (Result.TerrainReadiness.Status = dsFail)
|
||||
or (Result.GraphicsReadiness.Status = dsFail)
|
||||
or (Result.GraphicsTexture.Status = dsFail)
|
||||
or (Result.GraphicsVisibleDraw.Status = dsFail) then
|
||||
Result.OverallStatus := dsFail
|
||||
else if (Result.FileIO.Status = dsPass)
|
||||
and (Result.TerrainReadiness.Status = dsPass)
|
||||
and (Result.GraphicsReadiness.Status = dsPass)
|
||||
and (Result.GraphicsTexture.Status = dsPass)
|
||||
and (Result.GraphicsVisibleDraw.Status = dsPass) then
|
||||
@@ -348,12 +298,6 @@ begin
|
||||
CurrentFileIO := AResult;
|
||||
end;
|
||||
|
||||
procedure ReplaceTerrainReadinessDiagnosticResult(
|
||||
const AResult: TTerrainReadinessDiagnosticResult);
|
||||
begin
|
||||
CurrentTerrainReadiness := AResult;
|
||||
end;
|
||||
|
||||
procedure ReplaceGraphicsReadinessDiagnosticResult(
|
||||
const AResult: TGraphicsReadinessDiagnosticResult);
|
||||
begin
|
||||
@@ -446,48 +390,6 @@ begin
|
||||
AActions.Add(Action);
|
||||
end;
|
||||
|
||||
procedure AppendTerrainReadinessJson(AActions: TJSONArray; const AResult: TTerrainReadinessDiagnosticResult);
|
||||
var
|
||||
Action, Stage, Evidence: TJSONObject;
|
||||
Stages: TJSONArray;
|
||||
TerrainStageId: TTerrainReadinessDiagnosticStageId;
|
||||
begin
|
||||
Action := TJSONObject.Create;
|
||||
Action.Add('id', 'terrain_readiness');
|
||||
Action.Add('status', DiagnosticStatusToken(AResult.Status));
|
||||
if AResult.FailureStage.HasValue then
|
||||
Action.Add('failure_stage', TerrainReadinessDiagnosticStageIdToken(
|
||||
AResult.FailureStage.Value))
|
||||
else
|
||||
Action.Add('failure_stage', TJSONNull.Create);
|
||||
Action.Add('error', DiagnosticErrorJson(AResult.Error));
|
||||
Stages := TJSONArray.Create;
|
||||
for TerrainStageId := Low(TTerrainReadinessDiagnosticStageId)
|
||||
to High(TTerrainReadinessDiagnosticStageId) do
|
||||
begin
|
||||
Stage := TJSONObject.Create;
|
||||
Stage.Add('id', TerrainReadinessDiagnosticStageIdToken(TerrainStageId));
|
||||
Stage.Add('status', DiagnosticStatusToken(
|
||||
AResult.Stages[TerrainStageId]));
|
||||
Stages.Add(Stage);
|
||||
end;
|
||||
Action.Add('stages', Stages);
|
||||
Evidence := TJSONObject.Create;
|
||||
Evidence.Add('rx_tiles_loaded', OptionalBooleanJson(
|
||||
AResult.Evidence.RxTilesLoaded));
|
||||
Evidence.Add('generated_transitions_ready', OptionalBooleanJson(
|
||||
AResult.Evidence.GeneratedTransitionsReady));
|
||||
Evidence.Add('map_x', OptionalInt64Json(AResult.Evidence.MapX));
|
||||
Evidence.Add('map_y', OptionalInt64Json(AResult.Evidence.MapY));
|
||||
Evidence.Add('game_rev', OptionalInt64Json(AResult.Evidence.GameRev));
|
||||
Evidence.Add('expected_tile_count', OptionalInt64Json(
|
||||
AResult.Evidence.ExpectedTileCount));
|
||||
Evidence.Add('completed_tile_count', OptionalInt64Json(
|
||||
AResult.Evidence.CompletedTileCount));
|
||||
Action.Add('evidence', Evidence);
|
||||
AActions.Add(Action);
|
||||
end;
|
||||
|
||||
procedure AppendGraphicsReadinessJson(AActions: TJSONArray; const AResult: TGraphicsReadinessDiagnosticResult);
|
||||
var
|
||||
Action, Stage, Evidence: TJSONObject;
|
||||
@@ -661,7 +563,6 @@ begin
|
||||
Root.Add('overall_status', DiagnosticStatusToken(State.OverallStatus));
|
||||
Actions := TJSONArray.Create;
|
||||
AppendFileIOJson(Actions, State.FileIO);
|
||||
AppendTerrainReadinessJson(Actions, State.TerrainReadiness);
|
||||
AppendGraphicsReadinessJson(Actions, State.GraphicsReadiness);
|
||||
|
||||
AppendGraphicsTextureJson(Actions, State.GraphicsTexture);
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
unit GameDiagnosticsTerrainReadiness;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
procedure RunTerrainReadinessDiagnostic;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
GameSelectedMap, GameDiagnosticsReport, KM_ResSprites, KM_ResTypes,
|
||||
KM_CommonClasses, KM_Utils, KM_TerrainUtils, KM_TerrainTypes, SysUtils;
|
||||
|
||||
procedure InitializeResult(out AResult: TTerrainReadinessDiagnosticResult);
|
||||
var
|
||||
Stage: TTerrainReadinessDiagnosticStageId;
|
||||
begin
|
||||
FillChar(AResult, SizeOf(AResult), 0);
|
||||
AResult.Status := dsNotRun;
|
||||
for Stage := Low(TTerrainReadinessDiagnosticStageId) to
|
||||
High(TTerrainReadinessDiagnosticStageId) do
|
||||
AResult.Stages[Stage] := dsNotRun;
|
||||
end;
|
||||
|
||||
procedure FailStage(var AResult: TTerrainReadinessDiagnosticResult;
|
||||
const AStage: TTerrainReadinessDiagnosticStageId; const AMessage: string;
|
||||
const AException: Exception = nil);
|
||||
begin
|
||||
AResult.Stages[AStage] := dsFail;
|
||||
AResult.Status := dsFail;
|
||||
AResult.FailureStage.HasValue := True;
|
||||
AResult.FailureStage.Value := AStage;
|
||||
AResult.Error.Present := True;
|
||||
AResult.Error.MessageText.HasValue := True;
|
||||
AResult.Error.MessageText.Value := AMessage;
|
||||
if AException <> nil then
|
||||
begin
|
||||
AResult.Error.ClassName.HasValue := True;
|
||||
AResult.Error.ClassName.Value := AException.ClassName;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure FailException(var AResult: TTerrainReadinessDiagnosticResult;
|
||||
const AStage: TTerrainReadinessDiagnosticStageId; const AException: Exception);
|
||||
begin
|
||||
FailStage(AResult, AStage, AException.Message, AException);
|
||||
end;
|
||||
|
||||
procedure RunTerrainReadinessDiagnostic;
|
||||
var
|
||||
ResultData: TTerrainReadinessDiagnosticResult;
|
||||
SpriteOwner: TKMResSprites;
|
||||
MapStream: TKMemoryStreamBinary;
|
||||
MapUrl: string;
|
||||
MapX, MapY, GameRev: Integer;
|
||||
TileBasic: TKMTerrainTileBasic;
|
||||
begin
|
||||
InitializeResult(ResultData);
|
||||
SpriteOwner := nil;
|
||||
MapStream := nil;
|
||||
try
|
||||
try
|
||||
SpriteOwner := TKMResSprites.Create(nil, nil, False);
|
||||
if not SpriteOwner.LoadSprites(rxTiles, False) then
|
||||
begin
|
||||
ResultData.Evidence.RxTilesLoaded.HasValue := True;
|
||||
ResultData.Evidence.RxTilesLoaded.Value := False;
|
||||
ResultData.Evidence.GeneratedTransitionsReady.HasValue := True;
|
||||
ResultData.Evidence.GeneratedTransitionsReady.Value := False;
|
||||
FailStage(ResultData, trsiRxTilesLoad,
|
||||
'Canonical rxTiles loading did not succeed');
|
||||
end
|
||||
else
|
||||
begin
|
||||
ResultData.Stages[trsiRxTilesLoad] := dsPass;
|
||||
ResultData.Evidence.RxTilesLoaded.HasValue := True;
|
||||
ResultData.Evidence.RxTilesLoaded.Value := True;
|
||||
ResultData.Evidence.GeneratedTransitionsReady.HasValue := True;
|
||||
ResultData.Evidence.GeneratedTransitionsReady.Value := True;
|
||||
end;
|
||||
except
|
||||
on E: Exception do
|
||||
FailException(ResultData, trsiRxTilesLoad, E);
|
||||
end;
|
||||
|
||||
if ResultData.Status = dsNotRun then
|
||||
try
|
||||
MapUrl := SelectedMapUrl;
|
||||
MapStream := TKMemoryStreamBinary.Create;
|
||||
MapStream.LoadFromFile(MapUrl);
|
||||
ResultData.Stages[trsiMapStreamLoad] := dsPass;
|
||||
except
|
||||
on E: Exception do
|
||||
FailException(ResultData, trsiMapStreamLoad, E);
|
||||
end;
|
||||
|
||||
if ResultData.Status = dsNotRun then
|
||||
try
|
||||
LoadMapHeader(MapStream, MapX, MapY, GameRev);
|
||||
ResultData.Stages[trsiMapHeader] := dsPass;
|
||||
ResultData.Evidence.MapX.HasValue := True;
|
||||
ResultData.Evidence.MapX.Value := Int64(MapX);
|
||||
ResultData.Evidence.MapY.HasValue := True;
|
||||
ResultData.Evidence.MapY.Value := Int64(MapY);
|
||||
ResultData.Evidence.GameRev.HasValue := True;
|
||||
ResultData.Evidence.GameRev.Value := Int64(GameRev);
|
||||
ResultData.Evidence.ExpectedTileCount.HasValue := True;
|
||||
ResultData.Evidence.ExpectedTileCount.Value := Int64(MapX) * Int64(MapY);
|
||||
ResultData.Evidence.CompletedTileCount.HasValue := True;
|
||||
ResultData.Evidence.CompletedTileCount.Value := 0;
|
||||
except
|
||||
on E: Exception do
|
||||
FailException(ResultData, trsiMapHeader, E);
|
||||
end;
|
||||
|
||||
if ResultData.Status = dsNotRun then
|
||||
try
|
||||
while ResultData.Evidence.CompletedTileCount.Value <
|
||||
ResultData.Evidence.ExpectedTileCount.Value do
|
||||
begin
|
||||
ReadTileFromStream(MapStream, TileBasic, GameRev);
|
||||
Inc(ResultData.Evidence.CompletedTileCount.Value);
|
||||
end;
|
||||
if ResultData.Evidence.CompletedTileCount.Value =
|
||||
ResultData.Evidence.ExpectedTileCount.Value then
|
||||
begin
|
||||
ResultData.Stages[trsiTileRecords] := dsPass;
|
||||
ResultData.Status := dsPass;
|
||||
end;
|
||||
except
|
||||
on E: Exception do
|
||||
FailException(ResultData, trsiTileRecords, E);
|
||||
end;
|
||||
finally
|
||||
try
|
||||
ReplaceTerrainReadinessDiagnosticResult(ResultData);
|
||||
finally
|
||||
try
|
||||
MapStream.Free;
|
||||
finally
|
||||
SpriteOwner.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
@@ -24,14 +24,10 @@ type
|
||||
FTitleLabel, FGraphicsFeedbackLabel: TCastleLabel;
|
||||
FExportButton: TCastleButton;
|
||||
FGraphicsReadinessButton, FTextureButton, FVisible2DButton: TCastleButton;
|
||||
FTerrainReadinessButton: TCastleButton;
|
||||
FTerrainReadinessStatusLabel: TCastleLabel;
|
||||
FTerrainReadinessDetailsLabel: TCastleLabel;
|
||||
FGraphicsReadinessStatusLabel, FGraphicsReadinessDetailsLabel: TCastleLabel;
|
||||
FTextureStatusLabel, FTextureDetailsLabel: TCastleLabel;
|
||||
FVisible2DStatusLabel, FVisible2DDetailsLabel: TCastleLabel;
|
||||
FFileIOInProgress, FExportInProgress: Boolean;
|
||||
FTerrainReadinessInProgress: Boolean;
|
||||
FGraphicsSession: TGraphicsDiagnosticSession;
|
||||
FGraphicsCompletionNotifiedDuringDispatch: Boolean;
|
||||
procedure RefreshReport;
|
||||
@@ -43,7 +39,6 @@ type
|
||||
procedure GraphicsVisible2DClick(Sender: TObject);
|
||||
procedure GraphicsResultPublished(Sender: TObject);
|
||||
procedure FileIOClick(Sender: TObject);
|
||||
procedure TerrainReadinessClick(Sender: TObject);
|
||||
procedure ExportClick(Sender: TObject);
|
||||
procedure ExportComplete(const AOutcome: TDiagnosticExportOutcome);
|
||||
public
|
||||
@@ -56,8 +51,7 @@ type
|
||||
implementation
|
||||
|
||||
uses
|
||||
SysUtils, Math, GameDiagnosticsFileIO, GameDiagnosticsReport,
|
||||
GameDiagnosticsTerrainReadiness;
|
||||
SysUtils, Math, GameDiagnosticsFileIO, GameDiagnosticsReport;
|
||||
|
||||
const
|
||||
LayoutMargin = 16;
|
||||
@@ -117,10 +111,6 @@ begin
|
||||
FVisible2DButton.AutoSize := False;
|
||||
FVisible2DButton.Enabled := True;
|
||||
FVisible2DButton.OnClick := @GraphicsVisible2DClick;
|
||||
FTerrainReadinessButton := TCastleButton.Create(Self);
|
||||
FTerrainReadinessButton.AutoSize := False;
|
||||
FTerrainReadinessStatusLabel := TCastleLabel.Create(Self);
|
||||
FTerrainReadinessDetailsLabel := TCastleLabel.Create(Self);
|
||||
FGraphicsReadinessStatusLabel := TCastleLabel.Create(Self);
|
||||
FGraphicsReadinessDetailsLabel := TCastleLabel.Create(Self);
|
||||
FTextureStatusLabel := TCastleLabel.Create(Self);
|
||||
@@ -130,8 +120,6 @@ begin
|
||||
|
||||
FContent.InsertFront(FStatusLabel);
|
||||
FContent.InsertFront(FDetailsLabel);
|
||||
FContent.InsertFront(FTerrainReadinessStatusLabel);
|
||||
FContent.InsertFront(FTerrainReadinessDetailsLabel);
|
||||
FContent.InsertFront(FGraphicsReadinessStatusLabel);
|
||||
FContent.InsertFront(FGraphicsReadinessDetailsLabel);
|
||||
FContent.InsertFront(FTextureStatusLabel);
|
||||
@@ -154,9 +142,6 @@ begin
|
||||
FActionRegion.InsertFront(FTextureButton);
|
||||
FVisible2DButton.Caption := 'Test Visible 2D' + LineEnding + 'RGBA / Brightness';
|
||||
FActionRegion.InsertFront(FVisible2DButton);
|
||||
FTerrainReadinessButton.Caption := 'Test MAP/RXX Terrain Readiness';
|
||||
FTerrainReadinessButton.OnClick := @TerrainReadinessClick;
|
||||
FActionRegion.InsertFront(FTerrainReadinessButton);
|
||||
FFileIOButton.Caption := 'Test File I/O';
|
||||
FFileIOButton.OnClick := @FileIOClick;
|
||||
FActionRegion.InsertFront(FFileIOButton);
|
||||
@@ -197,7 +182,7 @@ end;
|
||||
procedure TDiagnosticsView.DispatchGraphicsRequest(const ARequest: TGraphicsRequest);
|
||||
var
|
||||
Accepted: Boolean;
|
||||
Container: TCastleContainer;
|
||||
ViewContainer: TCastleContainer;
|
||||
begin
|
||||
if (FGraphicsSession <> nil) and FGraphicsSession.Busy then
|
||||
begin
|
||||
@@ -210,8 +195,8 @@ begin
|
||||
|
||||
if FGraphicsSession = nil then
|
||||
begin
|
||||
Container := Self.Container;
|
||||
if Container = nil then
|
||||
ViewContainer := Self.Container;
|
||||
if ViewContainer = nil then
|
||||
begin
|
||||
FGraphicsReadinessButton.Enabled := True;
|
||||
FTextureButton.Enabled := True;
|
||||
@@ -220,7 +205,7 @@ begin
|
||||
Exit;
|
||||
end;
|
||||
try
|
||||
FGraphicsSession := TGraphicsDiagnosticSession.Create(Container);
|
||||
FGraphicsSession := TGraphicsDiagnosticSession.Create(ViewContainer);
|
||||
FGraphicsSession.OnResultPublished := @GraphicsResultPublished;
|
||||
except
|
||||
if FGraphicsSession <> nil then
|
||||
@@ -306,9 +291,9 @@ var
|
||||
TitleHeight, GraphicsFeedbackRowHeight, ExportFeedbackRowHeight: Single;
|
||||
FreeHeight: Single;
|
||||
Columns, Rows, Index, Column, Row: Integer;
|
||||
Buttons: array[0..5] of TCastleButton;
|
||||
StatusLabels: array[0..4] of TCastleLabel;
|
||||
DetailsLabels: array[0..4] of TCastleLabel;
|
||||
Buttons: array[0..4] of TCastleButton;
|
||||
StatusLabels: array[0..3] of TCastleLabel;
|
||||
DetailsLabels: array[0..3] of TCastleLabel;
|
||||
begin
|
||||
ViewWidth := EffectiveWidth;
|
||||
ViewHeight := EffectiveHeight;
|
||||
@@ -321,7 +306,7 @@ begin
|
||||
ActionWidth := Min(AvailableWidth, Columns * 296 + (Columns - 1) * 6 + 16);
|
||||
Inset := Min(8, Max(0, (ActionWidth - 1) / 2));
|
||||
CellWidth := Max(1, (ActionWidth - 2 * Inset - (Columns - 1) * 6) / Columns);
|
||||
Rows := (6 + Columns - 1) div Columns;
|
||||
Rows := (5 + Columns - 1) div Columns;
|
||||
|
||||
FActionRegion.Width := ActionWidth;
|
||||
FActionRegion.Anchor(hpMiddle);
|
||||
@@ -340,11 +325,10 @@ begin
|
||||
FTitleLabel.Anchor(vpTop, -Inset);
|
||||
|
||||
Buttons[0] := FFileIOButton;
|
||||
Buttons[1] := FTerrainReadinessButton;
|
||||
Buttons[2] := FGraphicsReadinessButton;
|
||||
Buttons[3] := FTextureButton;
|
||||
Buttons[4] := FVisible2DButton;
|
||||
Buttons[5] := FExportButton;
|
||||
Buttons[1] := FGraphicsReadinessButton;
|
||||
Buttons[2] := FTextureButton;
|
||||
Buttons[3] := FVisible2DButton;
|
||||
Buttons[4] := FExportButton;
|
||||
for Index := 0 to High(Buttons) do
|
||||
begin
|
||||
Column := Index mod Columns;
|
||||
@@ -385,14 +369,12 @@ begin
|
||||
|
||||
StatusLabels[0] := FStatusLabel;
|
||||
DetailsLabels[0] := FDetailsLabel;
|
||||
StatusLabels[1] := FTerrainReadinessStatusLabel;
|
||||
DetailsLabels[1] := FTerrainReadinessDetailsLabel;
|
||||
StatusLabels[2] := FGraphicsReadinessStatusLabel;
|
||||
DetailsLabels[2] := FGraphicsReadinessDetailsLabel;
|
||||
StatusLabels[3] := FTextureStatusLabel;
|
||||
DetailsLabels[3] := FTextureDetailsLabel;
|
||||
StatusLabels[4] := FVisible2DStatusLabel;
|
||||
DetailsLabels[4] := FVisible2DDetailsLabel;
|
||||
StatusLabels[1] := FGraphicsReadinessStatusLabel;
|
||||
DetailsLabels[1] := FGraphicsReadinessDetailsLabel;
|
||||
StatusLabels[2] := FTextureStatusLabel;
|
||||
DetailsLabels[2] := FTextureDetailsLabel;
|
||||
StatusLabels[3] := FVisible2DStatusLabel;
|
||||
DetailsLabels[3] := FVisible2DDetailsLabel;
|
||||
for Index := 0 to High(StatusLabels) do
|
||||
begin
|
||||
StatusLabels[Index].MaxWidth := Max(1, FScroll.Width - 2 * LayoutMargin - 16);
|
||||
@@ -434,49 +416,6 @@ begin
|
||||
Result := Details;
|
||||
end;
|
||||
|
||||
function TerrainReadinessDetails(const State: TDiagnosticReportState): string;
|
||||
var
|
||||
TerrainStage: TTerrainReadinessDiagnosticStageId;
|
||||
Details: string;
|
||||
begin
|
||||
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;
|
||||
Result := Details;
|
||||
end;
|
||||
|
||||
function GraphicsReadinessDetails(const State: TDiagnosticReportState): string;
|
||||
var
|
||||
ReadinessStage: TGraphicsReadinessDiagnosticStageId;
|
||||
@@ -692,9 +631,6 @@ begin
|
||||
State := CurrentDiagnosticReport;
|
||||
FStatusLabel.Caption := 'File I/O: ' + DiagnosticStatusToken(State.FileIO.Status);
|
||||
FDetailsLabel.Caption := FileIODetails(State);
|
||||
FTerrainReadinessStatusLabel.Caption := 'MAP/RXX terrain readiness: ' +
|
||||
DiagnosticStatusToken(State.TerrainReadiness.Status);
|
||||
FTerrainReadinessDetailsLabel.Caption := TerrainReadinessDetails(State);
|
||||
FGraphicsReadinessStatusLabel.Caption := 'Graphics readiness/current surface: ' +
|
||||
DiagnosticStatusToken(State.GraphicsReadiness.Status);
|
||||
FGraphicsReadinessDetailsLabel.Caption := GraphicsReadinessDetails(State);
|
||||
@@ -733,20 +669,6 @@ 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;
|
||||
|
||||
Reference in new issue
Block a user