Ejemplo n.º 1
0
        private void InitSequences()
        {
            var   worldMap        = SpaceUtil.WorldMap;
            float startYPosition  = worldMap.Top.y + SpriteMap.HeightHalf;
            float targetYPosition = (worldMap.Center.y + (worldMap.Top.y * 2f)) * 0.333f;

            float   yDiff        = targetYPosition - startYPosition;
            Vector3 moveDistance = new Vector3(0, yDiff, 0);

            float rotateTimeHalf = RotateTime * 0.5f;

            // Initial sequence
            var moveDown          = new MoveBy(this, moveDistance, InitialTravelTime);
            var setVelocity       = new GameTaskFunc(this, () => Velocity = new Vector2(0, -FinalTravelSpeed));
            var initialRotateLeft = new RotateTo(this, AngleDown, MinAngle, rotateTimeHalf);

            var initialSequence = new Sequence(moveDown, setVelocity, initialRotateLeft);

            // Infinite sequence
            var fireLeft      = new GameTaskFunc(this, FireLeft);
            var rotateMiddle1 = new RotateTo(this, MinAngle, AngleDown, rotateTimeHalf);
            var fireDown      = new GameTaskFunc(this, FireDown);
            var rotateRight   = new RotateTo(this, AngleDown, MaxAngle, rotateTimeHalf);
            var fireRight     = new GameTaskFunc(this, FireRight);
            var rotateMiddle2 = new RotateTo(this, MaxAngle, AngleDown, rotateTimeHalf);
            var rotateLeft    = new RotateTo(this, AngleDown, MinAngle, rotateTimeHalf);

            var infiniteSequence = new Sequence(fireLeft, rotateMiddle1, fireDown,
                                                rotateRight, fireRight, rotateMiddle2, fireDown, rotateLeft);

            var repeat = new RepeatForever(infiniteSequence);

            Behavior = new EndlessSequence(repeat, initialSequence);
        }
Ejemplo n.º 2
0
        public async Task ShowStartMenu(bool gameOver)
        {
            var cache = Application.ResourceCache;

            bigAircraft = Node.CreateChild();
            var model = bigAircraft.CreateComponent <StaticModel>();

            if (gameOver)
            {
                model.Model = cache.GetModel(Assets.Models.Enemy1);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Enemy1).Clone(""));
                bigAircraft.SetScale(0.3f);
                bigAircraft.Rotate(new Quaternion(180, 90, 20), TransformSpace.Local);
            }
            else
            {
                model.Model = cache.GetModel(Assets.Models.Player);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Player).Clone(""));
                bigAircraft.SetScale(1f);
                bigAircraft.Rotate(new Quaternion(0, 40, -50), TransformSpace.Local);
            }

            bigAircraft.Position = new Vector3(10, 2, 10);
            bigAircraft.RunActions(new RepeatForever(new Sequence(new RotateBy(1f, 0f, 0f, 5f), new RotateBy(1f, 0f, 0f, -5f))));

            //TODO: rotor should be defined in the model + animation
            rotor = bigAircraft.CreateChild();
            var rotorModel = rotor.CreateComponent <Box>();

            rotorModel.Color = Color.White;
            rotor.Scale      = new Vector3(0.1f, 1.5f, 0.1f);
            rotor.Position   = new Vector3(0, 0, -1.3f);
            var rotorAction = new RepeatForever(new RotateBy(1f, 0, 0, 360f * 6));           //RPM

            rotor.RunActions(rotorAction);

            menuLight          = bigAircraft.CreateChild();
            menuLight.Position = new Vector3(-3, 6, 2);
            menuLight.AddComponent(new Light {
                LightType = LightType.Point, Brightness = 0.3f
            });

            await bigAircraft.RunActionsAsync(new EaseIn(new MoveBy(1f, new Vector3(-10, -2, -10)), 2));

            InitMenu(cache);
            InitSettings(cache);

            topPlayers = new Text();
            topPlayers.HorizontalAlignment = HorizontalAlignment.Center;


            topPlayers.SetFont(cache.GetFont(Assets.Fonts.Font), Application.Graphics.Width / 30);
            Application.UI.Root.AddChild(topPlayers);



            menuTaskSource = new TaskCompletionSource <bool>();
            finished       = false;
            await menuTaskSource.Task;
        }
