Ignore:
Timestamp:
Jun 16, 2023, 3:31:26 PM (17 months ago)
Author:
alloc
Message:

24_29_42

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/PersistentData/PersistentContainer.cs

    r369 r448  
    77        [Serializable]
    88        public class PersistentContainer {
     9                private const string persistentDataFileName = "/AllocsPersistentData.bin";
     10               
    911                private Players players;
    1012                [OptionalField] private Attributes attributes;
     
    4446                private PersistentContainer () {
    4547                }
    46 
     48               
    4749                public void Save () {
    48                         Stream stream = File.Open (GameIO.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Create);
    49                         BinaryFormatter bFormatter = new BinaryFormatter ();
    50                         bFormatter.Serialize (stream, this);
    51                         stream.Close ();
     50                        lock (fileLockObject) {
     51                                using Stream stream = File.Open (GameIO.GetSaveGameDir () + persistentDataFileName, FileMode.Create);
     52                                BinaryFormatter bFormatter = new BinaryFormatter ();
     53                                bFormatter.Serialize (stream, this);
     54                        }
    5255                }
    5356
    5457                public static bool Load () {
    55                         if (!File.Exists (GameIO.GetSaveGameDir () + "/AllocsPeristentData.bin")) {
     58                        if (!File.Exists (GameIO.GetSaveGameDir () + persistentDataFileName)) {
    5659                                return false;
    5760                        }
     
    5962                        try {
    6063                                PersistentContainer obj;
    61                                 Stream stream = File.Open (GameIO.GetSaveGameDir () + "/AllocsPeristentData.bin", FileMode.Open);
    62                                 BinaryFormatter bFormatter = new BinaryFormatter ();
    63                                 obj = (PersistentContainer) bFormatter.Deserialize (stream);
    64                                 stream.Close ();
     64                                lock (fileLockObject) {
     65                                        using Stream stream = File.Open (GameIO.GetSaveGameDir () + persistentDataFileName, FileMode.Open);
     66                                        BinaryFormatter bFormatter = new BinaryFormatter ();
     67                                        obj = (PersistentContainer)bFormatter.Deserialize (stream);
     68                                }
     69
    6570                                instance = obj;
    6671                                return true;
     
    7277                        return false;
    7378                }
     79
     80                private static readonly object fileLockObject = new();
    7481        }
    7582}
Note: See TracChangeset for help on using the changeset viewer.