Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
 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();
         }
     }
 }