Projekt

Obecné

Profil

Stáhnout (3.48 KB) Statistiky
| Větev: | Tag: | Revize:
1
using System.Xml.Serialization;
2
using System;
3
using System.IO;
4

    
5
namespace DeltaRobotVr.Launcher
6
{
7
    /// <summary>
8
    /// Singleton class responsible for providing configuration.
9
    /// </summary>
10
    [Serializable]
11
    public class ConfigurationProvider
12
    {
13
        private static readonly string DefaultConfigFile = "config.xml";
14
        private static readonly string DefaultConfigDirectory = "/.deltarobot-vr/";
15
        private static string _homePath;
16
        private static string _configFile;
17
        public static readonly ConfigurationProvider Instance;
18

    
19
        public float VisualizationTranslateX = 0.0f;
20
        public float VisualizationTranslateY = 0.2f;
21
        public float VisualizationTranslateZ = -10.5f;
22

    
23

    
24
        public float VisualizationScaleOverall = 0.2f;
25
        public float VisualizationScaleX = 1.0f;
26
        public float VisualizationScaleY = 1.0f;
27
        public float VisualizationScaleZ = 1.0f;
28

    
29
        public int Port = 4242;
30

    
31
        public string Host = "192.168.254.16";
32

    
33
        public string SceneName = "Village";
34

    
35
        public string CurveColorHex = "#FFFF00CC";
36

    
37

    
38
        static ConfigurationProvider()
39
        {
40
            if (Environment.OSVersion.Platform == PlatformID.Unix ||
41
                   Environment.OSVersion.Platform == PlatformID.MacOSX)
42
            {
43
                _homePath = Environment.GetEnvironmentVariable("HOME");
44
            }
45
            else
46
            {
47
                _homePath = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
48
            }
49

    
50
            _configFile = _homePath + DefaultConfigDirectory + DefaultConfigFile;
51

    
52
            if (!File.Exists(_configFile))
53
            {
54
                if (!Directory.Exists(_homePath + DefaultConfigDirectory))
55
                {
56
                    Directory.CreateDirectory(_homePath + DefaultConfigDirectory);
57
                }
58
                SaveConfiguration(new ConfigurationProvider(), _configFile);
59
            }
60
            
61
            // Deserialize configuration
62
            Instance = LoadConfiguration(_configFile);
63
        }
64

    
65
        private ConfigurationProvider()
66
        {
67
        }
68

    
69
        /// <summary>
70
        /// Load ConfigurationProvider instance from file.
71
        /// </summary>
72
        /// <param name="fileName">File to load configuration from</param>
73
        /// <returns></returns>
74
        private static ConfigurationProvider LoadConfiguration(String fileName)
75
        {
76
            XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationProvider));
77

    
78
            using (Stream reader = new FileStream(fileName, FileMode.Open))
79
            {
80
                return (ConfigurationProvider)serializer.Deserialize(reader);
81
            }
82
        }
83

    
84
        /// <summary>
85
        /// Save ConfigurationProvider instance to file.
86
        /// </summary>
87
        /// <param name="cp">ConfigurationProvider instance to save</param>
88
        /// <param name="fileName">File to save configuration to</param>
89
        private static void SaveConfiguration(ConfigurationProvider cp, String fileName)
90
        {
91
            XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationProvider));
92

    
93
            using (Stream writer = new FileStream(fileName, FileMode.Create))
94
            {
95
                serializer.Serialize(writer, cp);
96
            }
97
        }
98

    
99
        /// <summary>
100
        /// Saves this ConfigurationProvider instance to the global file.
101
        /// </summary>
102
        public void Save()
103
        {
104
            SaveConfiguration(this, _configFile);
105
        }
106
    }
107
}
(1-1/5)