예제 #1
0
        public void Phase3Shot()
        {
            for (var i = 0; i < 10; ++i)
            {
                for (var j = 0; j < 5; ++j)
                {
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq, BulletOrigin, 51)
                    {
                        SpawnDelay = 5 + j
                    };
                    bullet.Shoot(_angle2 + j * 4, 0);
                    pq.AddTask(j * 4, 1f, null, 0f, .1f, 3f);
                }

                for (var j = 0; j < 5; ++j)
                {
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq, BulletOrigin, 51)
                    {
                        SpawnDelay = 5 + j
                    };
                    bullet.Shoot(_angle2 - j * 4, 0);
                    pq.AddTask(j * 4, 1f, null, 0f, .1f, 3f);
                }

                _angle2 += 36f; //360f / 10f;
            }
        }
예제 #2
0
        public void PlayerPrison()
        {
            float angle = 0;

            for (var i = 0; i < 120; ++i)
            {
                var radian = MathHelper.ToRadians(angle);
                var pq     = ParameterQueue.GetInstance();
                var bullet = new Bullet(pq,
                                        new Vector2(Player.PlayerPosX + 150f * (float)Math.Cos(radian),
                                                    Player.PlayerPosY + 150f * (float)Math.Sin(radian)), 50,
                                        BlendState.Additive)
                {
                    Acceleration = .1f, SpeedLimit = 0, AutomaticCollision = false
                };
                bullet.Shoot(angle, -3);
                pq.AddTask(110, 0f, angle, 0f, 0f, 0f);
                pq.AddTask(380, -1f, angle, .2f, 0f, 0f);
                pq.AddTask(700, null, null, 0f, -.5f, -3);
                pq = ParameterQueue.GetInstance();
                var bullet2 = new Bullet(pq,
                                         new Vector2(Player.PlayerPosX + 90f * (float)Math.Cos(radian),
                                                     Player.PlayerPosY + 90f * (float)Math.Sin(radian)), 50,
                                         BlendState.Additive)
                {
                    Acceleration = .05f, SpeedLimit = 0, AutomaticCollision = false
                };
                bullet2.Shoot(angle, -2);
                pq.AddTask(110, 0f, angle, 0f, 0f, 0f);
                pq.AddTask(380, 1, angle, .05f, 0f, 0f);
                pq.AddTask(700, null, null, 0f, .5f, 3f);

                angle += 3f; //360 / 120;
            }
        }
        public object Convert(ICommandContext context, ParameterQueue queue)
        {
            string parameter = queue.Dequeue();

            if (!parameter.StartsWith('"'))
            {
                return(parameter);
            }

            // concat parameters between quotes
            // "this will be passed as a single parameter"
            var sb = new StringBuilder();

            parameter = parameter.Substring(1);

            while (true)
            {
                if (parameter.EndsWith('"'))
                {
                    sb.Append(parameter.Substring(0, parameter.Length - 1));
                    break;
                }

                sb.Append(parameter);
                if (queue.Count == 0)
                {
                    break;
                }

                sb.Append(" ");
                parameter = queue.Dequeue();
            }

            return(sb.ToString());
        }
        public virtual object Convert(ICommandContext context, ParameterQueue queue)
        {
            string parameter = queue.Dequeue();

            if (!parameter.StartsWith('"'))
            {
                return(parameter);
            }

            // concat parameters between quotes
            // "this will be passed as a single parameter"
            var sb = new StringBuilder();

            parameter = parameter[1..];
예제 #5
0
        public void ButterflyCircleShot(int modifier)
        {
            float angle = 0;

            for (float i = 0; i < 10; ++i)
            {
                for (var j = 0; j < 60; ++j)
                {
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq, BulletOrigin, 228);
                    bullet.SetParameters(null, null, -3f * modifier, -.5f, 2f);
                    bullet.Shoot(angle * modifier, 5f);
                    pq.AddTask(60, 2f, null, 1f * modifier, .2f, 2f + i / 3f);
                    pq.AddTask(120, null, null, 0f, 0f, 0f);
                    angle += 6f; //360 / 60;
                }
            }
        }
