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

24_29_42

Location:
binary-improvements/7dtd-server-fixes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/ModInfo.xml

    r447 r448  
    55                <Description value="Common functions" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="28" />
     7                <Version value="29" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/7dtd-server-fixes/src/LandClaimList.cs

    r446 r448  
    4545                                        PlatformUserIdentifierAbs platformId = kvp.Key.PlatformUserIdentifier;
    4646                                        PlatformUserIdentifierAbs internalId = kvp.Key.UserIdentifier;
    47                                         PlatformUserIdentifierAbs crossPlatformId = platformId.Equals (internalId) ? null : internalId;
     47                                        PlatformUserIdentifierAbs crossPlatformId = platformId == null || platformId.Equals (internalId) ? null : internalId;
    4848                                        p = new Player (internalId, platformId, crossPlatformId);
    4949                                }
  • 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.