Changeset 121 for trunk/UEngine.pas


Ignore:
Timestamp:
Oct 26, 2022, 3:12:02 PM (19 months ago)
Author:
chronos
Message:
  • Modifed: Made TEngine class TComponent and to be independent from FormMain.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UEngine.pas

    r119 r121  
    157157    miFastTrain);
    158158  TMetroImprovementSet = set of TMetroImprovement;
     159  TFullScrenChangeEvent = procedure (Sender: TObject; Active: Boolean) of object;
    159160
    160161  { TEngine }
    161162
    162   TEngine = class
     163  TEngine = class(TComponent)
    163164  private
    164165    FDarkMode: Boolean;
     166    FFullScreen: Boolean;
    165167    FOnDarkModeChange: TNotifyEvent;
     168    FOnExit: TNotifyEvent;
     169    FOnFullScreenChange: TFullScrenChangeEvent;
    166170    FState: TGameState;
    167171    FTranslator: TTranslator;
     
    219223      UpdatedShape: TStationShape; Distance: Integer);
    220224    procedure SetDarkMode(AValue: Boolean);
     225    procedure SetFullScreen(AValue: Boolean);
    221226    procedure SetState(AValue: TGameState);
    222227    procedure TrainsMovement;
     
    304309    procedure LoadFromRegistry;
    305310    procedure SaveToRegistry;
    306     constructor Create;
     311    constructor Create(AOwner: TComponent); override;
    307312    destructor Destroy; override;
    308313    procedure Tick;
     
    313318  published
    314319    property DarkMode: Boolean read FDarkMode write SetDarkMode;
     320    property FullScreen: Boolean read FFullScreen write SetFullScreen;
    315321    property Translator: TTranslator read FTranslator write FTranslator;
    316322    property OnDarkModeChange: TNotifyEvent read FOnDarkModeChange
    317323      write FOnDarkModeChange;
     324    property OnFullScreenChange: TFullScrenChangeEvent read FOnFullScreenChange
     325      write FOnFullScreenChange;
     326    property OnExit: TNotifyEvent read FOnExit write FOnExit;
    318327  end;
    319328
     
    349358
    350359uses
    351   UFormMain, ULanguages;
     360  ULanguages;
    352361
    353362resourcestring
     
    14041413end;
    14051414
     1415procedure TEngine.SetFullScreen(AValue: Boolean);
     1416begin
     1417  if FFullScreen = AValue then Exit;
     1418  FFullScreen := AValue;
     1419  if Assigned(FOnFullScreenChange) then
     1420    FOnFullScreenChange(Self, FFullScreen);
     1421end;
     1422
    14061423procedure TEngine.SetState(AValue: TGameState);
    14071424begin
     
    16601677procedure TEngine.MenuItemExit(Sender: TObject);
    16611678begin
    1662   FormMain.Close;
     1679  if Assigned(FOnExit) then FOnExit(Self);
    16631680end;
    16641681
     
    17391756      BackgroundColor := Colors.MenuItemBackground;
    17401757      BackgroundSelectedColor := Colors.MenuItemBackgroundSelected;
    1741       Checked := FormMain.FullScreen;
     1758      Checked := FullScreen;
    17421759    end;
    17431760    with AddButton(SBack, MenuItemBack) do begin
     
    18831900procedure TEngine.FullScreenChanged(Sender: TObject);
    18841901begin
    1885   FormMain.FullScreen := TMenuItemCheckBox(Sender).Checked;
    1886   with TPersistentForm.Create(nil) do
    1887   try
    1888     Form := FormMain;
    1889     SetFullScreen(FormMain.FullScreen);
    1890   finally
    1891     Free;
    1892   end;
     1902  FullScreen := TMenuItemCheckBox(Sender).Checked;
    18931903end;
    18941904
     
    33623372end;
    33633373
    3364 constructor TEngine.Create;
    3365 begin
     3374constructor TEngine.Create(AOwner: TComponent);
     3375begin
     3376  inherited;
    33663377  ImprovementImageSize := ScaleX(64, 96);
    33673378  IconSize := ScaleX(32, 96);
Note: See TracChangeset for help on using the changeset viewer.