Ejemplo n.º 3
0
        public async Task ShowStartMenu(bool gameOver)
        {
            var cache = Application.ResourceCache;

            _bigAircraft = Node.CreateChild();
            var model = _bigAircraft.CreateComponent <StaticModel>();

            if (gameOver)
            {
                model.Model = cache.GetModel(Assets.Models.Enemy1);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Enemy1).Clone());
                _bigAircraft.SetScale(0.3f);
                _bigAircraft.Rotate(new Quaternion(180, 90, 20));
            }
            else
            {
                model.Model = cache.GetModel(Assets.Models.Player);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Player).Clone());
                _bigAircraft.SetScale(1f);
                _bigAircraft.Rotate(new Quaternion(0, 40, -50));
            }

            _bigAircraft.Position = new Vector3(10, 2, 10);
            _bigAircraft.RunActions(new RepeatForever(new Sequence(new RotateBy(1f, 0f, 0f, 5f), new RotateBy(1f, 0f, 0f, -5f))));

            //TODO: rotor should be defined in the model + animation
            _rotor = _bigAircraft.CreateChild();
            var rotorModel = _rotor.CreateComponent <Box>();

            rotorModel.Color = Color.White;
            _rotor.Scale     = new Vector3(0.1f, 1.5f, 0.1f);
            _rotor.Position  = new Vector3(0, 0, -1.3f);
            var rotorAction = new RepeatForever(new RotateBy(1f, 0, 0, 360f * 6));           //RPM

            _rotor.RunActions(rotorAction);

            _menuLight          = _bigAircraft.CreateChild();
            _menuLight.Position = new Vector3(-3, 6, 2);
            _menuLight.AddComponent(new Light {
                LightType = LightType.Point, Brightness = 0.3f
            });

            await _bigAircraft.RunActionsAsync(new EaseIn(new MoveBy(1f, new Vector3(-10, -2, -10)), 2));

            _textBlock = new Text();
            _textBlock.HorizontalAlignment = HorizontalAlignment.Center;
            _textBlock.VerticalAlignment   = VerticalAlignment.Bottom;
            var str  = gameOver ? "游戏结束" : "点击开始";
            var font = cache.GetFont(Assets.Fonts.ChineseFont);

            _textBlock.SetFont(font, 36);
            _textBlock.SetTextFix(str);
            Application.UI.Root.AddChild(_textBlock);

            _menuTaskSource = new TaskCompletionSource <bool>();
            _finished       = false;

            await _menuTaskSource.Task;
        }
            private RepeatForever Setup(ITask child)
            {
                var repeat = new RepeatForever();

                repeat.AddChild(child);

                return(repeat);
            }
Ejemplo n.º 5
0
        public async Task ShowStartMenu(bool gameOver)
        {
            var cache = Application.ResourceCache;

            bigAircraft = Node.CreateChild();
            var model = bigAircraft.CreateComponent <StaticModel>();

            if (gameOver)
            {
                model.Model = cache.GetModel(Assets.Models.Enemy1);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Enemy1).Clone(""));
                bigAircraft.SetScale(0.3f);
                bigAircraft.Rotate(new Quaternion(180, 90, 20), TransformSpace.Local);
            }
            else
            {
                model.Model = cache.GetModel(Assets.Models.Player);
                model.SetMaterial(cache.GetMaterial(Assets.Materials.Player).Clone(""));
                bigAircraft.SetScale(1f);
                bigAircraft.Rotate(new Quaternion(0, 40, -50), TransformSpace.Local);
            }

            bigAircraft.Position = new Vector3(10, 2, 10);
            bigAircraft.RunActions(new RepeatForever(new Sequence(new RotateBy(1f, 0f, 0f, 5f), new RotateBy(1f, 0f, 0f, -5f))));
            // rotor dev'essere definito nel modello + animazione
            rotor = bigAircraft.CreateChild();
            var rotorModel = rotor.CreateComponent <Box>();

            rotorModel.Color = Color.White;
            rotor.Scale      = new Vector3(0.1f, 1.5f, 0.1f);
            rotor.Position   = new Vector3(0, 0, -1.3f);
            var rotorAction = new RepeatForever(new RotateBy(1f, 0, 0, 360f * 6));

            // RPM
            rotor.RunActions(rotorAction);
            menuLight          = bigAircraft.CreateChild();
            menuLight.Position = new Vector3(-3, 6, 2);
            menuLight.AddComponent(new Light {
                LightType = LightType.Point, Brightness = 0.3f
            });
            await bigAircraft.RunActionsAsync(new EaseIn(new MoveBy(1f, new Vector3(-10, -2, -10)), 2));

            textBlock = new Text();
            textBlock.HorizontalAlignment = HorizontalAlignment.Center;
            textBlock.VerticalAlignment   = VerticalAlignment.Bottom;
            textBlock.Value = gameOver ? "FINE PARTITA" : "TOCCARE PER INIZIARE";
            textBlock.SetFont(cache.GetFont(Assets.Fonts.Font), Application.Graphics.Width / 15);
            Application.UI.Root.AddChild(textBlock);
            menuTaskSource = new TaskCompletionSource <bool>();
            finished       = false;
            await menuTaskSource.Task;
        }
