corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 using System;
2 using System.IO;
3 using System.Xml;
4  
5 namespace OpenMetaverse.Assets
6 {
7 public class RegionSettings
8 {
9 public bool AllowDamage;
10 public bool AllowLandResell;
11 public bool AllowLandJoinDivide;
12 public bool BlockFly;
13 public bool BlockLandShowInSearch;
14 public bool BlockTerraform;
15 public bool DisableCollisions;
16 public bool DisablePhysics;
17 public bool DisableScripts;
18 public int MaturityRating;
19 public bool RestrictPushing;
20 public int AgentLimit;
21 public float ObjectBonus;
22  
23 public UUID TerrainDetail0;
24 public UUID TerrainDetail1;
25 public UUID TerrainDetail2;
26 public UUID TerrainDetail3;
27 public float TerrainHeightRange00;
28 public float TerrainHeightRange01;
29 public float TerrainHeightRange10;
30 public float TerrainHeightRange11;
31 public float TerrainStartHeight00;
32 public float TerrainStartHeight01;
33 public float TerrainStartHeight10;
34 public float TerrainStartHeight11;
35  
36 public float WaterHeight;
37 public float TerrainRaiseLimit;
38 public float TerrainLowerLimit;
39 public bool UseEstateSun;
40 public bool FixedSun;
41  
42 public static RegionSettings FromStream(Stream stream)
43 {
44 RegionSettings settings = new RegionSettings();
45 System.Globalization.NumberFormatInfo nfi = Utils.EnUsCulture.NumberFormat;
46  
47 using (XmlTextReader xtr = new XmlTextReader(stream))
48 {
49 xtr.ReadStartElement("RegionSettings");
50 xtr.ReadStartElement("General");
51  
52 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
53 {
54 switch (xtr.Name)
55 {
56 case "AllowDamage":
57 settings.AllowDamage = Boolean.Parse(xtr.ReadElementContentAsString());
58 break;
59 case "AllowLandResell":
60 settings.AllowLandResell = Boolean.Parse(xtr.ReadElementContentAsString());
61 break;
62 case "AllowLandJoinDivide":
63 settings.AllowLandJoinDivide = Boolean.Parse(xtr.ReadElementContentAsString());
64 break;
65 case "BlockFly":
66 settings.BlockFly = Boolean.Parse(xtr.ReadElementContentAsString());
67 break;
68 case "BlockLandShowInSearch":
69 settings.BlockLandShowInSearch = Boolean.Parse(xtr.ReadElementContentAsString());
70 break;
71 case "BlockTerraform":
72 settings.BlockTerraform = Boolean.Parse(xtr.ReadElementContentAsString());
73 break;
74 case "DisableCollisions":
75 settings.DisableCollisions = Boolean.Parse(xtr.ReadElementContentAsString());
76 break;
77 case "DisablePhysics":
78 settings.DisablePhysics = Boolean.Parse(xtr.ReadElementContentAsString());
79 break;
80 case "DisableScripts":
81 settings.DisableScripts = Boolean.Parse(xtr.ReadElementContentAsString());
82 break;
83 case "MaturityRating":
84 settings.MaturityRating = Int32.Parse(xtr.ReadElementContentAsString());
85 break;
86 case "RestrictPushing":
87 settings.RestrictPushing = Boolean.Parse(xtr.ReadElementContentAsString());
88 break;
89 case "AgentLimit":
90 settings.AgentLimit = Int32.Parse(xtr.ReadElementContentAsString());
91 break;
92 case "ObjectBonus":
93 settings.ObjectBonus = Single.Parse(xtr.ReadElementContentAsString(), nfi);
94 break;
95 }
96 }
97  
98 xtr.ReadEndElement();
99 xtr.ReadStartElement("GroundTextures");
100  
101 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
102 {
103 switch (xtr.Name)
104 {
105 case "Texture1":
106 settings.TerrainDetail0 = UUID.Parse(xtr.ReadElementContentAsString());
107 break;
108 case "Texture2":
109 settings.TerrainDetail1 = UUID.Parse(xtr.ReadElementContentAsString());
110 break;
111 case "Texture3":
112 settings.TerrainDetail2 = UUID.Parse(xtr.ReadElementContentAsString());
113 break;
114 case "Texture4":
115 settings.TerrainDetail3 = UUID.Parse(xtr.ReadElementContentAsString());
116 break;
117 case "ElevationLowSW":
118 settings.TerrainStartHeight00 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
119 break;
120 case "ElevationLowNW":
121 settings.TerrainStartHeight01 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
122 break;
123 case "ElevationLowSE":
124 settings.TerrainStartHeight10 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
125 break;
126 case "ElevationLowNE":
127 settings.TerrainStartHeight11 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
128 break;
129 case "ElevationHighSW":
130 settings.TerrainHeightRange00 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
131 break;
132 case "ElevationHighNW":
133 settings.TerrainHeightRange01 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
134 break;
135 case "ElevationHighSE":
136 settings.TerrainHeightRange10 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
137 break;
138 case "ElevationHighNE":
139 settings.TerrainHeightRange11 = Single.Parse(xtr.ReadElementContentAsString(), nfi);
140 break;
141 }
142 }
143  
144 xtr.ReadEndElement();
145 xtr.ReadStartElement("Terrain");
146  
147 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
148 {
149 switch (xtr.Name)
150 {
151 case "WaterHeight":
152 settings.WaterHeight = Single.Parse(xtr.ReadElementContentAsString(), nfi);
153 break;
154 case "TerrainRaiseLimit":
155 settings.TerrainRaiseLimit = Single.Parse(xtr.ReadElementContentAsString(), nfi);
156 break;
157 case "TerrainLowerLimit":
158 settings.TerrainLowerLimit = Single.Parse(xtr.ReadElementContentAsString(), nfi);
159 break;
160 case "UseEstateSun":
161 settings.UseEstateSun = Boolean.Parse(xtr.ReadElementContentAsString());
162 break;
163 case "FixedSun":
164 settings.FixedSun = Boolean.Parse(xtr.ReadElementContentAsString());
165 break;
166 }
167 }
168 }
169  
170 return settings;
171 }
172  
173 public void ToXML(string filename)
174 {
175 StringWriter sw = new StringWriter();
176 XmlTextWriter writer = new XmlTextWriter(sw) { Formatting = Formatting.Indented };
177 writer.WriteStartDocument();
178  
179 writer.WriteStartElement(String.Empty, "RegionSettings", String.Empty);
180 writer.WriteStartElement(String.Empty, "General", String.Empty);
181  
182 WriteBoolean(writer, "AllowDamage", AllowDamage);
183 WriteBoolean(writer, "AllowLandResell", AllowLandResell);
184 WriteBoolean(writer, "AllowLandJoinDivide", AllowLandJoinDivide);
185 WriteBoolean(writer, "BlockFly", BlockFly);
186 WriteBoolean(writer, "BlockLandShowInSearch", BlockLandShowInSearch);
187 WriteBoolean(writer, "BlockTerraform", BlockTerraform);
188 WriteBoolean(writer, "DisableCollisions", DisableCollisions);
189 WriteBoolean(writer, "DisablePhysics", DisablePhysics);
190 WriteBoolean(writer, "DisableScripts", DisableScripts);
191 writer.WriteElementString("MaturityRating", MaturityRating.ToString());
192 WriteBoolean(writer, "RestrictPushing", RestrictPushing);
193 writer.WriteElementString("AgentLimit", AgentLimit.ToString());
194 writer.WriteElementString("ObjectBonus", ObjectBonus.ToString());
195 writer.WriteEndElement();
196  
197 writer.WriteStartElement(String.Empty, "GroundTextures", String.Empty);
198  
199 writer.WriteElementString("Texture1", TerrainDetail0.ToString());
200 writer.WriteElementString("Texture2", TerrainDetail1.ToString());
201 writer.WriteElementString("Texture3", TerrainDetail2.ToString());
202 writer.WriteElementString("Texture4", TerrainDetail3.ToString());
203 writer.WriteElementString("ElevationLowSW", TerrainStartHeight00.ToString());
204 writer.WriteElementString("ElevationLowNW", TerrainStartHeight01.ToString());
205 writer.WriteElementString("ElevationLowSE", TerrainStartHeight10.ToString());
206 writer.WriteElementString("ElevationLowNE", TerrainStartHeight11.ToString());
207 writer.WriteElementString("ElevationHighSW", TerrainHeightRange00.ToString());
208 writer.WriteElementString("ElevationHighNW", TerrainHeightRange01.ToString());
209 writer.WriteElementString("ElevationHighSE", TerrainHeightRange10.ToString());
210 writer.WriteElementString("ElevationHighNE", TerrainHeightRange11.ToString());
211 writer.WriteEndElement();
212  
213 writer.WriteStartElement(String.Empty, "Terrain", String.Empty);
214  
215 writer.WriteElementString("WaterHeight", WaterHeight.ToString());
216 writer.WriteElementString("TerrainRaiseLimit", TerrainRaiseLimit.ToString());
217 writer.WriteElementString("TerrainLowerLimit", TerrainLowerLimit.ToString());
218 WriteBoolean(writer, "UseEstateSun", UseEstateSun);
219 WriteBoolean(writer, "FixedSun", FixedSun);
220  
221 writer.WriteEndElement();
222 writer.WriteEndElement();
223 writer.Close();
224 sw.Close();
225 File.WriteAllText(filename, sw.ToString());
226 }
227  
228 private void WriteBoolean(XmlTextWriter writer, string name, bool value)
229 {
230 writer.WriteElementString(name, value ? "True" : "False");
231 }
232 }
233 }