Changeset 589 for trunk/GameServer.pas


Ignore:
Timestamp:
Jul 24, 2024, 10:51:34 AM (8 weeks ago)
Author:
chronos
Message:
  • Fixed: With selected map it was not possible to start a new game due to wrong map path.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GameServer.pas

    r558 r589  
    6969procedure Done;
    7070
    71 procedure StartNewGame(const Path, FileName, Map: string;
     71procedure StartNewGame(const FileName, AMapFileName: string;
    7272  Newlx, Newly, NewLandMass, NewMaxTurn: Integer);
    73 function LoadGame(const Path, FileName: string; Turn: Integer;
     73function LoadGame(const FileName: string; Turn: Integer;
    7474  MovieMode: Boolean): Boolean;
    7575procedure EditMap(const Map: string; Newlx, Newly, NewLandMass: Integer);
    7676procedure DirectHelp(Command: Integer);
     77function ToAutoSaveFileName(FileName: string): string;
     78function IsAutoSaveFileName(FileName: string): Boolean;
    7779
    7880procedure ChangeClient;
     
    391393end;
    392394
     395function ToAutoSaveFileName(FileName: string): string;
     396begin
     397  Result := ExtractFileDir(FileName) + DirectorySeparator + '~' + ExtractFileName(FileName);
     398end;
     399
     400function IsAutoSaveFileName(FileName: string): Boolean;
     401begin
     402  FileName := ExtractFileName(FileName);
     403  Result := (Length(FileName) > 0) and (FileName[1] = '~');
     404end;
     405
    393406procedure LogChanges;
    394407var
     
    579592begin
    580593  Result := False;
    581   MapFile := nil;
     594  if not FileExists(FileName) then Exit;
     595  MapFile := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
    582596  try
    583     MapFile := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive);
    584597    MapFile.Position := 0;
    585598    MapFile.Read(S[1], 8); { file id }
     
    611624      Result := True;
    612625    end;
     626  finally
    613627    FreeAndNil(MapFile);
    614   except
    615     if MapFile <> nil then
    616       FreeAndNil(MapFile);
    617628  end;
    618629end;
     
    641652
    642653  if Auto and AutoSaveExists then // append to existing file
    643     LogFile := TFileStream.Create(SavePath + FileName, fmOpenReadWrite or
    644       fmShareExclusive)
     654    LogFile := TFileStream.Create(FileName, fmOpenReadWrite or fmShareExclusive)
    645655  else // create new file
    646     LogFile := TFileStream.Create(SavePath + FileName,
    647       fmCreate or fmShareExclusive);
     656    LogFile := TFileStream.Create(FileName, fmCreate or fmShareExclusive);
    648657
    649658  Zero := 0;
     
    11111120end;
    11121121
    1113 function LoadGame(const Path, FileName: string; Turn: Integer;
    1114   MovieMode: Boolean): Boolean;
     1122function LoadGame(const FileName: string; Turn: Integer; MovieMode: Boolean): Boolean;
    11151123var
    11161124  J: TBrain;
     
    11251133  Started, StatRequest: Boolean;
    11261134begin
    1127   SavePath := Path;
     1135  SavePath := ExtractFileDir(FileName);
    11281136  LogFileName := FileName;
    11291137  LoadTurn := Turn;
    1130   LogFile := TFileStream.Create(SavePath + LogFileName, fmOpenRead or
     1138  LogFile := TFileStream.Create(LogFileName, fmOpenRead or
    11311139    fmShareExclusive);
    11321140  LogFile.Position := 0;
     
    12031211  else
    12041212    Mode := moLoading_Fast;
    1205 {$IFDEF TEXTLOG}AssignFile(TextLog, SavePath + LogFileName + '.txt');
     1213{$IFDEF TEXTLOG}AssignFile(TextLog, LogFileName + '.txt');
    12061214  Rewrite(TextLog); {$ENDIF}
    12071215  LoadOK := True;
     
    12991307  NoLogChanges;
    13001308  NoLogCityTileChanges;
    1301   if LogFileName[1] = '~' then
    1302   begin
     1309  if IsAutoSaveFileName(LogFileName) then begin
    13031310    Delete(LogFileName, 1, 1);
    13041311    nLogOpened := -1;
     
    13271334  if not LoadOK then
    13281335  begin
    1329     NotifyMessage := SavePath + LogFileName;
     1336    NotifyMessage := LogFileName;
    13301337    Notify(ntLoadError);
    13311338  end;
     
    13601367end;
    13611368
    1362 procedure StartNewGame(const Path, FileName, Map: string;
     1369procedure StartNewGame(const FileName, AMapFileName: string;
    13631370  Newlx, Newly, NewLandMass, NewMaxTurn: Integer);
    13641371var
     
    13661373begin
    13671374  Notify(ntStartDone);
    1368   SavePath := Path;
     1375  SavePath := ExtractFileDir(FileName);
    13691376  LogFileName := FileName;
    1370   MapFileName := Map;
     1377  MapFileName := AMapFileName;
    13711378  {$IFDEF FastContact}
    13721379    lx := 24;
     
    31383145            begin
    31393146              LogChanges;
    3140               SaveGame('~' + LogFileName, True);
     3147              SaveGame(ToAutoSaveFileName(LogFileName), True);
    31413148            end;
    31423149{$ENDIF}
     
    32683275            SaveGame(LogFileName, False);
    32693276          end;
    3270           DeleteFile(SavePath + '~' + LogFileName);
     3277          DeleteFile(ToAutoSaveFileName(LogFileName));
    32713278          EndGame;
    32723279          case Command of
     
    32763283              Notify(ntStartGo);
    32773284            sNextRound:
    3278               StartNewGame(SavePath, LogFileName, MapFileName, lx, ly,
    3279                 LandMass, MaxTurn);
     3285              StartNewGame(LogFileName, MapFileName, lx, ly, LandMass, MaxTurn);
    32803286            sReload:
    3281               LoadGame(SavePath, LogFileName, Integer(Data), False);
     3287              LoadGame(LogFileName, Integer(Data), False);
    32823288          end;
    32833289        end
Note: See TracChangeset for help on using the changeset viewer.