public ArchiveLister(string springPath)
{
Mods = new Dictionary<string, string>();
Maps = new Dictionary<string, string>();
var contentFolders = new[] {"mods", "maps", "base"};
var L = SpringLua.GetLuaState(springPath);
foreach (var folderPath in contentFolders) {
foreach (var archivePath in Directory.GetFiles(Path.Combine(springPath, folderPath), "*")) {
if (!IsSpringArchive(archivePath)) continue;
foreach (var fileName in Archive.RawListFiles(archivePath)) {
if (IsModInfo(fileName)) {
var modName = SpringLua.ProtectedGetModName(L, archivePath);
if (modName != null) {
Mods.Remove(modName);
Mods[modName] = archivePath;
}
} else if (IsMap(fileName)) {
var mapName = Path.GetFileName(fileName);
Maps.Remove(mapName);
Maps[mapName] = archivePath;
}
}
}
}
Lua.lua_close(L);
}