Changeset 130 for trunk/UEngine.pas
- Timestamp:
- May 1, 2023, 4:02:31 PM (13 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/UEngine.pas
r129 r130 10 10 URegistry, UMetaCanvas, Generics.Collections, Generics.Defaults, UMenu, 11 11 UControls, UMetroPassenger, UColors, UView, URiver, UTrack, UCity, UGeometric, 12 UTranslator, DOM, XMLRead, XMLWrite, UXMLUtils, UItems ;12 UTranslator, DOM, XMLRead, XMLWrite, UXMLUtils, UItems, FileUtil; 13 13 14 14 type … … 227 227 MenuGame: TMenu; 228 228 MenuCustomGame: TMenu; 229 MenuGameSlots: TMenu; 229 230 LastState: TGameState; 230 231 TimePerSecond: TDateTime; … … 237 238 GrabbedTrainDirection: Integer; 238 239 LastGrabbedTrain: TMetroTrain; 239 SavedGameFileName: string;240 240 function GetMetroLineThickness: Integer; 241 241 function GetServedDaysCount: Integer; … … 286 286 procedure MenuItemGameLoad(Sender: TObject); 287 287 procedure MenuItemGameSave(Sender: TObject); 288 procedure MenuItemGameSlotLoad(Sender: TObject); 289 procedure MenuItemGameSlotSave(Sender: TObject); 288 290 procedure MenuItemBack(Sender: TObject); 289 291 procedure ButtonPlay(Sender: TObject); … … 304 306 function GetImprovementBitmap(Improvement: TMetroImprovement): TBitmap; 305 307 procedure EvaluateImprovement(Improvement: TMetroImprovement); 308 procedure ReloadGameSlots(Save: Boolean); 309 function GetGameSlotFileName(Index: Integer): string; 306 310 public 307 311 // Test … … 465 469 SVisualStyle = 'Visual style'; 466 470 SStationStyle = 'Station style'; 471 SSlot = 'Slot'; 467 472 468 473 // Cities … … 2287 2292 procedure TEngine.MenuItemGameLoad(Sender: TObject); 2288 2293 begin 2289 LoadFromFile(SavedGameFileName); 2294 ReloadGameSlots(False); 2295 Menu := MenuGameSlots; 2296 end; 2297 2298 procedure TEngine.MenuItemGameSave(Sender: TObject); 2299 begin 2300 ReloadGameSlots(True); 2301 Menu := MenuGameSlots; 2302 end; 2303 2304 procedure TEngine.MenuItemGameSlotLoad(Sender: TObject); 2305 begin 2306 LoadFromFile(GetGameSlotFileName(Integer(TMenuItemButton(Sender).Ref))); 2290 2307 State := gsRunning; 2291 2308 end; 2292 2309 2293 procedure TEngine.MenuItemGameS ave(Sender: TObject);2294 begin 2295 SaveToFile( SavedGameFileName);2310 procedure TEngine.MenuItemGameSlotSave(Sender: TObject); 2311 begin 2312 SaveToFile(GetGameSlotFileName(Integer(TMenuItemButton(Sender).Ref))); 2296 2313 State := LastState; 2297 2314 end; … … 2426 2443 miTerminal: Inc(AvailableTerminals); 2427 2444 end; 2445 end; 2446 2447 procedure TEngine.ReloadGameSlots(Save: Boolean); 2448 var 2449 I: Integer; 2450 Action: TNotifyEvent; 2451 FileName: string; 2452 FileDateTime: TDateTime; 2453 ControlName: string; 2454 const 2455 GameSlotCount = 6; 2456 begin 2457 with MenuGameSlots, Items do begin 2458 Clear; 2459 Parent := Menu; 2460 if Save then Action := MenuItemGameSlotSave 2461 else Action := MenuItemGameSlotLoad; 2462 for I := 0 to GameSlotCount - 1 do begin 2463 FileName := GetGameSlotFileName(Integer(I)); 2464 ControlName := SSlot + ' ' + IntToStr(I); 2465 if FileExists(FileName) then begin 2466 FileAge(FileName, FileDateTime); 2467 ControlName := ControlName + ' (' + DateTimeToStr(FileDateTime) + ')'; 2468 end; 2469 with AddButton(ControlName, Action) do begin 2470 Ref := TObject(I); 2471 Enabled := FileExists(FileName) or Save; 2472 TextSize := 40; 2473 TextColor := Colors.MenuItemText; 2474 TextDisabledColor := Colors.MenuItemDisabledText; 2475 BackgroundColor := Colors.MenuItemBackground; 2476 BackgroundSelectedColor := Colors.MenuItemBackgroundSelected; 2477 end; 2478 end; 2479 with AddButton(SExit, MenuItemBack) do begin 2480 TextSize := 40; 2481 TextColor := Colors.MenuItemText; 2482 TextDisabledColor := Colors.MenuItemDisabledText; 2483 BackgroundColor := Colors.MenuItemBackground; 2484 BackgroundSelectedColor := Colors.MenuItemBackgroundSelected; 2485 end; 2486 OnExit := MenuItemBack; 2487 end; 2488 end; 2489 2490 function TEngine.GetGameSlotFileName(Index: Integer): string; 2491 begin 2492 Result := GetAppConfigDir(False) + 'Saved game ' + IntToStr(Index) + TransLinesExt; 2428 2493 end; 2429 2494 … … 2470 2535 end; 2471 2536 with AddButton(SLoad, MenuItemGameLoad) do begin 2472 Enabled := FileExists(SavedGameFileName);2473 2537 TextSize := 40; 2474 2538 TextColor := Colors.MenuItemText; … … 2527 2591 end; 2528 2592 with AddButton(SLoad, MenuItemGameLoad) do begin 2529 Enabled := FileExists(SavedGameFileName);2530 2593 TextSize := 40; 2531 2594 TextColor := Colors.MenuItemText; … … 3957 4020 FTime := ReadDateTime(Node, 'Time', 0); 3958 4021 FLastTime := FTime; 4022 City := Cities.SearchBySysName(ReadString(Node, 'CityName', '')); 3959 4023 3960 4024 NewNode := Node.FindNode(DOMString(TView.GetClassSysName)); … … 4007 4071 WriteInteger(Node, 'State', Integer(State)); 4008 4072 WriteDateTime(Node, 'Time', FTime); 4073 if Assigned(City) then WriteString(Node, 'CityName', City.SysName); 4009 4074 4010 4075 NewNode := Node.OwnerDocument.CreateElement(DOMString(TView.GetClassSysName)); … … 4078 4143 begin 4079 4144 inherited; 4080 SavedGameFileName := GetAppConfigDir(False) + 'LastGameState' + TransLinesExt;4081 4145 MovableTracks := True; 4082 4146 Colors := TColors.Create; … … 4095 4159 MenuGame := TMenu.Create; 4096 4160 MenuCustomGame := TMenu.Create; 4161 MenuGameSlots := TMenu.Create; 4097 4162 Menu := MenuMain; 4098 4163 InitMenus; … … 4159 4224 FreeAndNil(MenuCareer); 4160 4225 FreeAndNil(MenuGame); 4226 FreeAndNil(MenuGameSlots); 4161 4227 FreeAndNil(Cities); 4162 4228 FreeAndNil(ButtonBack);
Note:
See TracChangeset
for help on using the changeset viewer.