Example #1
0
        /// <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;
                }
            }
        }
Example #2
0
    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;
            }
        }
    }
Example #3
0
    /// <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;
            }
        }
    }
Example #4
0
    /// <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;
            }
        }
    }