Ejemplo n.º 6
0
    public virtual void DoAnimate(int id, Function onSpecial, int loop, Function onFinished, float speed = 1.0f, bool stopAllFirst = false)
    {
        if (stopAllFirst)
        {
            stopAllActions();
        }
        ActionInterval act;

        cca.Animation ani;
        if (!m_animations.TryGetValue(id, out ani))
        {
            if (id == kActionDie)
            {
                act = new FadeOut(0.1f);
            }
            else
            {
                act = new DelayTime(0.2f);
            }
            if (onSpecial != null)
            {
                act = new Sequence(act, new CallFunc(onSpecial));
            }
        }
        else
        {
            act = new Animate(ani, delegate(int index, ref object data) {
                if (onSpecial != null)
                {
                    onSpecial();
                }
            });
        }

        if (loop == CONST_LOOP_FOREVER)
        {
            act = new RepeatForever(act);
        }
        else
        {
            act = new Sequence(new Repeat(act, (uint)loop), new CallFunc(onFinished));
        }

        Speed action = new Speed(act, speed);

        action.tag = id;
        runAction(action);
    }
Ejemplo n.º 7
0
    public virtual void DoLinkUnitToUnit(UnitNode from, UnitNode to, int id, Function onSpecial, int loop, Function onFinished)
    {
        ActionInterval act;

        cca.Animation ani;
        if (!m_animations.TryGetValue(id, out ani))
        {
            if (id == kActionDie)
            {
                act = new FadeOut(0.1f);
            }
            else
            {
                act = new DelayTime(0.2f);
            }
            if (onSpecial != null)
            {
                act = new Sequence(act, new CallFunc(onSpecial));
            }
        }
        else
        {
            visible = false;
            act     = new LinkAnimate(ani, delegate(int index, ref object data) {
                if (onSpecial != null)
                {
                    onSpecial();
                }
            }, from, to);
        }

        if (loop == CONST_LOOP_FOREVER)
        {
            act = new RepeatForever(act);
        }
        else
        {
            act = new Sequence(new Repeat(act, (uint)loop), new CallFunc(onFinished));
        }

        //m_node.stopActionByTag(id);
        act.tag = id;
        runAction(act);
    }
Ejemplo n.º 8
0
        public void CreateMenu()
        {
            if (_scene == null)
            {
                _scene = new Scene();
            }
            _scene.CreateComponent <Octree>();

            var physics = _scene.CreateComponent <PhysicsWorld>();

            physics.SetGravity(new Vector3(0, 0, 0));
            var cameraNode = _scene.CreateChild();

            cameraNode.Position = (new Vector3(0.0f, 0f, -500.0f));
            cameraNode.Rotate(new Quaternion(10, 0, 0));
            cameraNode.CreateComponent <Camera>();
            var Viewport = new Viewport(Context, _scene, cameraNode.GetComponent <Camera>(), null);

            if (Application.Platform != Platforms.Android && Application.Platform != Platforms.iOS)
            {
                RenderPath effectRenderPath = Viewport.RenderPath.Clone();
                var        fxaaRp           = Application.ResourceCache.GetXmlFile(Assets.PostProcess.FXAA3);
                effectRenderPath.Append(fxaaRp);
                Viewport.RenderPath = effectRenderPath;
            }
            Application.Renderer.SetViewport(0, Viewport);

            var zoneNode = _scene.CreateChild();
            var zone     = zoneNode.CreateComponent <Zone>();

            zone.SetBoundingBox(new BoundingBox(-300.0f, 300.0f));
            zone.AmbientColor = new Color(1f, 1f, 1f);

            var plannerNode = _scene.CreateChild();

            plannerNode.Position = new Vector3(0, -50, 0);
            plannerNode.Scale    = new Vector3(10, 10, 10);
            var planner = plannerNode.CreateComponent <StaticModel>();

            planner.Model    = Application.ResourceCache.GetModel(Assets.Models.VerBot);
            planner.Material = Application.ResourceCache.GetMaterial(Assets.Materials.VerBot);
            planner.SetMaterial(Application.ResourceCache.GetMaterial(Assets.Materials.VerBot));
            var movement = new RepeatForever(new RotateBy(1, 0, 5, 0));

            plannerNode.RunActionsAsync(movement);
            // Lights:
            var _lightNode = _scene.CreateChild();

            _lightNode.Position = new Vector3(0.0f, 0f, -5.0f);
            var light = _lightNode.CreateComponent <Light>();

            light.Range      = 1200;
            light.Brightness = 2;

            if (ResultString != "")
            {
                Text ResultText = new Text();
                ResultText.HorizontalAlignment = HorizontalAlignment.Center;
                ResultText.VerticalAlignment   = VerticalAlignment.Center;
                ResultText.Value = ResultString;
                ResultText.SetFont(Application.ResourceCache.GetFont(Assets.Fonts.Font), Application.Graphics.Width / 20);
                Application.UI.Root.AddChild(ResultText);
            }

            Text WelcomeText = new Text();

            WelcomeText.HorizontalAlignment = HorizontalAlignment.Center;
            WelcomeText.VerticalAlignment   = VerticalAlignment.Center;
            WelcomeText.Position            = new IntVector2(WelcomeText.Position.X, 150);
            WelcomeText.Value = WelcomeString;
            WelcomeText.SetFont(Application.ResourceCache.GetFont(Assets.Fonts.Font), Application.Graphics.Width / 20);
            Application.UI.Root.AddChild(WelcomeText);
        }
 public void Setup_repeater()
 {
     repeater = new RepeatForever();
 }
