103 lines
3.1 KiB
C#
103 lines
3.1 KiB
C#
using System.IO;
|
|
using System.Xml.Serialization;
|
|
using UnityEngine;
|
|
|
|
#if UNITY_EDITOR
|
|
using UnityEditor.Compilation;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
#endif
|
|
|
|
namespace FishNet.Configuring
|
|
{
|
|
|
|
|
|
public class Configuration
|
|
{
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
private static ConfigurationData _configurations;
|
|
/// <summary>
|
|
/// ConfigurationData to use.
|
|
/// </summary>
|
|
public static ConfigurationData Configurations
|
|
{
|
|
get
|
|
{
|
|
if (_configurations == null)
|
|
_configurations = LoadConfigurationData();
|
|
if (_configurations == null)
|
|
throw new System.Exception("Fish-Networking Configurations could not be loaded. Certain features such as code-stripping may not function.");
|
|
return _configurations;
|
|
}
|
|
private set
|
|
{
|
|
_configurations = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// File name for configuration disk data.
|
|
/// </summary>
|
|
public const string CONFIG_FILE_NAME = "FishNet.Config.XML";
|
|
|
|
/// <summary>
|
|
/// Returns the path for the configuration file.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
internal static string GetAssetsPath(string additional = "")
|
|
{
|
|
string a = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Assets");
|
|
if (additional != "")
|
|
a = Path.Combine(a, additional);
|
|
return a;
|
|
}
|
|
/// <summary>
|
|
/// Returns FishNetworking ConfigurationData.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
internal static ConfigurationData LoadConfigurationData()
|
|
{
|
|
//return new ConfigurationData();
|
|
if (_configurations == null || !_configurations.Loaded)
|
|
{
|
|
string configPath = GetAssetsPath(CONFIG_FILE_NAME);
|
|
//string configPath = string.Empty;
|
|
//File is on disk.
|
|
if (File.Exists(configPath))
|
|
{
|
|
FileStream fs = null;
|
|
try
|
|
{
|
|
XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationData));
|
|
fs = new FileStream(configPath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
_configurations = (ConfigurationData)serializer.Deserialize(fs);
|
|
}
|
|
finally
|
|
{
|
|
fs?.Close();
|
|
}
|
|
_configurations.Loaded = true;
|
|
}
|
|
else
|
|
{
|
|
//If null then make a new instance.
|
|
if (_configurations == null)
|
|
_configurations = new ConfigurationData();
|
|
//Don't unset loaded, if its true then it should have proper info.
|
|
//_configurationData.Loaded = false;
|
|
}
|
|
}
|
|
|
|
return _configurations;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|