Projekt

Obecné

Profil

Stáhnout (3.35 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.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
            ConfigurationProvider cp;
79

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

    
85
            return cp;
86
        }
87

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

    
97
            using (Stream writer = new FileStream(fileName, FileMode.Create))
98
            {
99
                serializer.Serialize(writer, cp);
100
            }
101
        }
102

    
103
    }
104
}
(4-4/15)