mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-03-21 18:31:10 +00:00
- use std::vector<std::string> to pass the file list to InitMultipleFiles
This commit is contained in:
parent
a0d679b84b
commit
4906d287cb
17 changed files with 67 additions and 51 deletions
|
@ -1003,7 +1003,7 @@ void FExecList::ExecCommands() const
|
|||
}
|
||||
}
|
||||
|
||||
void FExecList::AddPullins(TArray<FString> &wads, FConfigFile *config) const
|
||||
void FExecList::AddPullins(std::vector<std::string>& wads, FConfigFile *config) const
|
||||
{
|
||||
for (unsigned i = 0; i < Pullins.Size(); ++i)
|
||||
{
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#ifndef __C_DISPATCH_H__
|
||||
#define __C_DISPATCH_H__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stdint.h>
|
||||
#include <functional>
|
||||
#include "c_console.h"
|
||||
|
@ -52,7 +54,7 @@ struct FExecList
|
|||
|
||||
void AddCommand(const char *cmd, const char *file = nullptr);
|
||||
void ExecCommands() const;
|
||||
void AddPullins(TArray<FString> &wads, FConfigFile *config) const;
|
||||
void AddPullins(std::vector<std::string> &wads, FConfigFile *config) const;
|
||||
};
|
||||
|
||||
extern bool ParsingKeyConf, UnsafeExecutionContext;
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
#include "md5.h"
|
||||
#include "i_specialpaths.h"
|
||||
#include "i_system.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
extern FILE* Logfile;
|
||||
|
||||
|
|
|
@ -207,12 +207,11 @@ void FileSystem::DeleteAll ()
|
|||
|
||||
bool FileSystem::InitSingleFile(const char* filename, FileSystemMessageFunc Printf)
|
||||
{
|
||||
TArray<FString> filenames;
|
||||
filenames.Push(filename);
|
||||
std::vector<std::string> filenames = { filename };
|
||||
return InitMultipleFiles(filenames, nullptr, Printf);
|
||||
}
|
||||
|
||||
bool FileSystem::InitMultipleFiles (TArray<FString> &filenames, LumpFilterInfo* filter, FileSystemMessageFunc Printf, bool allowduplicates, FILE* hashfile)
|
||||
bool FileSystem::InitMultipleFiles (std::vector<std::string>& filenames, LumpFilterInfo* filter, FileSystemMessageFunc Printf, bool allowduplicates, FILE* hashfile)
|
||||
{
|
||||
int numfiles;
|
||||
|
||||
|
@ -223,26 +222,27 @@ bool FileSystem::InitMultipleFiles (TArray<FString> &filenames, LumpFilterInfo*
|
|||
// first, check for duplicates
|
||||
if (allowduplicates)
|
||||
{
|
||||
for (unsigned i=0;i<filenames.Size(); i++)
|
||||
for (size_t i=0;i<filenames.size(); i++)
|
||||
{
|
||||
for (unsigned j=i+1;j<filenames.Size(); j++)
|
||||
for (size_t j=i+1;j<filenames.size(); j++)
|
||||
{
|
||||
if (strcmp(filenames[i], filenames[j]) == 0)
|
||||
if (filenames[i] == filenames[j])
|
||||
{
|
||||
filenames.Delete(j);
|
||||
filenames.erase(filenames.begin() + j);
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(unsigned i=0;i<filenames.Size(); i++)
|
||||
for(size_t i=0;i<filenames.size(); i++)
|
||||
{
|
||||
AddFile (filenames[i], nullptr, filter, Printf, hashfile);
|
||||
AddFile(filenames[i].c_str(), nullptr, filter, Printf, hashfile);
|
||||
|
||||
if (i == (unsigned)MaxIwadIndex) MoveLumpsInFolder("after_iwad/");
|
||||
FStringf path("filter/%s", Files.Last()->GetHash());
|
||||
MoveLumpsInFolder(path);
|
||||
std::string path = "filter/%s";
|
||||
path += Files.Last()->GetHash();
|
||||
MoveLumpsInFolder(path.c_str());
|
||||
}
|
||||
|
||||
NumEntries = (uint32_t)FileInfo.size();
|
||||
|
|
|
@ -65,7 +65,7 @@ public:
|
|||
void SetMaxIwadNum(int x) { MaxIwadIndex = x; }
|
||||
|
||||
bool InitSingleFile(const char *filename, FileSystemMessageFunc Printf = nullptr);
|
||||
bool InitMultipleFiles (TArray<FString> &filenames, LumpFilterInfo* filter = nullptr, FileSystemMessageFunc Printf = nullptr, bool allowduplicates = false, FILE* hashfile = nullptr);
|
||||
bool InitMultipleFiles (std::vector<std::string>& filenames, LumpFilterInfo* filter = nullptr, FileSystemMessageFunc Printf = nullptr, bool allowduplicates = false, FILE* hashfile = nullptr);
|
||||
void AddFile (const char *filename, FileReader *wadinfo, LumpFilterInfo* filter, FileSystemMessageFunc Printf, FILE* hashfile);
|
||||
int CheckIfResourceFileLoaded (const char *name) noexcept;
|
||||
void AddAdditionalFile(const char* filename, FileReader* wadinfo = NULL) {}
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include "menu.h"
|
||||
#include "stats.h"
|
||||
#include "printf.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
// MACROS ------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -335,7 +335,7 @@ void MainWindow::SetNetStartProgress(int pos)
|
|||
if (NetStartPane != 0 && NetStartMaxPos > 1)
|
||||
{
|
||||
char buf[16];
|
||||
mysnprintf(buf, countof(buf), "%d/%d", pos, NetStartMaxPos);
|
||||
mysnprintf(buf, sizeof(buf), "%d/%d", pos, NetStartMaxPos);
|
||||
SetDlgItemTextA(NetStartPane, IDC_NETSTARTCOUNT, buf);
|
||||
SendDlgItemMessage(NetStartPane, IDC_NETSTARTPROGRESS, PBM_SETPOS, min(pos, NetStartMaxPos), 0);
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "filesystem.h"
|
||||
#include "engineerrors.h"
|
||||
#include "version.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
bool VkShaderManager::CompileNextShader()
|
||||
{
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "image.h"
|
||||
#include "textures.h"
|
||||
#include "palettecontainer.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
// Strife startup screen
|
||||
#define PEASANT_INDEX 0
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include "texturemanager.h"
|
||||
#include "c_cvars.h"
|
||||
#include "hw_material.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
FTexture *CreateBrightmapTexture(FImageSource*);
|
||||
|
||||
|
|
|
@ -47,6 +47,8 @@
|
|||
#include "vectors.h"
|
||||
#include "animtexture.h"
|
||||
#include "formats/multipatchtexture.h"
|
||||
#include "basics.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
FTextureManager TexMan;
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool D_AddFile(TArray<FString>& wadfiles, const char* file, bool check, int position, FConfigFile* config)
|
||||
bool D_AddFile(std::vector<std::string>& wadfiles, const char* file, bool check, int position, FConfigFile* config)
|
||||
{
|
||||
if (file == nullptr || *file == '\0')
|
||||
{
|
||||
|
@ -111,10 +111,10 @@ bool D_AddFile(TArray<FString>& wadfiles, const char* file, bool check, int posi
|
|||
file = f;
|
||||
}
|
||||
|
||||
FString f = file;
|
||||
FixPathSeperator(f);
|
||||
if (position == -1) wadfiles.Push(f);
|
||||
else wadfiles.Insert(position, f);
|
||||
std::string f = file;
|
||||
for (auto& c : f) if (c == '\\') c = '/';
|
||||
if (position == -1) wadfiles.push_back(f);
|
||||
else wadfiles.insert(wadfiles.begin() + position, f);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -124,7 +124,7 @@ bool D_AddFile(TArray<FString>& wadfiles, const char* file, bool check, int posi
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
void D_AddWildFile(TArray<FString>& wadfiles, const char* value, const char *extension, FConfigFile* config)
|
||||
void D_AddWildFile(std::vector<std::string>& wadfiles, const char* value, const char *extension, FConfigFile* config)
|
||||
{
|
||||
if (value == nullptr || *value == '\0')
|
||||
{
|
||||
|
@ -161,7 +161,7 @@ void D_AddWildFile(TArray<FString>& wadfiles, const char* value, const char *ext
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
void D_AddConfigFiles(TArray<FString>& wadfiles, const char* section, const char* extension, FConfigFile *config)
|
||||
void D_AddConfigFiles(std::vector<std::string>& wadfiles, const char* section, const char* extension, FConfigFile *config)
|
||||
{
|
||||
if (config && config->SetSection(section))
|
||||
{
|
||||
|
@ -191,7 +191,7 @@ void D_AddConfigFiles(TArray<FString>& wadfiles, const char* section, const char
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
void D_AddDirectory(TArray<FString>& wadfiles, const char* dir, const char *filespec, FConfigFile* config)
|
||||
void D_AddDirectory(std::vector<std::string>& wadfiles, const char* dir, const char *filespec, FConfigFile* config)
|
||||
{
|
||||
FileList list;
|
||||
if (ScanDirectory(list, dir, "*.wad", true))
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
// Directory searching routines
|
||||
|
||||
#include <stdint.h>
|
||||
#include "zstring.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class FConfigFile;
|
||||
|
||||
bool D_AddFile(TArray<FString>& wadfiles, const char* file, bool check, int position, FConfigFile* config);
|
||||
void D_AddWildFile(TArray<FString>& wadfiles, const char* value, const char *extension, FConfigFile* config);
|
||||
void D_AddConfigFiles(TArray<FString>& wadfiles, const char* section, const char* extension, FConfigFile* config);
|
||||
void D_AddDirectory(TArray<FString>& wadfiles, const char* dir, const char *filespec, FConfigFile* config);
|
||||
bool D_AddFile(std::vector<std::string>& wadfiles, const char* file, bool check, int position, FConfigFile* config);
|
||||
void D_AddWildFile(std::vector<std::string>& wadfiles, const char* value, const char *extension, FConfigFile* config);
|
||||
void D_AddConfigFiles(std::vector<std::string>& wadfiles, const char* section, const char* extension, FConfigFile* config);
|
||||
void D_AddDirectory(std::vector<std::string>& wadfiles, const char* dir, const char *filespec, FConfigFile* config);
|
||||
const char* BaseFileSearch(const char* file, const char* ext, bool lookfirstinprogdir, FConfigFile* config);
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "filesystem.h"
|
||||
#include "printf.h"
|
||||
#include "m_swap.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
#include "m_png.h"
|
||||
|
||||
|
|
|
@ -305,9 +305,9 @@ void GetReserved(LumpFilterInfo& lfi);
|
|||
FIWadManager::FIWadManager(const char *firstfn, const char *optfn)
|
||||
{
|
||||
FileSystem check;
|
||||
TArray<FString> fns;
|
||||
fns.Push(firstfn);
|
||||
if (optfn) fns.Push(optfn);
|
||||
std::vector<std::string> fns;
|
||||
fns.push_back(firstfn);
|
||||
if (optfn) fns.push_back(optfn);
|
||||
|
||||
if (check.InitMultipleFiles(fns, nullptr, nullptr))
|
||||
{
|
||||
|
@ -388,8 +388,7 @@ int FIWadManager::CheckIWADInfo(const char* fn)
|
|||
LumpFilterInfo lfi;
|
||||
GetReserved(lfi);
|
||||
|
||||
TArray<FString> filenames;
|
||||
filenames.Push(fn);
|
||||
std::vector<std::string> filenames = { fn };
|
||||
if (check.InitMultipleFiles(filenames, &lfi, nullptr))
|
||||
{
|
||||
int num = check.CheckNumForName("IWADINFO");
|
||||
|
@ -552,7 +551,7 @@ void FIWadManager::ValidateIWADs()
|
|||
|
||||
static bool havepicked = false;
|
||||
|
||||
int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad, const char *zdoom_wad, const char *optional_wad)
|
||||
int FIWadManager::IdentifyVersion (std::vector<std::string>&wadfiles, const char *iwad, const char *zdoom_wad, const char *optional_wad)
|
||||
{
|
||||
const char *iwadparm = Args->CheckValue ("-iwad");
|
||||
FString custwad;
|
||||
|
@ -777,7 +776,7 @@ int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad,
|
|||
}
|
||||
|
||||
// zdoom.pk3 must always be the first file loaded and the IWAD second.
|
||||
wadfiles.Clear();
|
||||
wadfiles.clear();
|
||||
D_AddFile (wadfiles, zdoom_wad, true, -1, GameConfig);
|
||||
|
||||
// [SP] Load non-free assets if available. This must be done before the IWAD.
|
||||
|
@ -833,7 +832,7 @@ int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad,
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
const FIWADInfo *FIWadManager::FindIWAD(TArray<FString> &wadfiles, const char *iwad, const char *basewad, const char *optionalwad)
|
||||
const FIWADInfo *FIWadManager::FindIWAD(std::vector<std::string>& wadfiles, const char *iwad, const char *basewad, const char *optionalwad)
|
||||
{
|
||||
int iwadType = IdentifyVersion(wadfiles, iwad, basewad, optionalwad);
|
||||
if (iwadType == -1) return nullptr;
|
||||
|
|
|
@ -1775,7 +1775,7 @@ FExecList *D_MultiExec (FArgs *list, FExecList *exec)
|
|||
return exec;
|
||||
}
|
||||
|
||||
static void GetCmdLineFiles(TArray<FString> &wadfiles)
|
||||
static void GetCmdLineFiles(std::vector<std::string>& wadfiles)
|
||||
{
|
||||
FString *args;
|
||||
int i, argc;
|
||||
|
@ -1788,7 +1788,7 @@ static void GetCmdLineFiles(TArray<FString> &wadfiles)
|
|||
}
|
||||
|
||||
|
||||
static FString ParseGameInfo(TArray<FString> &pwads, const char *fn, const char *data, int size)
|
||||
static FString ParseGameInfo(std::vector<std::string> &pwads, const char *fn, const char *data, int size)
|
||||
{
|
||||
FScanner sc;
|
||||
FString iwad;
|
||||
|
@ -1920,7 +1920,7 @@ void GetReserved(LumpFilterInfo& lfi)
|
|||
lfi.requiredPrefixes = { "mapinfo", "zmapinfo", "umapinfo", "gameinfo", "sndinfo", "sndseq", "sbarinfo", "menudef", "gldefs", "animdefs", "decorate", "zscript", "iwadinfo", "maps/" };
|
||||
}
|
||||
|
||||
static FString CheckGameInfo(TArray<FString> & pwads)
|
||||
static FString CheckGameInfo(std::vector<std::string> & pwads)
|
||||
{
|
||||
FileSystem check;
|
||||
|
||||
|
@ -1987,7 +1987,7 @@ static void D_DoomInit()
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
static void AddAutoloadFiles(const char *autoname, TArray<FString>& allwads)
|
||||
static void AddAutoloadFiles(const char *autoname, std::vector<std::string>& allwads)
|
||||
{
|
||||
LumpFilterIWAD.Format("%s.", autoname); // The '.' is appened to simplify parsing the string
|
||||
|
||||
|
@ -3089,7 +3089,7 @@ static int FileSystemPrintf(FSMessageLevel level, const char* fmt, ...)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
static int D_InitGame(const FIWADInfo* iwad_info, TArray<FString>& allwads, TArray<FString>& pwads)
|
||||
static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allwads, std::vector<std::string>& pwads)
|
||||
{
|
||||
SavegameFolder = iwad_info->Autoname;
|
||||
gameinfo.gametype = iwad_info->gametype;
|
||||
|
@ -3167,7 +3167,11 @@ static int D_InitGame(const FIWADInfo* iwad_info, TArray<FString>& allwads, TArr
|
|||
FixMacHexen(fileSystem);
|
||||
FindStrifeTeaserVoices(fileSystem);
|
||||
};
|
||||
allwads.Append(std::move(pwads));
|
||||
allwads.insert(
|
||||
allwads.end(),
|
||||
std::make_move_iterator(pwads.begin()),
|
||||
std::make_move_iterator(pwads.end())
|
||||
);
|
||||
|
||||
bool allowduplicates = Args->CheckParm("-allowduplicates");
|
||||
auto hashfile = D_GetHashFile();
|
||||
|
@ -3175,8 +3179,8 @@ static int D_InitGame(const FIWADInfo* iwad_info, TArray<FString>& allwads, TArr
|
|||
{
|
||||
I_FatalError("FileSystem: no files found");
|
||||
}
|
||||
allwads.Clear();
|
||||
allwads.ShrinkToFit();
|
||||
allwads.clear();
|
||||
allwads.shrink_to_fit();
|
||||
SetMapxxFlag();
|
||||
|
||||
D_GrabCVarDefaults(); //parse DEFCVARS
|
||||
|
@ -3708,7 +3712,7 @@ static int D_DoomMain_Internal (void)
|
|||
// Load zdoom.pk3 alone so that we can get access to the internal gameinfos before
|
||||
// the IWAD is known.
|
||||
|
||||
TArray<FString> pwads;
|
||||
std::vector<std::string> pwads;
|
||||
GetCmdLineFiles(pwads);
|
||||
FString iwad = CheckGameInfo(pwads);
|
||||
|
||||
|
@ -3716,18 +3720,21 @@ static int D_DoomMain_Internal (void)
|
|||
// restart is initiated without a defined IWAD assume for now that it's not going to change.
|
||||
if (iwad.IsEmpty()) iwad = lastIWAD;
|
||||
|
||||
TArray<FString> allwads;
|
||||
std::vector<std::string> allwads;
|
||||
|
||||
const FIWADInfo *iwad_info = iwad_man->FindIWAD(allwads, iwad, basewad, optionalwad);
|
||||
if (!iwad_info) return 0; // user exited the selection popup via cancel button.
|
||||
if ((iwad_info->flags & GI_SHAREWARE) && pwads.Size() > 0)
|
||||
if ((iwad_info->flags & GI_SHAREWARE) && pwads.size() > 0)
|
||||
{
|
||||
I_FatalError ("You cannot -file with the shareware version. Register!");
|
||||
}
|
||||
lastIWAD = iwad;
|
||||
|
||||
int ret = D_InitGame(iwad_info, allwads, pwads);
|
||||
allwads.Reset();
|
||||
pwads.clear();
|
||||
pwads.shrink_to_fit();
|
||||
allwads.clear();
|
||||
allwads.shrink_to_fit();
|
||||
delete iwad_man; // now we won't need this anymore
|
||||
iwad_man = NULL;
|
||||
if (ret != 0) return ret;
|
||||
|
|
|
@ -128,13 +128,13 @@ class FIWadManager
|
|||
void ParseIWadInfo(const char *fn, const char *data, int datasize, FIWADInfo *result = nullptr);
|
||||
int ScanIWAD (const char *iwad);
|
||||
int CheckIWADInfo(const char *iwad);
|
||||
int IdentifyVersion (TArray<FString> &wadfiles, const char *iwad, const char *zdoom_wad, const char *optional_wad);
|
||||
int IdentifyVersion (std::vector<std::string>& wadfiles, const char *iwad, const char *zdoom_wad, const char *optional_wad);
|
||||
void CollectSearchPaths();
|
||||
void AddIWADCandidates(const char *dir);
|
||||
void ValidateIWADs();
|
||||
public:
|
||||
FIWadManager(const char *fn, const char *fnopt);
|
||||
const FIWADInfo *FindIWAD(TArray<FString> &wadfiles, const char *iwad, const char *basewad, const char *optionalwad);
|
||||
const FIWADInfo *FindIWAD(std::vector<std::string>& wadfiles, const char *iwad, const char *basewad, const char *optionalwad);
|
||||
const FString *GetAutoname(unsigned int num) const
|
||||
{
|
||||
if (num < mIWadInfos.Size()) return &mIWadInfos[num].Autoname;
|
||||
|
|
Loading…
Reference in a new issue