Ejemplo n.º 10
0
    public static Scene MakeTestActionsScene()
    {
        TextureInfo Characters = new TextureInfo(new Texture2D("/Application/Sample/GameEngine2D/FeatureCatalog/data/PlanetCute/Objects.png", false), new Vector2i(7, 3));

        float world_scale = 0.036f;

        var sprite = new SpriteTile();

        sprite.TextureInfo = Characters;
        sprite.TileIndex1D = 2;
        sprite.Quad.S      = sprite.CalcSizeInPixels() * world_scale;
        sprite.CenterSprite();
        sprite.Color     = new Vector4(1.0f, 1.0f, 1.0f, 0.75f);
        sprite.BlendMode = BlendMode.Normal;

        var scene = new Scene()
        {
            Name = "Action tests"
        };

        scene.AddChild(sprite);

        var pos = new Vector2(0.0f, 0.0f);

        int writing_color_tag    = 333;
        int writing_position_tag = 65406;

        AddButton(scene, "MoveTo (0,0)", ref pos, () => { sprite.RunAction(new MoveTo(new Vector2(0.0f, 0.0f), 0.1f)); });
        AddButton(scene, "MoveBy (3,0)", ref pos, () => { sprite.RunAction(new MoveBy(new Vector2(3.0f, 0.0f), 0.1f)); });
        AddButton(scene, "ScaleBy (2,2)", ref pos, () => { sprite.RunAction(new ScaleBy(new Vector2(2.0f, 2.0f), 0.1f)); });
        AddButton(scene, "ScaleBy (0.5,0.5)", ref pos, () => { sprite.RunAction(new ScaleBy(new Vector2(0.5f, 0.5f), 0.1f)); });

        AddButton(scene, "TintTo White", ref pos, () =>
        {
            // prevent from running an other action that writes the color
            if (sprite.GetActionByTag(writing_color_tag) != null)
            {
                sprite.StopActionByTag(writing_color_tag);
            }

            sprite.RunAction(new TintTo(Math.SetAlpha(Colors.White, 0.75f), 2.0f)
            {
                Tag = writing_color_tag
            });
        }
                  );

        AddButton(scene, "TintTo Blue", ref pos, () =>
        {
            // prevent from running an other action that writes the color
            if (sprite.GetActionByTag(writing_color_tag) != null)
            {
                sprite.StopActionByTag(writing_color_tag);
            }

            sprite.RunAction(new TintTo(Math.SetAlpha(Colors.Blue, 0.75f), 2.0f)
            {
                Tag = writing_color_tag
            });
        }
                  );

        AddButton(scene, "Pingpong colors", ref pos, () =>

        {
            // prevent from running an other action that writes the color
            if (sprite.GetActionByTag(writing_color_tag) != null)
            {
                sprite.StopActionByTag(writing_color_tag);
            }

            var action12 = new TintTo(Colors.Green, 0.5f)
            {
                Tween = (t) => FMath.Sin(t * Math.Pi * 0.5f),
            };

            var action13 = new TintTo(Colors.Magenta, 0.5f)
            {
                Tween = (t) => FMath.Sin(t * Math.Pi * 0.5f),
            };

            var seq = new Sequence();
            seq.Add(action12);
            seq.Add(action13);
            var repeat0 = new RepeatForever()
            {
                InnerAction = seq, Tag = writing_color_tag
            };
            sprite.RunAction(repeat0);
        }
                  );

        AddButton(scene, "Pingpong position", ref pos, () =>

        {
            // prevent from running the same action twice
            // (we could also just hold an Action object somewhere and re-run, so that this check wouldn't be needed)
            if (sprite.GetActionByTag(writing_position_tag) != null)
            {
                sprite.StopActionByTag(writing_position_tag);
            }

            var action12 = new MoveTo(new Vector2(-5, 0), 0.5f)
            {
                Tween = (t) => FMath.Sin(t * Math.Pi * 0.5f),
            };

            var action13 = new MoveTo(new Vector2(5, 0), 0.5f)
            {
                Tween = (t) => FMath.Sin(t * Math.Pi * 0.5f),
            };

            var seq = new Sequence();
            seq.Add(action12);
            seq.Add(action13);
            var repeat0 = new RepeatForever()
            {
                InnerAction = seq, Tag = writing_position_tag
            };

            sprite.RunAction(repeat0);
        }
                  );

        AddButton(scene, "StopAllActions", ref pos, () => sprite.StopAllActions());

        scene.RegisterDisposeOnExit((System.IDisposable)Characters);

        return(scene);
    }
