internal static void CreateShootActionSet <T>() where T : IMyTerminalBlock
        {
            var action0 = MyAPIGateway.TerminalControls.CreateAction <T>($"Shoot");

            action0.Icon   = @"Textures\GUI\Icons\Actions\Toggle.dds";
            action0.Name   = new StringBuilder($"Shoot On/Off");
            action0.Action = delegate(IMyTerminalBlock blk)
            {
                var comp = blk?.Components?.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }

                TerminalHelpers.WCShootToggleAction(comp);
            };
            action0.Writer = (blk, sb) =>
            {
                var comp = blk.Components.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }
                if (comp.State.Value.ShootOn)
                {
                    sb.Append("On");
                }
                else
                {
                    sb.Append("Off");
                }
            };
            action0.Enabled = (b) =>
            {
                return(b.Components.Has <WeaponComponent>());
            };
            action0.ValidForGroups = true;

            MyAPIGateway.TerminalControls.AddAction <T>(action0);

            var action1 = MyAPIGateway.TerminalControls.CreateAction <T>($"Shoot_On");

            action1.Icon   = @"Textures\GUI\Icons\Actions\SwitchOn.dds";
            action1.Name   = new StringBuilder($"Shoot On");
            action1.Action = delegate(IMyTerminalBlock blk) {
                var comp = blk?.Components?.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }

                TerminalHelpers.WCShootOnAction(comp);
            };
            action1.Writer = (blk, sb) =>
            {
                var comp = blk.Components.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }
                if (comp.State.Value.ShootOn)
                {
                    sb.Append("On");
                }
                else
                {
                    sb.Append("Off");
                }
            };
            action1.Enabled = (b) =>
            {
                return(b.Components.Has <WeaponComponent>());
            };
            action1.ValidForGroups = true;

            MyAPIGateway.TerminalControls.AddAction <T>(action1);

            var action2 = MyAPIGateway.TerminalControls.CreateAction <T>($"Shoot_Off");

            action2.Icon   = @"Textures\GUI\Icons\Actions\SwitchOff.dds";
            action2.Name   = new StringBuilder($"Shoot Off");
            action2.Action = delegate(IMyTerminalBlock blk) {
                var comp = blk?.Components?.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }

                TerminalHelpers.WCShootOffAction(comp);
            };
            action2.Writer = (blk, sb) =>
            {
                var comp = blk.Components.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }
                if (comp.State.Value.ShootOn)
                {
                    sb.Append("On");
                }
                else
                {
                    sb.Append("Off");
                }
            };
            action2.Enabled = (b) =>
            {
                return(b.Components.Has <WeaponComponent>());
            };
            action2.ValidForGroups = true;

            MyAPIGateway.TerminalControls.AddAction <T>(action2);

            var action3 = MyAPIGateway.TerminalControls.CreateAction <T>($"ShootOnce");

            action3.Icon   = @"Textures\GUI\Icons\Actions\SwitchOn.dds";
            action3.Name   = new StringBuilder($"Shoot Once");
            action3.Action = delegate(IMyTerminalBlock blk) {
                var comp = blk?.Components?.Get <WeaponComponent>();
                if (comp == null || comp.Platform.State != MyWeaponPlatform.PlatformState.Ready)
                {
                    return;
                }

                TerminalHelpers.WCShootOnceAction(comp);
            };
            action3.Writer  = (b, t) => t.Append("");
            action3.Enabled = (b) =>
            {
                return(b.Components.Has <WeaponComponent>());
            };
            action3.ValidForGroups = false;

            MyAPIGateway.TerminalControls.AddAction <T>(action3);
        }
Пример #2
0
 public static void CreateDecoyTerminalUi <T>(Session session) where T : IMyTerminalBlock
 {
     CreateCustomDecoyActions <T>(session);
     TerminalHelpers.AddDecoyControls <T>(session);
 }
Пример #3
0
 public static void CreateCameraTerminalUi <T>(Session session) where T : IMyTerminalBlock
 {
     CreateCustomCameraActions <T>(session);
     TerminalHelpers.AddCameraControls <T>(session);
 }
