static bool Prefix(AAR_UnitsResult_Screen __instance, MissionResults mission, SimGameState sim, Contract contract) { try { if (CustomUnitsAPI.Detected()) { return(true); } List <AAR_UnitStatusWidget> UnitWidgets = (List <AAR_UnitStatusWidget>)AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").GetValue(__instance); GameObject nextButton = __instance.transform.FindRecursive("buttonPanel").gameObject; nextButton.transform.localPosition = new Vector3(150, 400, 0); Transform parent = UnitWidgets[0].transform.parent; parent.localPosition = new Vector3(0, 115, 0); foreach (AAR_UnitStatusWidget oldWidget in UnitWidgets) { oldWidget.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f); } GameObject newparent = GameObject.Instantiate(parent.gameObject); newparent.transform.parent = parent.parent; newparent.name = "newparent"; newparent.transform.localPosition = new Vector3(0, -325, 0); foreach (Transform t in newparent.transform) { UnitWidgets.Add(t.gameObject.GetComponent <AAR_UnitStatusWidget>()); } AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").SetValue(__instance, UnitWidgets); List <UnitResult> UnitResults = new List <UnitResult>(); for (int i = 0; i < 8; i++) { if (i < contract.PlayerUnitResults.Count) { UnitResults.Add(contract.PlayerUnitResults[i]); } else { UnitResults.Add(null); } } AccessTools.Field(typeof(AAR_UnitsResult_Screen), "simState").SetValue(__instance, sim); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "missionResultParent").SetValue(__instance, mission); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "theContract").SetValue(__instance, contract); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "numUnits").SetValue(__instance, contract.PlayerUnitResults.Count); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitResults").SetValue(__instance, UnitResults); __instance.Visible = false; __instance.InitializeWidgets(); return(false); } catch (Exception e) { Logger.LogError(e); return(true); } }
protected void ProcessEndMission() { isMissionStarted = false; var result = new MissionResults() { Type = Type, IsSucceeded = IsSuccess(), CompletionTime = timeToCompleteMission - timePassed }; missionStatistics.text = result.ToString(); activateOnStart.SetActive(false); endPannel.SetActive(true); GameManager.GM.UpdateStats(result); }
public void UpdateStats(MissionResults results) { if (results.IsSucceeded) { var type = stats[results.Type]; type.missionsWon++; stats[type.RewardType].availableCells += type.rewardQuantity; } else { int allLives = 0; foreach (var item in stats) { allLives += item.Value.availableCells; } if (allLives == 0) { GameOver(); } } }