/// <summary> /// Reads the prototype room behavior from XML. /// </summary> /// <param name="readerParent">The XML reader to read from.</param> public void ReadXmlPrototype(XmlReader readerParent) { Type = readerParent.GetAttribute("type"); XmlReader reader = readerParent.ReadSubtree(); while (reader.Read()) { switch (reader.Name) { case "Name": reader.Read(); Name = reader.ReadContentAsString(); break; case "TypeTag": reader.Read(); typeTags.Add(reader.ReadContentAsString()); break; case "Description": reader.Read(); description = reader.ReadContentAsString(); break; case "Requirements": ReadXmlRequirements(reader); break; case "Optional": ReadXmlRequirements(reader, true); break; case "Action": XmlReader subtree = reader.ReadSubtree(); EventActions.ReadXml(subtree); subtree.Close(); break; case "ContextMenuAction": contextMenuLuaActions.Add(new ContextMenuLuaAction { LuaFunction = reader.GetAttribute("FunctionName"), Text = reader.GetAttribute("Text"), RequireCharacterSelected = bool.Parse(reader.GetAttribute("RequireCharacterSelected")), DevModeOnly = bool.Parse(reader.GetAttribute("DevModeOnly") ?? "false") }); break; case "Params": ReadXmlParams(reader); // Read in the Param tag break; case "LocalizationCode": reader.Read(); LocalizationCode = reader.ReadContentAsString(); break; case "UnlocalizedDescription": reader.Read(); UnlocalizedDescription = reader.ReadContentAsString(); break; } } }
public void ReadXmlPrototype(XmlReader readerParent) { ObjectType = readerParent.GetAttribute("objectType"); XmlReader reader = readerParent.ReadSubtree(); while (reader.Read()) { switch (reader.Name) { case "Name": reader.Read(); Name = reader.ReadContentAsString(); break; case "TypeTag": reader.Read(); typeTags.Add(reader.ReadContentAsString()); break; case "Description": reader.Read(); description = reader.ReadContentAsString(); break; case "MovementCost": reader.Read(); MovementCost = reader.ReadContentAsFloat(); break; case "Width": reader.Read(); Width = reader.ReadContentAsInt(); break; case "Height": reader.Read(); Height = reader.ReadContentAsInt(); break; case "LinksToNeighbours": reader.Read(); LinksToNeighbour = reader.ReadContentAsBoolean(); break; case "EnclosesRooms": reader.Read(); RoomEnclosure = reader.ReadContentAsBoolean(); break; case "CanReplaceFurniture": replaceableFurniture.Add(reader.GetAttribute("typeTag").ToString()); break; case "DragType": reader.Read(); DragType = reader.ReadContentAsString(); break; case "BuildingJob": float jobTime = float.Parse(reader.GetAttribute("jobTime")); List <Inventory> invs = new List <Inventory>(); XmlReader inventoryReader = reader.ReadSubtree(); while (inventoryReader.Read()) { if (inventoryReader.Name == "Inventory") { // Found an inventory requirement, so add it to the list! invs.Add(new Inventory( inventoryReader.GetAttribute("objectType"), int.Parse(inventoryReader.GetAttribute("amount")), 0)); } } Job j = new Job( null, ObjectType, FurnitureActions.JobComplete_FurnitureBuilding, jobTime, invs.ToArray(), Job.JobPriority.High); j.JobDescription = "job_build_" + ObjectType + "_desc"; World.Current.SetFurnitureJobPrototype(j, this); break; case "Action": XmlReader subtree = reader.ReadSubtree(); EventActions.ReadXml(subtree); subtree.Close(); break; case "ContextMenuAction": contextMenuLuaActions.Add(new ContextMenuLuaAction { LuaFunction = reader.GetAttribute("FunctionName"), Text = reader.GetAttribute("Text"), RequiereCharacterSelected = bool.Parse(reader.GetAttribute("RequiereCharacterSelected")) }); break; case "IsEnterable": isEnterableAction = reader.GetAttribute("FunctionName"); break; case "GetSpriteName": getSpriteNameAction = reader.GetAttribute("FunctionName"); break; case "JobSpotOffset": JobSpotOffset = new Vector2( int.Parse(reader.GetAttribute("X")), int.Parse(reader.GetAttribute("Y"))); break; case "JobSpawnSpotOffset": jobSpawnSpotOffset = new Vector2( int.Parse(reader.GetAttribute("X")), int.Parse(reader.GetAttribute("Y"))); break; case "Power": reader.Read(); powerValue = reader.ReadContentAsFloat(); // TODO: Connection = new Connection(); // TODO: Connection.ReadPrototype(reader); break; case "Params": ReadXmlParams(reader); // Read in the Param tag break; case "LocalizationCode": reader.Read(); LocalizationCode = reader.ReadContentAsString(); break; case "UnlocalizedDescription": reader.Read(); UnlocalizedDescription = reader.ReadContentAsString(); break; } } }
/// <summary> /// Reads the prototype furniture from XML. /// </summary> /// <param name="readerParent">The XML reader to read from.</param> public void ReadXmlPrototype(XmlReader readerParent) { Type = readerParent.GetAttribute("type"); XmlReader reader = readerParent.ReadSubtree(); while (reader.Read()) { switch (reader.Name) { case "Name": reader.Read(); Name = reader.ReadContentAsString(); break; case "TypeTag": reader.Read(); typeTags.Add(reader.ReadContentAsString()); break; case "Description": reader.Read(); description = reader.ReadContentAsString(); break; case "MovementCost": reader.Read(); MovementCost = reader.ReadContentAsFloat(); break; case "PathfindingModifier": reader.Read(); PathfindingModifier = reader.ReadContentAsFloat(); break; case "PathfindingWeight": reader.Read(); PathfindingWeight = reader.ReadContentAsFloat(); break; case "Width": reader.Read(); Width = reader.ReadContentAsInt(); break; case "Height": reader.Read(); Height = reader.ReadContentAsInt(); break; case "Health": reader.Read(); health = new HealthSystem(reader.ReadContentAsFloat(), false, true, false, false); break; case "LinksToNeighbours": reader.Read(); LinksToNeighbour = reader.ReadContentAsString(); break; case "EnclosesRooms": reader.Read(); RoomEnclosure = reader.ReadContentAsBoolean(); break; case "CanReplaceFurniture": replaceableFurniture.Add(reader.GetAttribute("typeTag").ToString()); break; case "CanRotate": reader.Read(); CanRotate = reader.ReadContentAsBoolean(); break; case "DragType": reader.Read(); DragType = reader.ReadContentAsString(); break; case "BuildingJob": ReadXmlBuildingJob(reader); break; case "DeconstructJob": ReadXmlDeconstructJob(reader); break; case "CanBeBuiltOn": tileTypeBuildPermissions.Add(reader.GetAttribute("tileType")); break; case "Animations": XmlReader animationReader = reader.ReadSubtree(); ReadAnimationXml(animationReader); break; case "Action": XmlReader subtree = reader.ReadSubtree(); EventActions.ReadXml(subtree); subtree.Close(); break; case "ContextMenuAction": contextMenuLuaActions.Add(new ContextMenuLuaAction { LuaFunction = reader.GetAttribute("FunctionName"), Text = reader.GetAttribute("Text"), RequireCharacterSelected = bool.Parse(reader.GetAttribute("RequireCharacterSelected")), DevModeOnly = bool.Parse(reader.GetAttribute("DevModeOnly") ?? "false") }); break; case "IsEnterable": isEnterableAction = reader.GetAttribute("FunctionName"); break; case "GetProgressInfo": getProgressInfoNameAction = reader.GetAttribute("functionName"); break; case "JobWorkSpotOffset": Jobs.ReadWorkSpotOffset(reader); break; case "JobInputSpotOffset": Jobs.ReadInputSpotOffset(reader); break; case "JobOutputSpotOffset": Jobs.ReadOutputSpotOffset(reader); break; case "Params": ReadXmlParams(reader); // Read in the Param tag break; case "LocalizationCode": reader.Read(); LocalizationCode = reader.ReadContentAsString(); break; case "UnlocalizedDescription": reader.Read(); UnlocalizedDescription = reader.ReadContentAsString(); break; case "Component": BuildableComponent component = BuildableComponent.Deserialize(reader); if (component != null) { component.InitializePrototype(this); components.Add(component); } break; } } }
/// <summary> /// Reads the prototype utility from XML. /// </summary> /// <param name="readerParent">The XML reader to read from.</param> public void ReadXmlPrototype(XmlReader readerParent) { Type = readerParent.GetAttribute("type"); XmlReader reader = readerParent.ReadSubtree(); while (reader.Read()) { switch (reader.Name) { case "TypeTag": reader.Read(); typeTags.Add(reader.ReadContentAsString()); break; case "CanBeBuiltOn": tileTypeBuildPermissions.Add(reader.GetAttribute("tileType")); break; case "Action": XmlReader subtree = reader.ReadSubtree(); EventActions.ReadXml(subtree); subtree.Close(); break; case "ContextMenuAction": contextMenuLuaActions.Add(new ContextMenuLuaAction { LuaFunction = reader.GetAttribute("FunctionName"), LocalizationKey = reader.GetAttribute("Text"), RequireCharacterSelected = bool.Parse(reader.GetAttribute("RequireCharacterSelected")), DevModeOnly = bool.Parse(reader.GetAttribute("DevModeOnly") ?? "false") }); break; case "GetSpriteName": getSpriteNameAction = reader.GetAttribute("FunctionName"); break; case "Params": ReadXmlParams(reader); // Read in the Param tag break; case "LocalizationCode": reader.Read(); LocalizationName = reader.ReadContentAsString(); break; case "UnlocalizedDescription": reader.Read(); LocalizationDescription = reader.ReadContentAsString(); break; case "OrderAction": OrderAction orderAction = OrderAction.Deserialize(reader); if (orderAction != null) { orderActions[orderAction.Type] = orderAction; } break; } } }