示例#1
0
        internal static void SetValue(WeaponComponent comp, string setting, int v, long playerId)
        {
            var o            = comp.Data.Repo.Base.Set.Overrides;
            var enabled      = v > 0;
            var clearTargets = false;
            var resetState   = false;

            switch (setting)
            {
            case "MaxSize":
                o.MaxSize = v;
                break;

            case "MinSize":
                o.MinSize = v;
                break;

            case "SubSystems":
                o.SubSystem = (WeaponDefinition.TargetingDef.BlockTypes)v;
                break;

            case "MovementModes":
                o.MoveMode   = (GroupOverrides.MoveModes)v;
                clearTargets = true;
                break;

            case "ControlModes":
                o.Control    = (GroupOverrides.ControlModes)v;
                clearTargets = true;
                resetState   = true;
                break;

            case "FocusSubSystem":
                o.FocusSubSystem = enabled;
                break;

            case "FocusTargets":
                o.FocusTargets = enabled;
                clearTargets   = true;
                break;

            case "Unowned":
                o.Unowned = enabled;
                break;

            case "Friendly":
                o.Friendly   = enabled;
                clearTargets = true;
                break;

            case "Meteors":
                o.Meteors = enabled;
                break;

            case "Grids":
                o.Grids = enabled;
                break;

            case "Biologicals":
                o.Biologicals = enabled;
                break;

            case "Projectiles":
                o.Projectiles = enabled;
                clearTargets  = true;
                break;

            case "Neutrals":
                o.Neutrals   = enabled;
                clearTargets = true;
                break;

            case "Debug":
                o.Debug = enabled;
                break;

            case "Repel":
                o.Repel      = enabled;
                clearTargets = true;
                break;

            case "CameraChannel":
                o.CameraChannel = v;
                break;
            }

            ResetCompState(comp, playerId, clearTargets, resetState);

            if (comp.Session.MpActive)
            {
                comp.Session.SendCompBaseData(comp);
            }
        }
示例#2
0
        internal void SetValue(WeaponComponent comp, string setting, int value)
        {
            var o = comp.Set.Value.Overrides;

            switch (setting)
            {
            case "Active":
                o.Activate = value > 0;
                if (!o.Activate)
                {
                    ClearTargets(comp);
                }
                break;

            case "SubSystems":
                o.SubSystem = (TargetingDef.BlockTypes)value;
                break;

            case "FocusSubSystem":
                o.FocusSubSystem = value > 0;
                break;

            case "FocusTargets":
                o.FocusTargets = value > 0;
                break;

            case "ManualControl":
                o.ManualControl = value > 0;
                break;

            case "TargetPainter":
                o.TargetPainter = value > 0;
                break;

            case "Unowned":
                o.Unowned = value > 0;
                break;

            case "Friendly":
                o.Friendly = value > 0;
                break;

            case "Meteors":
                o.Meteors = value > 0;
                break;

            case "Biologicals":
                o.Biologicals = value > 0;
                break;

            case "Projectiles":
                o.Projectiles = value > 0;
                break;

            case "Neutrals":
                o.Neutrals = value > 0;
                break;
            }

            if (o.ManualControl || o.TargetPainter)
            {
                comp.State.Value.CurrentPlayerControl.PlayerId    = comp.Session.PlayerId;
                comp.State.Value.CurrentPlayerControl.ControlType = ControlType.Ui;

                if (o.ManualControl)
                {
                    o.TargetPainter = false;
                }
                else
                {
                    o.ManualControl = false;
                }

                comp.State.Value.ClickShoot = false;
                comp.State.Value.ShootOn    = false;
                for (int i = 0; i < comp.Platform.Weapons.Length; i++)
                {
                    comp.Platform.Weapons[i].State.ManualShoot = Platform.Weapon.TerminalActionState.ShootOff;
                }
            }
            else
            {
                comp.State.Value.CurrentPlayerControl.PlayerId    = -1;
                comp.State.Value.CurrentPlayerControl.ControlType = ControlType.None;
            }

            if (comp.Session.MpActive)
            {
                comp.Session.SendControlingPlayer(comp);
                comp.Session.SendOverRidesUpdate(comp, o);
            }
        }