OSDN Git Service

741af6d9adf01060a2b53165dd6b85da7db18e4c
[radegast/radegast.git] / Radegast / Netcom / StartLocationParser.cs
1 // 
2 // Radegast Metaverse Client
3 // Copyright (c) 2009-2014, Radegast Development Team
4 // All rights reserved.
5 // 
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 // 
9 //     * Redistributions of source code must retain the above copyright notice,
10 //       this list of conditions and the following disclaimer.
11 //     * Redistributions in binary form must reproduce the above copyright
12 //       notice, this list of conditions and the following disclaimer in the
13 //       documentation and/or other materials provided with the distribution.
14 //     * Neither the name of the application "Radegast", nor the names of its
15 //       contributors may be used to endorse or promote products derived from
16 //       this software without specific prior written permission.
17 // 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 //
29 // $Id$
30 //
31 using System;
32
33 namespace Radegast.Netcom
34 {
35     public class StartLocationParser
36     {
37         private string location;
38
39         public StartLocationParser(string location)
40         {
41             if (location == null) throw new Exception("Location cannot be null.");
42
43             this.location = location;
44         }
45
46         private string GetSim(string location)
47         {
48             if (!location.Contains("/")) return location;
49
50             string[] locSplit = location.Split('/');
51             return locSplit[0];
52         }
53
54         private int GetX(string location)
55         {
56             if (!location.Contains("/")) return 128;
57
58             string[] locSplit = location.Split('/');
59
60             int returnResult;
61             bool stringToInt = int.TryParse(locSplit[1], out returnResult);
62
63             if (stringToInt)
64                 return returnResult;
65             else
66                 return 128;
67         }
68
69         private int GetY(string location)
70         {
71             if (!location.Contains("/")) return 128;
72
73             string[] locSplit = location.Split('/');
74
75             if (locSplit.Length > 2)
76             {
77                 int returnResult;
78                 bool stringToInt = int.TryParse(locSplit[2], out returnResult);
79
80                 if (stringToInt)
81                     return returnResult;
82             }
83
84             return 128;
85         }
86
87         private int GetZ(string location)
88         {
89             if (!location.Contains("/")) return 0;
90
91             string[] locSplit = location.Split('/');
92
93             if (locSplit.Length > 3)
94             {
95                 int returnResult;
96                 bool stringToInt = int.TryParse(locSplit[3], out returnResult);
97
98                 if (stringToInt)
99                     return returnResult;
100             }
101
102             return 0;
103         }
104
105         public string Sim
106         {
107             get { return GetSim(location); }
108         }
109
110         public int X
111         {
112             get { return GetX(location); }
113         }
114
115         public int Y
116         {
117             get { return GetY(location); }
118         }
119
120         public int Z
121         {
122             get { return GetZ(location); }
123         }
124     }
125 }