Beispiel #1
0
        public static void Prefix(RocketPreflightCheckManager __instance, PreflightCheck completeCheck)
        {
            Rocket   rocket = __instance.gameObject.RequireComponentInParent <Rocket>();
            NitroxId id     = NitroxEntity.GetId(rocket.gameObject);

            NitroxServiceLocator.LocateService <Rockets>().CompletePreflightCheck(id, completeCheck);
        }
Beispiel #2
0
        public static bool Prefix(Rocket __instance)
        {
            GameObject gameObject = __instance.gameObject;
            NitroxId   id         = NitroxEntity.GetId(gameObject);

            Optional <NeptuneRocketModel> model = NitroxServiceLocator.LocateService <Vehicles>().TryGetVehicle <NeptuneRocketModel>(id);

            if (!model.HasValue)
            {
                Log.Error($"{nameof(Rocket_Start_Patch)}: Could not find NeptuneRocketModel by Nitrox id {id}.\nGO containing wrong id: {__instance.GetHierarchyPath()}");
                return(false);
            }

            __instance.currentRocketStage = model.Value.CurrentStage;

            if (__instance.currentRocketStage > 0)
            {
                __instance.elevatorState    = model.Value.ElevatorUp ? Rocket.RocketElevatorStates.AtTop : Rocket.RocketElevatorStates.AtBottom;
                __instance.elevatorPosition = model.Value.ElevatorUp ? 1f : 0f;
                __instance.SetElevatorPosition();

                //CockpitSwitch and RocketPreflightCheckScreenElement are filled based on the RocketPreflightCheckManager
                if (__instance.currentRocketStage > 3)
                {
                    RocketPreflightCheckManager rocketPreflightCheckManager = gameObject.RequireComponent <RocketPreflightCheckManager>();
                    rocketPreflightCheckManager.preflightChecks.AddRange(model.Value.PreflightChecks);
                }
            }

            return(true);
        }