private void RecallDrone() { foreach (var loot in drone.CollectedLoot) { FlightController.RecieveLoot(loot); } flightView.ExitFlightMode(); Active = false; }
private void OnGUI() { GUILayout.BeginArea(new Rect(Screen.width / 2 - width / 2, Screen.height / 2 - Screen.height / 2, width, Screen.height)); scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(width), GUILayout.Height(Screen.height - 35)); GUILayout.BeginHorizontal(); if (!inFlightMode && QuestController.GetCurrentQuest() == null) { if (GUILayout.Button(selectedPage == SimpleViewPage.Bridge ? "<b>❖ Bridge</b>" : "Bridge")) { selectedPage = SimpleViewPage.Bridge; } if (GUILayout.Button(selectedPage == SimpleViewPage.Workshop ? "<b>❖ Workshop</b>" : "Workshop")) { selectedPage = SimpleViewPage.Workshop; } if (GUILayout.Button(selectedPage == SimpleViewPage.Map ? "<b>❖ Map</b>" : "Map")) { selectedPage = SimpleViewPage.Map; } if (GUILayout.Button(selectedPage == SimpleViewPage.Horizon ? "<b>❖ Horizon</b>" : "Horizon")) { selectedPage = SimpleViewPage.Horizon; } } GUILayout.EndHorizontal(); GUILayout.Box(string.Format("Day: {0}/{1} {2} AP: {3}/{4}", State.CurrentDay, State.TotalDays, QuestController.GetCurrentQuest() != null ? string.Format("● In quest mode. Quest name: {0}. Quest progress: {1} ●", QuestController.GetCurrentQuest().ID, QuestController.GetCurrentQuest().CurrentBlock) : inFlightMode ? string.Format("● In flight mode. Minerals: A{0} B{1} C{2}. Loot charges: {3}/{4} ●", State.MineralA, State.MineralB, State.MineralC, lootCharges, State.LootCharges) : "●", State.CurrentAP, State.MaxAP)); if (State.GameStatus == GameStatus.InProgress) { if (inFlightMode) { for (int i = 0; i < sectorLoot.Count; i++) { if (GUILayout.Button(string.Format("Loot spot of {0}", sectorLoot[i].LootType))) { FlightController.RecieveLoot(sectorLoot[i]); sectorLoot.Remove(sectorLoot[i]); lootCharges--; if (lootCharges <= 0) { inFlightMode = false; } } } if (GUILayout.Button("Recall dron")) { inFlightMode = false; } } else if (QuestController.GetCurrentQuest() != null) { GUILayout.Label(XDocument.Parse(Text.Get(QuestController.GetCurrentQuest().CurrentBlock)).Root.Value, GUILayout.Width(width - 10)); var choises = XDocument.Parse(Text.Get(QuestController.GetCurrentQuest().CurrentBlock)).Root.Elements("choise"); if (choises.Count() == 0) { if (GUILayout.Button("End quest")) { QuestController.EndQuest(); } } else { foreach (var choise in choises) { if (GUILayout.Button(choise.Value, GUILayout.Width(width - 10))) { QuestController.MakeChoise(choise.Value); } } } } else { if (selectedPage == SimpleViewPage.Bridge) { for (int i = 1; i <= State.CurrentDay; i++) { foreach (var record in State.JournalRecords.Where(r => r.AssignedDay == i)) { GUILayout.Label(Text.Get(record.ID)); } } if (GUILayout.Button(string.Format("End day [AP = {0}]", State.MaxAP))) { BridgeController.EndDay(); } } if (selectedPage == SimpleViewPage.Workshop) { GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("Fuel tank: <b>{0}</b>", State.FuelSynthed ? "FULL" : "EMPTY")); GUILayout.Label(string.Format("Breakage: <b>{0}</b>", State.EngineFixed ? "FIXED" : State.BreakageType.ToString())); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("Resources: W{0} A{1} C{2}", State.Wiring, State.Alloy, State.Chips), GUILayout.Width(width / 2)); GUILayout.Label(string.Format("Fix engine requirments: W{0} A{1} C{2}", State.FixEngineRequirements[State.BreakageType][0], State.FixEngineRequirements[State.BreakageType][1], State.FixEngineRequirements[State.BreakageType][2])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("Minerals: A{0} B{1} C{2}", State.MineralA, State.MineralB, State.MineralC), GUILayout.Width(width / 2)); showSynthFormula = GUILayout.Toggle(showSynthFormula, "show sync formula"); if (showSynthFormula) { GUILayout.Label(string.Format("A{0} B{1} C{2}", State.FuelSynthFormula[0], State.FuelSynthFormula[1], State.FuelSynthFormula[2])); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(GUILayout.Width(width / 2)); GUILayout.Label(string.Format("Analyzed artifacts ({0}):", State.Artifacts.FindAll(x => x.Status == ArtifactStatus.Analyzed).Count)); showArtifacts = GUILayout.Toggle(showArtifacts, "show all analyzed artifacts"); if (showArtifacts) { foreach (var artifact in State.Artifacts.FindAll(x => x.Status == ArtifactStatus.Analyzed)) { GUILayout.Label(string.Format("[{0}] {1} ScanInfo: {2}", artifact.ID, artifact.Name, artifact.ScanInfo)); } } GUILayout.EndVertical(); GUILayout.BeginVertical(GUILayout.Width(width / 2 - 30)); GUILayout.Label(string.Format("Fuel synth probes ({0}):", State.FuelSynthProbes.Count)); showProbes = GUILayout.Toggle(showProbes, "show all the probes"); if (showProbes) { foreach (var probe in State.FuelSynthProbes) { GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("Probe №{0} [A: {1}, B: {2}, C: {3}] is {4}.", State.FuelSynthProbes.FindIndex(x => x == probe), probe[0], probe[1], probe[2], WorkshopController.MeasureProbe(probe))); GUILayout.EndHorizontal(); } } GUILayout.EndVertical(); GUILayout.EndHorizontal(); if (WorkshopController.CanFixEngine() && GUILayout.Button(string.Format("Fix engine [-{0}AP]", State.FixEngineAPCost))) { WorkshopController.FixEngine(); } if (!State.FuelSynthed) { GUILayout.BeginHorizontal(); if (GUILayout.Button(string.Format("Synth fuel [-{0}AP] (A + B + C must be {1})", State.FuelSynthAPCost, State.FuelSynthSumm))) { WorkshopController.SynthFuel(synthProbe); synthProbe = new int[3]; } synthProbe[0] = int.Parse(GUILayout.TextField(synthProbe[0].ToString())); synthProbe[1] = int.Parse(GUILayout.TextField(synthProbe[1].ToString())); synthProbe[2] = int.Parse(GUILayout.TextField(synthProbe[2].ToString())); GUILayout.EndHorizontal(); } foreach (var artifact in State.Artifacts.FindAll(x => x.Status == ArtifactStatus.Found)) { if (GUILayout.Button(string.Format("Start analyzing {0} [-{1}AP]", artifact.ID, State.AnalyzeArtifactAPCost))) { WorkshopController.AnalyzeArtifact(artifact); } } } if (selectedPage == SimpleViewPage.Map) { loadSectors = GUILayout.Toggle(loadSectors, " Load sector scenes"); if (GUILayout.Button(string.Format("Enter 1st sector [-{0}AP]", State.EnterSectorAPCost))) { InitFlightMode(1); } if (GUILayout.Button(string.Format("Enter 2nt sector [-{0}AP]", State.EnterSectorAPCost))) { InitFlightMode(2); } if (GUILayout.Button(string.Format("Enter 3rd sector [-{0}AP]", State.EnterSectorAPCost))) { InitFlightMode(3); } if (GUILayout.Button(string.Format("Enter 4th sector [-{0}AP]", State.EnterSectorAPCost))) { InitFlightMode(4); } } if (selectedPage == SimpleViewPage.Horizon) { foreach (var phrase in HorizonController.GetPhrases()) { string phraseText = string.Format("[{0}] {1}", phrase.ID, Text.Get(phrase.ID)); if (phrase.AssociatedQuest != string.Empty) { if (GUILayout.Button(phraseText)) { phrase.StartAssociatedQuest(); } } else { GUILayout.Label(string.Format("[{0}] {1}", phrase.ID, Text.Get(phrase.ID))); } } } } } else { GUILayout.Box(State.GameStatus.ToString()); } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Return to menu", GUILayout.Height(30))) { SwitchView(ViewType.MainMenu); } if (GUILayout.Button("Reset and start new game", GUILayout.Height(30))) { State.Reset(); State.GameStatus = GameStatus.InProgress; } GUILayout.EndHorizontal(); GUILayout.EndArea(); }