using System.Collections; using System.Collections.Generic; using UnityEngine; public class SaveCompatibility { static public bool Replace_RoomID_with_RefID { get; private set; } // for ciemetric version 2.5.20 and prior on cieblink static public bool RefID_CheckedOnce { get; private set; } static private string _replace_RoomID_with_RefID_version = "2.5.20"; static public void SetVersionCompatibility_RefID(bool value) { RefID_CheckedOnce = true; Replace_RoomID_with_RefID = value; } static public bool SetVersionCompatibility_RefID(string savedVersion) { bool isCompatible = true; List savedVersionNumbers = GetVersionNumbers(savedVersion); List versionNumbers_RefID = GetVersionNumbers(_replace_RoomID_with_RefID_version); for (int i = 0; i < savedVersionNumbers.Count; i++) { if (i >= versionNumbers_RefID.Count) { if (i > 0 && savedVersionNumbers[i - 1] == versionNumbers_RefID[i - 1]) { isCompatible = false; } break; } if (savedVersionNumbers[i] > versionNumbers_RefID[i]) { break; } if (savedVersionNumbers[i] < versionNumbers_RefID[i]) { isCompatible = false; break; } if (i == savedVersionNumbers.Count - 1 && savedVersionNumbers[i] == versionNumbers_RefID[i]) { isCompatible = false; } } SetVersionCompatibility_RefID(!isCompatible); return isCompatible; } static private List GetVersionNumbers(string version) { List outList = new(); string[] stringVersionNumbers = version.Split('.'); foreach (string versionNumber in stringVersionNumbers) { if (int.TryParse(versionNumber, out int number)) { outList.Add(number); } } return outList; } }