Changeset 76 for trunk/UEngine.pas


Ignore:
Timestamp:
May 18, 2021, 10:25:20 PM (3 years ago)
Author:
chronos
Message:
  • Fixed: Colors inversion of used images if dark mode active.
  • Fixed: Back button arrow drawn as image instead of font. Left arrow was not supported under Ubuntu.
  • Modified: Allow to start new track from already connected station.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UEngine.pas

    r73 r76  
    277277  private
    278278    FDarkMode: Boolean;
     279    FOnDarkModeChange: TNotifyEvent;
    279280    LastMousePos: TPoint;
    280281    LastFocusedStation: TMapStation;
     
    292293    MenuOptions: TMenu;
    293294    MenuGame: TMenu;
    294     ButtonBack: TMenuItemButton;
    295295    LastState: TGameState;
    296296    function GetServedDaysCount: Integer;
     
    345345    State: TGameState;
    346346    RedrawPending: Boolean;
     347    ButtonBack: TMenuItemImage;
    347348    ImagePassenger: TImage;
    348349    ImageLocomotive: TImage;
     
    365366    property DarkMode: Boolean read FDarkMode write SetDarkMode;
    366367    property ServedDaysCount: Integer read GetServedDaysCount;
     368    property OnDarkModeChange: TNotifyEvent read FOnDarkModeChange
     369      write FOnDarkModeChange;
    367370  end;
    368371
     
    382385  ImagePassengerName = 'Images/Passenger.png';
    383386  ImageLocomotiveName = 'Images/Locomotive.png';
     387  ImageLeftArrowName = 'Images/Left arrow.png';
    384388  TrainPassengerCount = 6;
    385389  StationMinDistance = 100;
     
    403407
    404408uses
    405   UGeometric, UFormMain, ULanguages;
     409  UGeometric, UFormMain, ULanguages, UPixelPointer;
    406410
    407411resourcestring
     
    16671671  FDarkMode := AValue;
    16681672  InitColors;
     1673  if Assigned(FOnDarkModeChange) then FOnDarkModeChange(Self);
    16691674end;
    16701675
     
    26432648  NewIndex: Integer;
    26442649begin
    2645   if Button = mbLeft then begin
    2646     if State <> gsMenu then begin
     2650  if (Button = mbLeft) and (State <> gsMenu) then begin
    26472651    MouseHold := True;
    26482652    LastFocusedStation := nil;
     
    26562660    // Select unused train
    26572661    if (Distance(Position, Point(View.DestRect.Right div 2 - Length(LineColors) div 2 * LineColorsDist - 100,
    2658     View.DestRect.Bottom - LineColorsDist)) < 30) and
     2662      View.DestRect.Bottom - LineColorsDist)) < 30) and
    26592663    (Trains.GetUnusedCount > 0) then begin
    26602664      SelectedTrain := Trains.GetUnusedTrain;
    26612665      Exit;
     2666    end;
     2667
     2668    // New track creation from selected station as start
     2669    Station := GetStationOnPos(View.PointDestToSrc(Position));
     2670    if Assigned(Station) then begin
     2671      if Assigned(SelectedLine) and (SelectedLine.LineStations.Count = 0) then NewLine := SelectedLine
     2672        else NewLine := GetUnusedLine;
     2673      if Assigned(NewLine) then begin
     2674        NewLine.ConnectStation(Station, nil, nil);
     2675        TrackStationDown := NewLine.Track.Points.Last;
     2676        TrackStationUp := nil;
     2677        LastFocusedStation := Station;
     2678        SelectedLine := NewLine;
     2679        Exit;
     2680      end;
    26622681    end;
    26632682
     
    26862705    end;
    26872706    if Assigned(Track) then Track.Free;
    2688 
    2689     // New track creation from selected station as start
    2690     Station := GetStationOnPos(View.PointDestToSrc(Position));
    2691     if Assigned(Station) then begin
    2692       if Assigned(SelectedLine) and (SelectedLine.LineStations.Count = 0) then NewLine := SelectedLine
    2693         else NewLine := GetUnusedLine;
    2694       if Assigned(NewLine) then begin
    2695         NewLine.ConnectStation(Station, nil, nil);
    2696         TrackStationDown := NewLine.Track.Points.Last;
    2697         TrackStationUp := nil;
    2698         LastFocusedStation := Station;
    2699       end;
    2700     end;
    2701     end;
    27022707  end;
    27032708end;
     
    27872792constructor TEngine.Create;
    27882793begin
    2789   ButtonBack := TMenuItemButton.Create;
    2790   ButtonBack.Text := '🡸';
     2794  ButtonBack := TMenuItemImage.Create;
    27912795  ButtonBack.OnClick := ButtonBackClick;
    27922796  ButtonBack.BackgroundColor := clNone;
     2797  ButtonBack.Bounds := Bounds(0, 0, ScaleX(80, 96), ScaleY(80, 96));
    27932798  MenuMain := TMenu.Create;
    27942799  MenuOptions := TMenu.Create;
Note: See TracChangeset for help on using the changeset viewer.