Example #1
0
        public static void OnManualServingContentChange_Postfix(UIEjectorWindow __instance)
        {
            //Notify about manual bullet inserting / withdrawing change
            StorageComponent storage = (StorageComponent)AccessTools.Field(typeof(UIEjectorWindow), "servingStorage").GetValue(__instance);

            LocalPlayer.SendPacketToLocalPlanet(new EjectorStorageUpdatePacket(__instance.ejectorId, storage.grids[0].count));
        }
Example #2
0
 public static void OnSetOrbit_Postfix(UIEjectorWindow __instance, int orbitId)
 {
     //Notify about target orbit change
     if (SimulatedWorld.Initialized)
     {
         LocalPlayer.SendPacketToLocalStar(new EjectorOrbitUpdatePacket(__instance.ejectorId, orbitId, GameMain.localPlanet?.id ?? -1));
     }
 }
 public static void OnSetOrbit_Postfix(UIEjectorWindow __instance, int orbitId)
 {
     //Notify about target orbit change
     if (Multiplayer.IsActive)
     {
         Multiplayer.Session.Network.SendPacketToLocalStar(new EjectorOrbitUpdatePacket(__instance.ejectorId, orbitId, GameMain.localPlanet?.id ?? -1));
     }
 }
Example #4
0
 public static void OnManualServingContentChange_Postfix(UIEjectorWindow __instance)
 {
     //Notify about manual bullet inserting / withdrawing change
     if (SimulatedWorld.Initialized)
     {
         StorageComponent storage = (StorageComponent)AccessTools.Field(typeof(UIEjectorWindow), "servingStorage").GetValue(__instance);
         LocalPlayer.SendPacketToLocalStar(new EjectorStorageUpdatePacket(__instance.ejectorId, storage.grids[0].count, GameMain.localPlanet?.id ?? -1));
     }
 }
 public static void OnManualServingContentChange_Postfix(UIEjectorWindow __instance)
 {
     //Notify about manual bullet inserting / withdrawing change
     if (Multiplayer.IsActive)
     {
         StorageComponent storage = __instance.servingStorage;
         Multiplayer.Session.Network.SendPacketToLocalStar(new EjectorStorageUpdatePacket(__instance.ejectorId, storage.grids[0].count, storage.grids[0].inc, GameMain.localPlanet?.id ?? -1));
     }
 }
Example #6
0
 public static void OnSetOrbit_Postfix(UIEjectorWindow __instance, int orbitId)
 {
     //Notify about target orbit change
     LocalPlayer.SendPacketToLocalPlanet(new EjectorOrbitUpdatePacket(__instance.ejectorId, orbitId));
 }
Example #7
0
        public static void UIEjectorWindow__OnUpdate_Postfix(ref UIEjectorWindow __instance, ref UIOrbitPicker ___orbitPicker)
        {
            if (__instance.ejectorId != 0 && __instance.factory != null)
            {
                if (autoRetargetingGO == null)
                {
                    var stateText = GameObject.Find("UI Root/Overlay Canvas/In Game/Windows/Ejector Window/state/state-text");
                    autoRetargetingGO = Instantiate(stateText, stateText.transform.position, Quaternion.identity);

                    autoRetargetingGO.name = "auto-retargeting";
                    autoRetargetingGO.transform.SetParent(stateText.transform.parent);


                    autoRetargetingGO.transform.localScale    = new Vector3(1f, 1f, 1f);
                    autoRetargetingGO.transform.localPosition = stateText.transform.localPosition + new Vector3(0f, -24f, 0f);
                }

                EjectorComponent ejector = __instance.factorySystem.ejectorPool[__instance.ejectorId];
                var ejectorUID           = GetEjectorUID(ejector);

                var text  = "Retargeting - Original Orbit";
                var color = TEXT_WHITE;

                ManagedEjector managedEjector     = GetOrCreateManagedEjector(ejectorUID, ejector.orbitId);
                bool           isAlternativeOrbit = ejector.orbitId != managedEjector.originalOrbitId;

                if (ejector.targetState == EjectorComponent.ETargetState.AngleLimit)
                {
                    text  = "Retargeting - No valid alternative";
                    color = TEXT_ORANGE;
                }

                if (isAlternativeOrbit)
                {
                    ___orbitPicker.orbitId = managedEjector.originalOrbitId;

                    text  = $"Retargeting - Alternative Orbit [ {ejector.orbitId} ]";
                    color = TEXT_CYAN;
                }


                for (var i = 0; i < ___orbitPicker.orbitButtons.Length; i++)
                {
                    var orbitButton = ___orbitPicker.orbitButtons[i];
                    var transition  = orbitButton.transitions[0];

                    if (orbitButton.highlighted || orbitButton.updating || orbitButton.isPointerEnter || orbitButton.isPointerDown || !orbitButton.button.interactable)
                    {
                        continue;
                    }

                    if (isAlternativeOrbit && i == ejector.orbitId)
                    {
                        transition.target.color = BUTTON_CYAN;
                    }
                    else if (transition.target.color != transition.normalColor)
                    {
                        transition.target.color = transition.normalColor;
                    }
                }

                var autoRetargetingText = autoRetargetingGO.GetComponent <Text>();
                autoRetargetingText.text  = text;
                autoRetargetingText.color = color;
            }
        }