Ejemplo n.º 11
0
        public void StartEffect()
        {
            if ( Image.GetActionByTag( BLINK_COLOR_TAG ) != null )
                Image.StopActionByTag( BLINK_COLOR_TAG );

            var actionBlinkWhite = new TintTo( Colors.White, 0.2f )
            {
                Tween = (t) => Sce.PlayStation.Core.FMath.Sin(t*Math.Pi*0.5f),
            };

            var actionBlinkGrey = new TintTo( Colors.Grey50, 0.20f )
            {
                Tween = (t) => Sce.PlayStation.Core.FMath.Sin(t*Math.Pi*0.5f),
            };

            var seq = new Sequence();
            seq.Add( actionBlinkWhite );
            seq.Add( actionBlinkGrey );
            var repeat0 = new RepeatForever { InnerAction = seq, Tag = BLINK_COLOR_TAG };

            Image.RunAction( repeat0 );
        }
Ejemplo n.º 12
0
        /// <summary>
        /// ボスを生成
        /// </summary>
        /// <param name='enemyId'>
        /// Enemy identifier.
        /// </param>
        /// <param name='hp'>
        /// Hp.
        /// </param>
        /// <param name='startTime'>
        /// Start time.
        /// </param>
        public static void SetBossEnemy(EnemyType enemyId, int hp, float startTime)
        {
            var seq = new Sequence();
            var point_center = new Vector2(700,272);
            var point_under = new Vector2(700,140);
            var point_top = new Vector2(700,404);
            var point_forward = new Vector2(400,272);

            seq.Add(new MoveTo(point_center,2));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeCircleBullets(point_center.X,point_center.Y,10,2)));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeCircleBullets(point_center.X,point_center.Y,7,5)));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeCircleBullets(point_center.X,point_center.Y,13,10)));
            seq.Add(new MoveTo(point_forward,3));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSpiralBullets(point_forward.X,point_forward.Y,17,5)));
            seq.Add(new MoveTo(point_under,3));

            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,0)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,1)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,2)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,3)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,4)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,5)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,6)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,7)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,6)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,5)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,4)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,3)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,2)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,1)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,0)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,1)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,2)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,3)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,4)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,5)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,6)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,7)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,6)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,5)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,4)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,3)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,2)));
            seq.Add(new MoveTo(point_under,0.2f));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeSingleBullet(point_under.X,point_under.Y,-3,1)));

            seq.Add(new MoveTo(point_top,3));
            seq.Add(new CallFunc(()=>AimedBlockBullet(point_top)));

            seq.Add(new MoveTo(point_center,3));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeLineBullets(point_center.X,point_center.Y,10,50,-5,0)));
            seq.Add(new MoveTo(point_center,1));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeLineBullets(point_center.X,point_center.Y,10,40,-5,0)));
            seq.Add(new MoveTo(point_center,1));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeLineBullets(point_center.X,point_center.Y,10,50,-5,0)));
            seq.Add(new MoveTo(point_center,1));
            seq.Add(new CallFunc(()=>EnemyBullet.MakeLineBullets(point_center.X,point_center.Y,10,40,-5,0)));

            var repeat = new RepeatForever(){
                InnerAction = seq
            };

            Enemy.MakeNewEnemy(enemyId,960,272,BulletType.Boss,999999,hp,999999).Sprite.RunAction(repeat);
        }