コード例 #1
0
        public static void Postfix(CombatHUDActionButton __instance, string creatorGUID, string targetGUID)
        {
            var HUD           = Traverse.Create((object)__instance).Property("HUD", (object[])null).GetValue <CombatHUD>();
            var selectedActor = HUD.SelectedActor;

            if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesFiring)
            {
                //                selectedActor.HasFiredThisRound = true;
                // this doesnt work to disable firing.
            }
            else if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesMovement)
            {
                //                selectedActor.HasMovedThisRound = true;
                //this doesnt work to disable movement
            }
            else if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesActivation)
            {
                if (selectedActor is Mech mech)
                {
                    mech.GenerateAndPublishHeatSequence(-1, true, false, selectedActor.GUID);
                    Mod.Log.Info?.Write($"Generated and Published Heat Sequence for {mech.Description.UIName}.");
                }

                selectedActor.DoneWithActor();//need to to onactivationend too
                selectedActor.OnActivationEnd(selectedActor.GUID, __instance.GetInstanceID());
            }
        }
コード例 #2
0
 public static void Postfix(CombatHUDMechwarriorTray __instance, CombatGameState Combat, CombatHUD HUD)
 {
     if (modSettings.usingCACabilitySelector == false && (modSettings.extraAbilities > 0 || modSettings.nonTreeAbilities > 0))
     {
         if (modSettings.cleanUpCombatUI == true)
         {
             GameObject.Find("AT_OuterFrameL").SetActive(false);
             GameObject.Find("AT_OuterFrameR").SetActive(false);
             GameObject.Find("braceL (1)").SetActive(false);
             GameObject.Find("braceR (1)").SetActive(false);
             GameObject.Find("actionButton_DLine1").SetActive(false);
             GameObject.Find("actionButton_DLine2").SetActive(false);
             GameObject.Find("actionButton_DLine3").SetActive(false);
         }
         for (int i = 1; i <= modSettings.extraAbilities + modSettings.nonTreeAbilities; i++)
         {                    //thanks to kmission for doing the hard part of writing all this, and letting me use my elite copypaste skills//
             GameObject[] ActionButtonHolders = new GameObject[__instance.ActionButtonHolders.Length + 1];
             __instance.ActionButtonHolders.CopyTo(ActionButtonHolders, 0);
             CombatHUDActionButton[] ActionButtons = new CombatHUDActionButton[__instance.ActionButtons.Length + 1];
             __instance.ActionButtons.CopyTo(ActionButtons, 0);
             CombatHUDActionButton[] oldAbilityButtons = (CombatHUDActionButton[])typeof(CombatHUDMechwarriorTray).GetProperty("AbilityButtons", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(__instance, null);
             CombatHUDActionButton[] AbilityButtons    = new CombatHUDActionButton[oldAbilityButtons.Length + 1];
             oldAbilityButtons.CopyTo(AbilityButtons, 0);
             GameObject            sourceButtonObject = __instance.ActionButtonHolders[9];
             CombatHUDActionButton sourceButton       = sourceButtonObject.GetComponentInChildren <CombatHUDActionButton>(true);
             GameObject            newButtonObject    = UnityEngine.Object.Instantiate <GameObject>(sourceButtonObject, sourceButtonObject.transform.parent);
             CombatHUDActionButton newButton          = newButtonObject.GetComponentInChildren <CombatHUDActionButton>(true);
             ActionButtonHolders[__instance.ActionButtonHolders.Length] = newButtonObject;
             Vector3[] corners = new Vector3[4];
             sourceButtonObject.GetComponent <RectTransform>().GetWorldCorners(corners);
             float width = corners[2].x - corners[0].x;
             newButtonObject.transform.localPosition.Set(newButtonObject.transform.localPosition.x + (width), newButtonObject.transform.localPosition.y, newButtonObject.transform.localPosition.z);
             CombatHUDSidePanelHoverElement panelHoverElement = newButton.GetComponentInChildren <CombatHUDSidePanelHoverElement>(true);
             if (panelHoverElement == null)
             {
                 panelHoverElement = newButton.gameObject.AddComponent <CombatHUDSidePanelHoverElement>();
             }
             panelHoverElement.Init(HUD);
             newButton.Init(Combat, HUD, BTInput.Instance.Key_None(), true);
             ActionButtonHolders[__instance.ActionButtonHolders.Length] = newButtonObject;
             ActionButtons[__instance.ActionButtons.Length]             = newButton;
             AbilityButtons[oldAbilityButtons.Length] = newButton;
             __instance.ActionButtonHolders           = ActionButtonHolders;
             PropertyInfo ActionButtonsProperty = typeof(CombatHUDMechwarriorTray).GetProperty("ActionButtons");
             ActionButtonsProperty.GetSetMethod(true).Invoke(__instance, new object[]
             {
                 ActionButtons
             });
             typeof(CombatHUDMechwarriorTray).GetProperty("AbilityButtons", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, AbilityButtons, null);
         }
     }
 }
コード例 #3
0
        //public static bool Prepare() { return false; }
        public static void Postfix(CombatHUDActionButton __instance, ref bool __result)
        {
            CombatHUDEquipmentSlot slot = __instance as CombatHUDEquipmentSlot;

            if (slot == null)
            {
                return;
            }
            Log.TWL(0, "CombatHUDEquipmentSlot.TryActivate GUID:" + __instance.GUID + " selection type:" + (SelectionType)typeof(CombatHUDEquipmentSlot).GetProperty("SelectionType", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(slot) + " result:" + __result);
            if (__result)
            {
                CombatHUD HUD = (CombatHUD)p_HUD.GetValue(slot);
                HUD.AttackModeSelector.FireButton.FireText.SetText(slot.Ability.Def.Description.Name);
            }
        }
コード例 #4
0
        public static void Postfix(CombatHUDActionButton __instance, string creatorGUID, string targetGUID)
        {
            var HUD           = Traverse.Create((object)__instance).Property("HUD", (object[])null).GetValue <CombatHUD>();
            var selectedActor = HUD.SelectedActor;

            if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesFiring)
            {
//                selectedActor.HasFiredThisRound = true;
// this doesnt work to disable firing.
            }
            else if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesMovement)
            {
//                selectedActor.HasMovedThisRound = true;
//this doesnt work to disable movement
            }
            else if (__instance.Ability.Def.Resource == AbilityDef.ResourceConsumed.ConsumesActivation)
            {
                selectedActor.OnActivationEnd(selectedActor.GUID, (__instance).GetInstanceID());
            }
        }