Ejemplo n.º 1
0
    public static IEnumerator Create <P, D>(DataLayer dataLayer, string file, CreatePatch <P, D> create, GetPatchLoader <P, D> getLoader, Action <Patch, string> callback)
        where P : Patch
        where D : PatchData
    {
        // Assume we're getting a bin file
        PatchDataFormat format = PatchDataFormat.BIN;

#if !UNITY_WEBGL
        string binFile = file;

        // Check which format it is (Web only reads binary files)
        if (file.EndsWith(CSV_EXTENSION))
        {
            binFile = Path.ChangeExtension(file, BIN_EXTENSION);
            format  = PatchDataFormat.CSV;
        }
#endif

        // Load the patch file (this only reads the (.bin) header, or the whole .csv)
        D   data = null;
        var load = getLoader(format);
        yield return(load(file, (g) => data = g));

        if (data == null)
        {
#if !UNITY_WEBGL
            // Take a break (wait for next frame) since loading CSVs is quite slow
            if (format != PatchDataFormat.BIN)
            {
                yield return(IEnumeratorExtensions.AvoidRunThru);
            }
#endif
            yield break;
        }

        SplitFileName(file, out int level, out string site, out int _, out int year, out int month, out int day, out string type);

        // Create the patch based on the file name
        P newPatch = create(dataLayer, level, year, data, file);

#if !UNITY_WEBGL
        // Create binary file if data was loaded from different format
        if (format != PatchDataFormat.BIN)
        {
            newPatch.Save(binFile);
            newPatch.UnloadData();
        }
#endif

        callback(newPatch, site);

#if !UNITY_WEBGL
        // Take a break (wait for next frame) since loading CSVs is quite slow
        if (format != PatchDataFormat.BIN)
        {
            yield return(IEnumeratorExtensions.AvoidRunThru);
        }
#endif
    }
Ejemplo n.º 2
0
    public override void Save(string filename, PatchDataFormat format)
    {
        switch (format)
        {
        case PatchDataFormat.BIN:
            pointData.SaveBin(filename);
            SetFilename(filename);
            break;

        default:
            Debug.LogError("Not implemented");
            break;
        }
    }
Ejemplo n.º 3
0
 public static LoadPatchData <GridPatch, GridData> GetPatchHeaderLoader(PatchDataFormat format)
 {
     return(headerLoader[(int)format]);
 }
Ejemplo n.º 4
0
 public abstract void Save(string filename, PatchDataFormat format = PatchDataFormat.BIN);