Esempio n. 1
0
        object Copy(Vector3 sourcePos, Vector3 sourceRot, string filename, float RotationCorrection, CopyMechanics copyMechanics, float range, bool saveBuildings, bool saveDeployables, bool saveInventories)
        {
            var rawData = new List <object>();
            var copy    = copyMechanics == CopyMechanics.Proximity ? CopyByProximity(sourcePos, sourceRot, RotationCorrection, range, saveBuildings, saveDeployables, saveInventories) : CopyByBuilding(sourcePos, sourceRot, RotationCorrection, range, saveBuildings, saveDeployables, saveInventories);;

            if (copy is string)
            {
                return(copy);
            }
            rawData = copy as List <object>;

            var defaultData = new Dictionary <string, object>
            {
                { "position", new Dictionary <string, object>
                  {
                      { "x", sourcePos.x.ToString() },
                      { "y", sourcePos.y.ToString() },
                      { "z", sourcePos.z.ToString() }
                  } },
                { "rotationy", sourceRot.y.ToString() },
                { "rotationdiff", RotationCorrection.ToString() }
            };

            string path     = subDirectory + filename;
            var    CopyData = Interface.GetMod().DataFileSystem.GetDatafile(path);

            CopyData.Clear();
            CopyData["default"]  = defaultData;
            CopyData["entities"] = rawData;
            Interface.GetMod().DataFileSystem.SaveDatafile(path);
            return(true);
        }
Esempio n. 2
0
        object TryCopy(Vector3 sourcePos, Vector3 sourceRot, string filename, float RotationCorrection, string[] args)
        {
            CopyMechanics copyMechanics   = CopyMechanics.Building;
            float         radius          = 3f;
            bool          saveInventories = true;
            bool          saveDeployables = true;
            bool          saveBuilding    = true;

            for (int i = 0; ; i = i + 2)
            {
                if (i >= args.Length)
                {
                    break;
                }
                if (i + 1 >= args.Length)
                {
                    return(GetMsg("Syntax: /copy TARGETFILENAME options values\r\n radius XX (default 3)\r\n mechanics proximity/building (default building)\r\nbuilding true/false (saves structures or not)\r\ndeployables true/false (saves deployables or not)\r\ninventories true/false (saves inventories or not)", null));
                }
                switch (args[i].ToLower())
                {
                case "r":
                case "rad":
                case "radius":
                    if (!float.TryParse(args[i + 1], out radius))
                    {
                        return("radius must be a number");
                    }
                    break;

                case "mechanics":
                case "m":
                case "mecha":
                    switch (args[i + 1].ToLower())
                    {
                    case "building":
                    case "build":
                    case "b":
                        copyMechanics = CopyMechanics.Building;
                        break;

                    case "proximity":
                    case "prox":
                    case "p":
                        copyMechanics = CopyMechanics.Proximity;
                        break;
                    }
                    break;

                case "i":
                case "inventories":
                case "inv":
                    if (!bool.TryParse(args[i + 1], out saveInventories))
                    {
                        return("save inventories needs to be true or false");
                    }
                    break;

                case "b":
                case "building":
                case "structure":
                    if (!bool.TryParse(args[i + 1], out saveBuilding))
                    {
                        return("save buildings needs to be true or false");
                    }
                    break;

                case "d":
                case "deployables":
                    if (!bool.TryParse(args[i + 1], out saveDeployables))
                    {
                        return("save deployables needs to be true or false");
                    }
                    break;

                default:
                    return(GetMsg("Syntax: /copy TARGETFILENAME options values\r\n radius XX (default 3)\r\n mechanics proximity/building (default building)\r\nbuilding true/false (saves structures or not)\r\ndeployables true/false (saves deployables or not)\r\ninventories true/false (saves inventories or not)", null));

                    break;
                }
            }

            return(Copy(sourcePos, sourceRot, filename, RotationCorrection, copyMechanics, radius, saveBuilding, saveDeployables, saveInventories));
        }