Exemple #1
0
        public static void SaveTemplate(WorldTemplate template)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(WorldTemplate));

            string folderName = Path.Combine(TemplateFolder, template.WorldName);
            string infoFile   = Path.Combine(folderName, "info.xml");

            if (File.Exists(infoFile))
            {
                File.Delete(infoFile);
            }

            string saveName = $"{template.WorldName}";
            string savePath = Path.Combine(folderName, saveName);

            template.FilePath = $"{TemplateFolderName}\\{template.WorldName}\\{template.WorldName}";

            Directory.CreateDirectory(folderName);

            using (FileStream fs = new FileStream(infoFile, FileMode.OpenOrCreate))
            {
                serializer.Serialize(fs, template);
            }

            StartPawnsFromTemplate.StartPawns = template.StartPawns;

            GameDataSaveLoader.SaveGame(savePath);

            Messages.Message("Tempalte has been created", MessageTypeDefOf.PositiveEvent, false);
        }
Exemple #2
0
        private void CreateWorldTemplate()
        {
            if (string.IsNullOrEmpty(saveName))
            {
                Messages.Message("Enter correct template name", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            if (string.IsNullOrEmpty(author))
            {
                Messages.Message("Enter correct author", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            if (string.IsNullOrEmpty(description))
            {
                Messages.Message("Enter correct description", MessageTypeDefOf.NeutralEvent, false);
                return;
            }

            WorldTemplate template = WorldEditor.LoadedTemplate;

            template.WorldName   = saveName;
            template.Storyteller = Current.Game.storyteller.def.LabelCap;
            template.Scenario    = Current.Game.Scenario.name;
            template.Author      = author;
            template.Description = description;
            template.StartPawns  = Find.GameInitData.startingAndOptionalPawns;

            SaveTemplate(template);

            WorldEditor.LoadedTemplate = template;

            LoadTemplates();
        }
Exemple #3
0
        public static void LoadTemplates()
        {
            if (!Directory.Exists(TemplateFolder))
            {
                Directory.CreateDirectory(TemplateFolder);
            }

            Templates.Clear();

            XmlSerializer serializer = new XmlSerializer(typeof(WorldTemplate));

            foreach (var folder in Directory.GetDirectories(TemplateFolder))
            {
                string templateInfo = Path.Combine(folder, "info.xml");
                if (File.Exists(templateInfo))
                {
                    WorldTemplate template = Utils.Deserialize <WorldTemplate>(serializer, templateInfo);
                    Templates.Add(template);
                }
            }
        }
Exemple #4
0
            public static void Postfix(ref Rect __state, ref Page_CreateWorldParams __instance)
            {
                GUI.BeginGroup(__state);
                float y        = 280f;
                Rect  baseRect = new Rect(0f, y, 200f, 30f);

                Widgets.Label(baseRect, Translator.Translate("EditorLabel"));
                Rect EarthRect = new Rect(200f, y, 200f, 30f);

                if (Settings.FullyActiveEditor == false)
                {
                    if (Widgets.RadioButtonLabeled(EarthRect, Translator.Translate("isEnableEditorLabel"), isEdit == true))
                    {
                        isEdit = !isEdit;
                    }
                }
                else
                {
                    Widgets.Label(EarthRect, Translator.Translate("ActiveFullyMode"));
                    isEdit = true;
                }

                GUI.EndGroup();

                Widgets.Label(new Rect(440, 40, 200, 20), Translator.Translate("WorldTemplates"));
                int  worldsSize     = WorldTemplateManager.Templates.Count * 25;
                Rect scrollRect     = new Rect(440, 70, 200, 400);
                Rect scrollVertRect = new Rect(0, 0, scrollRect.x, worldsSize);

                Widgets.BeginScrollView(scrollRect, ref scrollPositionWorlds, scrollVertRect);
                int x = 0;

                foreach (var world in WorldTemplateManager.Templates)
                {
                    if (Widgets.ButtonText(new Rect(0, x, 180, 20), world.WorldName))
                    {
                        selectedTemplate = world;
                        StringBuilder builder = new StringBuilder();
                        builder.AppendLine($"{Translator.Translate("TemplateHead")}{world.WorldName}");
                        builder.AppendLine($"{Translator.Translate("TemplateAuthor")}{world.Author}");
                        builder.AppendLine($"{Translator.Translate("TemplateStoryteller")}{world.Storyteller}");
                        builder.AppendLine($"{Translator.Translate("TemplateScenario")}{world.Scenario}");
                        builder.AppendLine($"{Translator.Translate("TemplateDesc")}{world.Description}");
                        worldInfo = builder.ToString();
                    }

                    x += 22;
                }
                Widgets.EndScrollView();
                Widgets.LabelScrollable(new Rect(650, 70, 340, 400), worldInfo, ref scrollPositionInfo, false, false);

                if (selectedTemplate != null)
                {
                    if (Widgets.ButtonText(new Rect(440, 500, 200, 20), Translator.Translate("LoadTemplate")))
                    {
                        isWorldTemplate = true;
                        LoadedTemplate  = selectedTemplate;
                        CustomStartingSite.OneWayToShow = false;
                        GameDataSaveLoader.LoadGame(selectedTemplate.FilePath);
                    }
                }
            }