Ejemplo n.º 1
0
		private bool LoadData( ReaderBase reader, IEnumerable<Mod> mods, string subDir, string errorString, string ext, bool falseOnNoDirectory )
		{
			Dictionary<string, string> files = new Dictionary<string, string>();
			DirectoryInfo dir;

			// Oldest First. Discover if vanilla should be loaded.
			bool loadVanilla = mods.All( m => !m.Replaces.Contains( subDir ) );

			if( loadVanilla )
			{
				dir = new DirectoryInfo( Path.Combine( InstallDir.FullName, subDir ).Replace( '\\', '/' ) );

				// Hack so it works when the eu4 converter isn't present.
				if( !dir.Exists && falseOnNoDirectory )
					return false;
				if( !dir.Exists )
					return true;

				m_log.Log( "Loading files from " + dir.FullName, Logger.LogType.Data );
				FileInfo[] list = dir.GetFiles( ext );

				foreach( FileInfo f in list )
					files[f.Name] = f.FullName;
			}

			// If using mods, load files.
			string dirTemp;
			foreach( Mod m in mods )
			{
				dirTemp = m.ModPathType == ModReader.Folder.CKDir ? InstallDir.FullName : MyDocsDir.FullName;
				dirTemp = Path.Combine( dirTemp, m.Path );
				dirTemp = Path.Combine( dirTemp, subDir ).Replace( '\\', '/' );

				if( !Directory.Exists( dirTemp ) )
					continue;

				dir = new DirectoryInfo( dirTemp );
				m_log.Log( "Loading files from " + dir.FullName, Logger.LogType.Data );
				FileInfo[] list = dir.GetFiles( ext );

				foreach( FileInfo f in list )
					files[f.Name] = f.FullName;
			}

			foreach( var file in files )
			{
				m_log.Log( "Reading File: " + file.Value, Logger.LogType.Data );
				reader.Parse( file.Value );
			}

			if( reader.Errors.Count > 0 )
			{
				OutputError( reader, errorString );

				return false;
			}

			return true;
		}
Ejemplo n.º 2
0
        private bool LoadData(ReaderBase reader, IEnumerable <Mod> mods, string subDir, string errorString, string ext, bool falseOnNoDirectory)
        {
            Dictionary <string, string> files = new Dictionary <string, string>();
            DirectoryInfo dir;

            // Oldest First. Discover if vanilla should be loaded.
            bool loadVanilla = mods.All(m => !m.Replaces.Contains(subDir));

            if (loadVanilla)
            {
                dir = new DirectoryInfo(Path.Combine(InstallDir.FullName, subDir).Replace('\\', '/'));

                // Hack so it works when the eu4 converter isn't present.
                if (!dir.Exists && falseOnNoDirectory)
                {
                    return(false);
                }
                if (!dir.Exists)
                {
                    return(true);
                }

                m_log.Log("Loading files from " + dir.FullName, Logger.LogType.Data);
                FileInfo[] list = dir.GetFiles(ext);

                foreach (FileInfo f in list)
                {
                    files[f.Name] = f.FullName;
                }
            }

            // If using mods, load files.
            string dirTemp;

            foreach (Mod m in mods)
            {
                dirTemp = m.ModPathType == ModReader.Folder.CKDir ? InstallDir.FullName : MyDocsDir.FullName;
                dirTemp = Path.Combine(dirTemp, m.Path);
                dirTemp = Path.Combine(dirTemp, subDir).Replace('\\', '/');

                if (!Directory.Exists(dirTemp))
                {
                    continue;
                }

                dir = new DirectoryInfo(dirTemp);
                m_log.Log("Loading files from " + dir.FullName, Logger.LogType.Data);
                FileInfo[] list = dir.GetFiles(ext);

                foreach (FileInfo f in list)
                {
                    files[f.Name] = f.FullName;
                }
            }

            foreach (var file in files)
            {
                m_log.Log("Reading File: " + file.Value, Logger.LogType.Data);
                reader.Parse(file.Value);
            }

            if (reader.Errors.Count > 0)
            {
                OutputError(reader, errorString);

                return(false);
            }

            return(true);
        }