예제 #6
0
 public void ButterflyBarrage2(int modifier)
 {
     for (float i = 0; i < 20; ++i)
     {
         for (var j = 0; j < 30; ++j)
         {
             var pq     = ParameterQueue.GetInstance();
             var bullet = new Bullet(pq, BulletOrigin, 228)
             {
                 TurnSpeed = -3 * modifier, Acceleration = -.2f, SpeedLimit = 1
             };
             bullet.Shoot(_angle * modifier, 5);
             pq.AddTask(60, 2, null, .5f * modifier, .1f, 1 + i / 4f);
             pq.AddTask(120, null, null, 0f, 0f, 0f);
             _angle += 12f; //360f / 30;
         }
     }
 }
예제 #7
0
        public IEnumerator <int> Pentagram(params float[] parameters)
        {
            var mod  = parameters[0];
            var rand = VariableProvider.RandomSeed;

            for (var j = 0; j < 50; ++j)
            {
                for (var i = 0; i < 15; ++i)
                {
                    var radian = MathHelper.ToRadians(_angle);
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq,
                                            new Vector2(BulletOrigin.X - 120f * (float)Math.Cos(radian),
                                                        BulletOrigin.Y - 120f * (float)Math.Sin(radian)), 172,
                                            BlendState.Additive);
                    bullet.SetParameters(null, null, mod, -.1f, 1);
                    bullet.AutomaticCollision = false;
                    bullet.Shoot(_angle, 5);
                    pq.AddTask(150, rand.NextFloat(1f, 1.5f), _angle, rand.NextFloat(-.2f, .2f), 0, 0);
                    _angle += 72f; //360f / 5;
                }

                for (var i = 0; i < 18; ++i)
                {
                    var radian = MathHelper.ToRadians(_angle3);
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq,
                                            new Vector2(BulletOrigin.X + 120f * (float)Math.Cos(radian),
                                                        BulletOrigin.Y + 120f * (float)Math.Sin(radian)), 176,
                                            BlendState.Additive)
                    {
                        AutomaticCollision = false
                    };
                    bullet.SetParameters(null, null, -1 * mod, 0, 0);
                    bullet.Shoot(_angle3 + 90, -1 * mod);
                    pq.AddTask(120, mod, _angle3 + 90, 0, 0, 0);
                    _angle3 += 20f; //360 / 18;
                }

                _angle3 += 5f * mod;
                _angle  += 5f * mod;
                yield return(10);
            }
        }
예제 #8
0
        public IEnumerator <int> BulletFlower(params float[] parameters)
        {
            var mod  = parameters[0];
            var rand = VariableProvider.RandomSeed;

            for (var j = 0; j < 10; ++j)
            {
                for (var i = 0; i < 80; ++i)
                {
                    var pq     = ParameterQueue.GetInstance();
                    var bullet = new Bullet(pq, BulletOrigin, 51);
                    bullet.SetParameters(null, null, 0, -.1f, 1);
                    bullet.AutomaticCollision = false;
                    bullet.Shoot(_angle2, 5);
                    pq.AddTask(60, 1, _angle2, 0, -.2f, -1);
                    pq.AddTask(120, -1, _angle2, -2 * mod, .2f, 2);
                    pq.AddTask(180, -1, _angle2, rand.NextFloat(-.1f, .1f), -.1f, rand.NextFloat(-3, -1));
                    _angle2 += 6f; //360f / 60;
                }

                yield return(6);
            }
        }
예제 #9
0
 public override object Convert(ICommandContext context, ParameterQueue queue)
 {
     return(((string)base.Convert(context, queue)).ToLower());
 }
 public object Convert(ICommandContext context, ParameterQueue queue)
 {
     return(ushort.Parse(queue.Dequeue()));
 }
 public object Convert(ICommandContext context, ParameterQueue queue)
 {
     return(new Vector3(float.Parse(queue.Dequeue()), float.Parse(queue.Dequeue()), float.Parse(queue.Dequeue())));
 }
예제 #12
0
 public object Convert(ICommandContext context, ParameterQueue queue)
 {
     return(Enum.Parse(typeof(T), queue.Dequeue()));
 }
예제 #13
0
 /// <summary>
 /// Invoke <see cref="CommandCategory"/> with the supplied <see cref="ICommandContext"/> and <see cref="ParameterQueue"/>.
 /// </summary>
 public override CommandResult Invoke(ICommandContext context, ParameterQueue queue)
 {
     CommandManager.Instance.HandleHelp(context, queue);
     return(CommandResult.Ok);
 }