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); }
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)); }