Projekt

Obecné

Profil

Stáhnout (3.29 KB) Statistiky
| Větev: | Tag: | Revize:
1
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
        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 = 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
        public string CurveColorHex = "#ffff00";
34

    
35

    
36
        static ConfigurationProvider()
37
        {
38
            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
        }
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
}
(4-4/13)