Example #1
0
        public void Fire()
        {
            if (fireCounter == -1)
            {
                if (FireSalvoMS == 0)
                {
                    Guns.Items.ForEach(gun => { gun.Enabled = true; TerminalPropertiesHelper.SetValue(gun, "Shoot", true); });
                    if (WCAPI != null)
                    {
                        WCGuns.Items.ForEach(gun => { gun.Enabled = true; WCAPI.ToggleWeaponFire(gun, true, true); });
                    }
                }
                else
                {
                    NextSalvoFire = Context.LocalTime;
                }
            }
            fireCounter = 3;

            if (fireCounter > 0 &&
                Context.LocalTime >= NextSalvoFire)
            {
                NextSalvoFire += ScriptTime.FromMilliseconds(FireSalvoMS);
                var gun = Guns.GetAndAdvance();
                if (gun != null)
                {
                    gun.Enabled = true;
                    TerminalPropertiesHelper.SetValue(gun, "Shoot", true);
                }
                if (WCAPI != null)
                {
                    var wcGun = WCGuns.GetAndAdvance();
                    if (wcGun != null)
                    {
                        wcGun.Enabled = true;
                        WCAPI.ToggleWeaponFire(wcGun, true, true);
                    }
                }
            }
        }
        public void Update(int ticks = 1)
        {
            salvoTickCounter -= ticks;
            fireTicks        -= ticks;

            //statusBuilder.Clear();
            if (Weapons.Items.Count == 0)
            {
                return;
            }

            //statusBuilder.AppendLine("TGTS: " + targets.Count.ToString());
            while (Weapons.Items[0].Closed)
            {
                Weapons.Items.RemoveAtFast(0);
                if (Weapons.Items.Count == 0)
                {
                    return;
                }
            }

            if (fireTicks > 0)
            {
                if (salvoTicks <= 0)
                {
                    foreach (var weapon in Weapons.Items)
                    {
                        if (WCAPI != null)
                        {
                            Weapons.Items.ForEach(gun => { WCAPI.ToggleWeaponFire(gun, true, true); });
                        }
                        else
                        {
                            Weapons.Items.ForEach(gun => { TerminalPropertiesHelper.SetValue(gun, "Shoot", true); });
                        }
                    }
                }
                else
                {
                    if (salvoTickCounter < 0)
                    {
                        if (WCAPI != null)
                        {
                            var gun = Weapons.GetAndAdvance();
                            WCAPI.ToggleWeaponFire(gun, true, true);
                        }
                        else
                        {
                            var gun = Weapons.GetAndAdvance();
                            TerminalPropertiesHelper.SetValue(gun, "Shoot", true);
                        }

                        salvoTickCounter = salvoTicks;
                    }
                }
            }
            else
            {
                foreach (var weapon in Weapons.Items)
                {
                    if (WCAPI != null)
                    {
                        Weapons.Items.ForEach(gun => { WCAPI.ToggleWeaponFire(gun, false, true); });
                    }
                    else
                    {
                        Weapons.Items.ForEach(gun => { TerminalPropertiesHelper.SetValue(gun, "Shoot", false); });
                    }
                }
            }
        }