Projekt

Obecné

Profil

Stáhnout (3.29 KB) Statistiky
| Větev: | Tag: | Revize:
1 c6ecc85a Jakub Hejman
using System.Xml.Serialization;
2
using System;
3
using System.IO;
4
5
namespace DeltaRobotVr
6
{
7
    /// <summary>
8
    /// Singleton class responsible for providing configuration.
9
    /// </summary>
10
    [Serializable]
11
    public class ConfigurationProvider
12
    {
13 60d46688 Jakub Hejman
        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 c6ecc85a Jakub Hejman
        public static readonly ConfigurationProvider Instance = new ConfigurationProvider();
18
19
        public float VisualizationTranslateX = 0.0f;
20
        public float VisualizationTranslateY = 0.0f;
21
        public float VisualizationTranslateZ = 0.0f;
22
23
        public float VisualizationScaleX = 1.0f;
24
        public float VisualizationScaleY = 1.0f;
25
        public float VisualizationScaleZ = 1.0f;
26
27
        public int Port = 4242;
28
29
        public string Host = "127.0.0.1";
30
31
        public string SceneName = "BasicRoomScene";
32
33 60d46688 Jakub Hejman
        public string CurveColorHex = "#ffff00";
34
35 c6ecc85a Jakub Hejman
36
        static ConfigurationProvider()
37
        {
38 60d46688 Jakub Hejman
            if (Environment.OSVersion.Platform == PlatformID.Unix ||
39
                   Environment.OSVersion.Platform == PlatformID.MacOSX)
40
            {
41
                homePath = Environment.GetEnvironmentVariable("HOME");
42
            }
43
            else
44
            {
45
                homePath = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
46
            }
47
48
            configFile = homePath + DefaultConfigDirectory + DefaultConfigFile;
49
50
            if (!File.Exists(configFile))
51
            {
52
                if (!Directory.Exists(homePath + DefaultConfigDirectory))
53
                {
54
                    Directory.CreateDirectory(homePath + DefaultConfigDirectory);
55
                }
56
                saveConfiguration(new ConfigurationProvider(), configFile);
57
            }
58
            
59
            // Deserialize configuration
60
            Instance = loadConfiguration(configFile);
61 c6ecc85a Jakub Hejman
        }
62
63
        private ConfigurationProvider()
64
        {
65
        }
66
67
        /// <summary>
68
        /// Load ConfigurationProvider instance from file.
69
        /// </summary>
70
        /// <param name="fileName">File to load configuration from</param>
71
        /// <returns></returns>
72
        private static ConfigurationProvider loadConfiguration(String fileName)
73
        {
74
            XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationProvider));
75
76
            ConfigurationProvider cp;
77
78
            using (Stream reader = new FileStream(fileName, FileMode.Open))
79
            {
80
                cp = (ConfigurationProvider)serializer.Deserialize(reader);
81
            }
82
83
            return cp;
84
        }
85
86
        /// <summary>
87
        /// Save ConfigurationProvider instance to file.
88
        /// </summary>
89
        /// <param name="cp">ConfigurationProvider instance to save</param>
90
        /// <param name="fileName">File to save configuration to</param>
91
        private static void saveConfiguration(ConfigurationProvider cp, String fileName)
92
        {
93
            XmlSerializer serializer = new XmlSerializer(typeof(ConfigurationProvider));
94
95
            using (Stream writer = new FileStream(fileName, FileMode.Create))
96
            {
97
                serializer.Serialize(writer, cp);
98
            }
99
        }
100
101
    }
102
}