// Copy a quest public void Copy(string key) { Game game = Game.Get(); string dataLocation = Game.AppData() + Path.DirectorySeparatorChar + Game.Get().gameType.TypeName() + "/Editor"; if (!Directory.Exists(dataLocation)) { Directory.CreateDirectory(dataLocation); } // Find a new unique directory name int i = 1; while (Directory.Exists(dataLocation + "/Editor" + game.gameType.QuestName().Translate() + i)) { i++; } string targetLocation = dataLocation + "/Editor" + game.gameType.QuestName().Translate() + i; // Fully extract this scenario before copy if this is a package if (Path.GetExtension(Path.GetFileName(key)) == ".valkyrie") { // extract the full package QuestLoader.ExtractSinglePackageFull(ContentData.DownloadPath() + Path.DirectorySeparatorChar + Path.GetFileName(key)); } // Copy files try { DirectoryCopy(key, targetLocation, true); // read new quest file string[] questData = File.ReadAllLines(targetLocation + "/quest.ini"); // Search for quest section bool questFound = false; for (i = 0; i < questData.Length; i++) { if (questData[i].Equals("[Quest]")) { // Inside quest section questFound = true; } if (questFound && questData[i].IndexOf("name=") == 0) { // Add copy to name questFound = false; questData[i] = questData[i] + " (Copy)"; } } // Write back to ini file File.WriteAllLines(targetLocation + "/quest.ini", questData); } catch (System.Exception) { ValkyrieDebug.Log("Error: Failed to copy quest."); Application.Quit(); } // Back to selection new QuestEditSelection(); }
// This is called when a quest is selected public void StartQuest(QuestData.Quest q) { if (Path.GetExtension(Path.GetFileName(q.path)) == ".valkyrie") { // extract the full package QuestLoader.ExtractSinglePackageFull(ContentData.DownloadPath() + Path.DirectorySeparatorChar + Path.GetFileName(q.path)); } // Fetch all of the quest data and initialise the quest quest = new Quest(q); // Draw the hero icons, which are buttons for selection heroCanvas.SetupUI(); // Add a finished button to start the quest UIElement ui = new UIElement(Game.HEROSELECT); ui.SetLocation(UIScaler.GetRight(-8.5f), UIScaler.GetBottom(-2.5f), 8, 2); ui.SetText(CommonStringKeys.FINISHED, Color.green); ui.SetFont(gameType.GetHeaderFont()); ui.SetFontSize(UIScaler.GetMediumFont()); ui.SetButton(EndSelection); new UIElementBorder(ui, Color.green); // Add a title to the page ui = new UIElement(Game.HEROSELECT); ui.SetLocation(8, 1, UIScaler.GetWidthUnits() - 16, 3); ui.SetText(new StringKey("val", "SELECT", gameType.HeroesName())); ui.SetFont(gameType.GetHeaderFont()); ui.SetFontSize(UIScaler.GetLargeFont()); heroCanvas.heroSelection = new HeroSelection(); ui = new UIElement(Game.HEROSELECT); ui.SetLocation(0.5f, UIScaler.GetBottom(-2.5f), 8, 2); ui.SetText(CommonStringKeys.BACK, Color.red); ui.SetFont(gameType.GetHeaderFont()); ui.SetFontSize(UIScaler.GetMediumFont()); ui.SetButton(Destroyer.QuestSelect); new UIElementBorder(ui, Color.red); }