index 09f5076c9b919fc95d9f96a09f672f20193bc24b..2d91494b1e50b13806bb4c193b319b0ed7e7c2af 100644 (file)
--- a/src/game/g_saveload.pas
+++ b/src/game/g_saveload.pas
//if (Length(gCurrentMapFileName) <> 0) then e_LogWritefln('SAVE: current map is ''%s''...', [gCurrentMapFileName]);
utils.writeStr(st, gCurrentMapFileName);
// Ïóòü ê êàðòå
//if (Length(gCurrentMapFileName) <> 0) then e_LogWritefln('SAVE: current map is ''%s''...', [gCurrentMapFileName]);
utils.writeStr(st, gCurrentMapFileName);
// Ïóòü ê êàðòå
- utils.writeStr(st, gGameSettings.WAD);
+ utils.writeStr(st, ExtractFileName(gGameSettings.WAD));
// Èìÿ êàðòû
utils.writeStr(st, g_ExtractFileName(gMapInfo.Map));
// Êîëè÷åñòâî èãðîêîâ
// Èìÿ êàðòû
utils.writeStr(st, g_ExtractFileName(gMapInfo.Map));
// Êîëè÷åñòâî èãðîêîâ
// Ëèìèò âðåìåíè
utils.writeInt(st, Word(gGameSettings.TimeLimit));
// Ëèìèò î÷êîâ
// Ëèìèò âðåìåíè
utils.writeInt(st, Word(gGameSettings.TimeLimit));
// Ëèìèò î÷êîâ
- utils.writeInt(st, Word(gGameSettings.GoalLimit));
+ utils.writeInt(st, Word(gGameSettings.ScoreLimit));
// Ëèìèò æèçíåé
utils.writeInt(st, Byte(gGameSettings.MaxLives));
// Èãðîâûå îïöèè
// Ëèìèò æèçíåé
utils.writeInt(st, Byte(gGameSettings.MaxLives));
// Èãðîâûå îïöèè
WAD_Path, Map_Name: AnsiString;
nPlayers: Integer;
Game_Type, Game_Mode, Game_MaxLives: Byte;
WAD_Path, Map_Name: AnsiString;
nPlayers: Integer;
Game_Type, Game_Mode, Game_MaxLives: Byte;
- Game_TimeLimit, Game_GoalLimit: Word;
+ Game_TimeLimit, Game_ScoreLimit: Word;
Game_Time, Game_Options: Cardinal;
Game_CoopMonstersKilled,
Game_CoopSecretsFound,
Game_Time, Game_Options: Cardinal;
Game_CoopMonstersKilled,
Game_CoopSecretsFound,
e_WriteLog('Loading saved game...', TMsgType.Notify);
e_WriteLog('Loading saved game...', TMsgType.Notify);
- {$IF DEFINED(D2F_DEBUG)}try{$ENDIF}
+{$IF DEFINED(D2F_DEBUG)}
+ try
+{$ENDIF}
//g_Game_Free(false); // don't free textures for the same map
g_Game_ClearLoading();
g_Game_SetLoadingText(_lc[I_LOAD_SAVE_FILE], 0, False);
//g_Game_Free(false); // don't free textures for the same map
g_Game_ClearLoading();
g_Game_SetLoadingText(_lc[I_LOAD_SAVE_FILE], 0, False);
// Ëèìèò âðåìåíè
Game_TimeLimit := utils.readWord(st);
// Ëèìèò î÷êîâ
// Ëèìèò âðåìåíè
Game_TimeLimit := utils.readWord(st);
// Ëèìèò î÷êîâ
- Game_GoalLimit := utils.readWord(st);
+ Game_ScoreLimit := utils.readWord(st);
// Ëèìèò æèçíåé
Game_MaxLives := utils.readByte(st);
// Èãðîâûå îïöèè
// Ëèìèò æèçíåé
Game_MaxLives := utils.readByte(st);
// Èãðîâûå îïöèè
///// /////
// Çàãðóæàåì êàðòó:
///// /////
// Çàãðóæàåì êàðòó:
- ZeroMemory(@gGameSettings, sizeof(TGameSettings));
+ gGameSettings := Default(TGameSettings);
gAimLine := false;
gShowMap := false;
gAimLine := false;
gShowMap := false;
- if (Game_Type = GT_NONE) or (Game_Type = GT_SINGLE) then
- begin
- // Íàñòðîéêè èãðû
- gGameSettings.GameType := GT_SINGLE;
- gGameSettings.MaxLives := 0;
- gGameSettings.Options := gGameSettings.Options+GAME_OPTION_ALLOWEXIT;
- gGameSettings.Options := gGameSettings.Options+GAME_OPTION_MONSTERS;
- gGameSettings.Options := gGameSettings.Options+GAME_OPTION_BOTVSMONSTER;
- gSwitchGameMode := GM_SINGLE;
- end
- else
- begin
- // Íàñòðîéêè èãðû
- gGameSettings.GameType := GT_CUSTOM;
- gGameSettings.GameMode := Game_Mode;
- gSwitchGameMode := Game_Mode;
- gGameSettings.TimeLimit := Game_TimeLimit;
- gGameSettings.GoalLimit := Game_GoalLimit;
- gGameSettings.MaxLives := IfThen(Game_Mode = GM_CTF, 0, Game_MaxLives);
- gGameSettings.Options := Game_Options;
- end;
+ // Íàñòðîéêè èãðû
+ gGameSettings.GameType := Game_Type;
+ gGameSettings.GameMode := Game_Mode;
+ gGameSettings.TimeLimit := Game_TimeLimit;
+ gGameSettings.ScoreLimit := Game_ScoreLimit;
+ gGameSettings.MaxLives := Game_MaxLives;
+ gGameSettings.Options := TGameOptions(Game_Options);
+ gSwitchGameMode := Game_Mode;
g_Game_ExecuteEvent('ongamestart');
// Óñòàíîâêà ðàçìåðîâ îêîí èãðîêîâ
g_Game_ExecuteEvent('ongamestart');
// Óñòàíîâêà ðàçìåðîâ îêîí èãðîêîâ
// Çàãðóçêà è çàïóñê êàðòû
//FIXME: save/load `asMegawad`
if not g_Game_StartMap(false{asMegawad}, WAD_Path+':\'+Map_Name, True, curmapfile) then
// Çàãðóçêà è çàïóñê êàðòû
//FIXME: save/load `asMegawad`
if not g_Game_StartMap(false{asMegawad}, WAD_Path+':\'+Map_Name, True, curmapfile) then
- begin
- g_FatalError(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
- exit;
- end;
+ raise Exception.Create(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
// Íàñòðîéêè èãðîêîâ è áîòîâ
g_Player_Init();
// Íàñòðîéêè èãðîêîâ è áîòîâ
g_Player_Init();
// done
gLoadGameMode := false;
result := true;
// done
gLoadGameMode := false;
result := true;
- {$IF DEFINED(D2F_DEBUG)}
+{$IF DEFINED(D2F_DEBUG)}
except
begin
errpos := LongWord(st.position);
raise;
end;
end;
except
begin
errpos := LongWord(st.position);
raise;
end;
end;
- {$ENDIF}
+{$ENDIF}
finally
st.Free();
end;
finally
st.Free();
end;