Пример #4
0
        public void CreateControllerElements(IMyTerminalBlock block)
        {
            try
            {
                if (DsControl) return;
                var comp = block?.GameLogic?.GetAs<DefenseShields>();
                TerminalHelpers.Separator(comp?.Shield, "DS-C_sep0");
                ToggleShield = TerminalHelpers.AddOnOff(comp?.Shield, "DS-C_ToggleShield", "Shield Status", "Raise or Lower Shields", "Up", "Down", DsUi.GetRaiseShield, DsUi.SetRaiseShield);
                TerminalHelpers.Separator(comp?.Shield, "DS-C_sep1");
                ChargeSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_ChargeRate", "Shield Charge Rate", "Percentage Of Power The Shield May Consume", DsUi.GetRate, DsUi.SetRate);
                ChargeSlider.SetLimits(20, 95);
                PowerScaleSelect = TerminalHelpers.AddCombobox(comp?.Shield, "DS-C_PowerScale", "Select Power Scale", "Select the power scale to use", DsUi.GetPowerScale, DsUi.SetPowerScale, DsUi.ListPowerScale);
                PowerWatts = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_PowerWatts", "Power To Use", "Select the maximum scaled power the shield can use", DsUi.GetPowerWatts, DsUi.SetPowerWatts,  DsUi.EnablePowerWatts);
                PowerWatts.SetLimits(1, 999);
                if (comp != null && comp.GridIsMobile)
                {
                    TerminalHelpers.Separator(comp.Shield, "DS-C_sep2");
                }

                ExtendFit = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_ExtendFit", "Extend Shield", "Extend Shield", DsUi.GetExtend, DsUi.SetExtend);
                SphereFit = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_SphereFit", "Sphere Shield", "Sphere Shield", DsUi.GetSphereFit, DsUi.SetSphereFit);
                FortifyShield = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_ShieldFortify", "Fortify Shield ", "Fortify Shield ", DsUi.GetFortify, DsUi.SetFortify);
                TerminalHelpers.Separator(comp?.Shield, "DS-C_sep3");

                WidthSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_WidthSlider", "Shield Size Width", "Shield Size Width", DsUi.GetWidth, DsUi.SetWidth);
                WidthSlider.SetLimits(30, 1000);

                HeightSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_HeightSlider", "Shield Size Height", "Shield Size Height", DsUi.GetHeight, DsUi.SetHeight);
                HeightSlider.SetLimits(30, 1000);

                DepthSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_DepthSlider", "Shield Size Depth", "Shield Size Depth", DsUi.GetDepth, DsUi.SetDepth);
                DepthSlider.SetLimits(30, 1000);

                OffsetWidthSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_OffsetWidthSlider", "Width Offset", "Width Offset", DsUi.GetOffsetWidth, DsUi.SetOffsetWidth);
                OffsetWidthSlider.SetLimits(-69, 69);

                OffsetHeightSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_OffsetHeightSlider", "Height Offset", "Height Offset", DsUi.GetOffsetHeight, DsUi.SetOffsetHeight);
                OffsetHeightSlider.SetLimits(-69, 69);

                OffsetDepthSlider = TerminalHelpers.AddSlider(comp?.Shield, "DS-C_OffsetDepthSlider", "Depth Offset", "Depth Offset", DsUi.GetOffsetDepth, DsUi.SetOffsetDepth);
                OffsetDepthSlider.SetLimits(-69, 69);

                TerminalHelpers.Separator(comp?.Shield, "DS-C_sep4");

                BatteryBoostCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_UseBatteries", "Ignore battery input power ", "Allow shields to fight with batteries for power", DsUi.GetBatteries, DsUi.SetBatteries);
                SendToHudCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_HideIcon", "Broadcast Shield Status To Hud", "Broadcast Shield Status To Nearby Friendly Huds", DsUi.GetSendToHud, DsUi.SetSendToHud);
                TerminalHelpers.Separator(comp?.Shield, "DS-C_sep5");
                ShellSelect = TerminalHelpers.AddCombobox(comp?.Shield, "DS-C_ShellSelect", "Select Shield Look", "Select shield's shell texture", DsUi.GetShell, DsUi.SetShell, DsUi.ListShell);

                ShellVisibility = TerminalHelpers.AddCombobox(comp?.Shield, "DS-C_ShellSelect", "Select Shield Visibility", "Determines when the shield is visible", DsUi.GetVisible, DsUi.SetVisible, DsUi.ListVisible);

                HideActiveCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_HideActive", "Hide Shield Health On Hit  ", "Hide Shield Health Grid On Hit", DsUi.GetHideActive, DsUi.SetHideActive);

                RefreshAnimationCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_RefreshAnimation", "Show Refresh Animation  ", "Show Random Refresh Animation", DsUi.GetRefreshAnimation, DsUi.SetRefreshAnimation);
                HitWaveAnimationCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_HitWaveAnimation", "Show Hit Wave Animation", "Show Wave Effect On Shield Damage", DsUi.GetHitWaveAnimation, DsUi.SetHitWaveAnimation);
                NoWarningSoundsCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_NoWarningSounds", "Disable audio warnings    ", "Supress shield audio warnings", DsUi.GetNoWarningSounds, DsUi.SetNoWarningSounds);
                DimShieldHitsCheckBox = TerminalHelpers.AddCheckbox(comp?.Shield, "DS-C_DimShieldHits", "Dim Incoming Hit Effects ", "Supress brightness of incoming hit effects", DsUi.GetDimShieldHits, DsUi.SetDimShieldHits);
                CreateAction<IMyUpgradeModule>(ToggleShield);

                CreateActionChargeRate<IMyUpgradeModule>(ChargeSlider);

                CreateAction<IMyUpgradeModule>(ExtendFit);
                CreateAction<IMyUpgradeModule>(SphereFit);
                CreateAction<IMyUpgradeModule>(FortifyShield);

                CreateAction<IMyUpgradeModule>(HideActiveCheckBox);
                CreateAction<IMyUpgradeModule>(RefreshAnimationCheckBox);
                CreateAction<IMyUpgradeModule>(HitWaveAnimationCheckBox);
                CreateAction<IMyUpgradeModule>(SendToHudCheckBox);
                CreateAction<IMyUpgradeModule>(BatteryBoostCheckBox);
                DsControl = true;
            }
            catch (Exception ex) { Log.Line($"Exception in CreateControlerUi: {ex}"); }
        }