Exemplo n.º 1
0
        protected override IEnumerable <bool> E_Draw()
        {
            for (int frame = 0; ; frame++)
            {
                if (DDInput.A.GetInput() == 1)                 // ? ジャンプ押下
                {
                    break;
                }

                //int koma = frame;
                int koma = frame / 2;
                //int koma = frame / 3;

                if (Ground.I.Picture2.Tewi_ジャンプ中攻撃.Length <= koma)
                {
                    break;
                }

                double x          = Game.I.Player.X;
                double y          = Game.I.Player.Y;
                double xZoom      = Game.I.Player.FacingLeft ? -1.0 : 1.0;
                bool   facingLeft = Game.I.Player.FacingLeft;

                if (frame == 0)
                {
                    // TODO: 当たり判定設定
                }

                AttackCommon.ProcPlayer_移動();
                AttackCommon.ProcPlayer_Fall();

                AttackCommon.ProcPlayer_側面();
                AttackCommon.ProcPlayer_脳天();

                if (AttackCommon.ProcPlayer_接地())
                {
                    break;
                }

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.Tewi_ジャンプ中攻撃[koma],
                    x - DDGround.ICamera.X,
                    y - DDGround.ICamera.Y
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
        }
Exemplo n.º 2
0
        protected override IEnumerable <bool> E_Draw()
        {
            for (int frame = 0; ; frame++)
            {
                int koma = frame / 3;

                if (Ground.I.Picture2.さやか接地攻撃.Length <= koma)
                {
                    break;
                }

                // 移動
                {
                    const double SPEED = 1.0;

                    if (1 <= DDInput.DIR_4.GetInput())
                    {
                        Game.I.Player.X -= SPEED;
                    }

                    if (1 <= DDInput.DIR_6.GetInput())
                    {
                        Game.I.Player.X += SPEED;
                    }
                }

                AttackCommon.ProcPlayer_側面();

                double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0;

                if (frame == 6 * 3)
                {
                    Game.I.Shots.Add(new Shot_さやか接地攻撃(
                                         Game.I.Player.X + 80.0 * xZoom,
                                         Game.I.Player.Y,
                                         Game.I.Player.FacingLeft
                                         ));
                }

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.さやか接地攻撃[koma],
                    Game.I.Player.X - DDGround.ICamera.X,
                    Game.I.Player.Y - DDGround.ICamera.Y - 4.0
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
        }
Exemplo n.º 3
0
        protected override IEnumerable <bool> E_Draw()
        {
            for (int frame = 0; ; frame++)
            {
                if (1 <= frame && DDInput.B.GetInput() == 1)                 // ? 再発砲
                {
                    frame = 0;
                }

                double x          = Game.I.Player.X;
                double y          = Game.I.Player.Y;
                double xZoom      = Game.I.Player.FacingLeft ? -1.0 : 1.0;
                bool   facingLeft = Game.I.Player.FacingLeft;

                if (frame == 0)
                {
                    Game.I.Shots.Add(new Shot_ほむら滞空攻撃(
                                         x + 50.0 * xZoom,
                                         y - 18.0,
                                         facingLeft
                                         ));
                }

                int koma = Math.Min((frame + 15) / 4, Ground.I.Picture2.ほむら滞空攻撃.Length - 1);

                AttackCommon.ProcPlayer_移動();
                AttackCommon.ProcPlayer_Fall();

                AttackCommon.ProcPlayer_側面();
                AttackCommon.ProcPlayer_脳天();

                if (AttackCommon.ProcPlayer_接地())
                {
                    break;
                }

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.ほむら滞空攻撃[koma],
                    x - DDGround.ICamera.X,
                    y - DDGround.ICamera.Y
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
        }
Exemplo n.º 4
0
        protected override IEnumerable <bool> E_Draw()
        {
            for (int frame = 0; ; frame++)
            {
                int koma = frame / 4;

                if (3 <= koma)
                {
                    break;
                }

                // 移動
                {
                    const double SPEED = 3.0;

                    if (Game.I.Player.FacingLeft)
                    {
                        Game.I.Player.X -= SPEED;
                    }
                    else
                    {
                        Game.I.Player.X += SPEED;
                    }
                }

                AttackCommon.ProcPlayer_側面();

                double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0;

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.さやか突き[koma],
                    Game.I.Player.X - DDGround.ICamera.X + 30.0 * xZoom,
                    Game.I.Player.Y - DDGround.ICamera.Y
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
            for (int frame = 0; frame < 60; frame++)
            {
                if (
                    10 < frame &&
                    DDInput.C.GetInput() <= 0                     // ? 特殊攻撃ボタンを離した。
                    )
                {
                    break;
                }

                int koma = 3 + (frame / 3) % 3;

                // 移動
                {
                    const double SPEED_X = 12.0;
                    const double SPEED_Y = 2.0;

                    if (Game.I.Player.FacingLeft)
                    {
                        Game.I.Player.X -= SPEED_X;
                    }
                    else
                    {
                        Game.I.Player.X += SPEED_X;
                    }

                    if (1 <= DDInput.DIR_8.GetInput())
                    {
                        Game.I.Player.Y -= SPEED_Y;
                    }

                    if (1 <= DDInput.DIR_2.GetInput())
                    {
                        Game.I.Player.Y += SPEED_Y;
                    }
                }

                AttackCommon.ProcPlayer_脳天();
                AttackCommon.ProcPlayer_接地();

                if (AttackCommon.ProcPlayer_側面())
                {
                    break;
                }

                double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0;

                Game.I.Shots.Add(new Shot_さやか突き(
                                     Game.I.Player.X + 50.0 * xZoom,
                                     Game.I.Player.Y,
                                     Game.I.Player.FacingLeft
                                     ));

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.さやか突き[koma],
                    Game.I.Player.X - DDGround.ICamera.X,
                    Game.I.Player.Y - DDGround.ICamera.Y + 8.0
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
            for (int frame = 0; ; frame++)
            {
                int koma = 6 + frame / 2;

                if (10 <= koma)
                {
                    break;
                }

                double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0;

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture2.さやか突き[koma],
                    Game.I.Player.X - DDGround.ICamera.X + 30.0 * xZoom,
                    Game.I.Player.Y - DDGround.ICamera.Y
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }

            // 後処理
            {
                Game.I.Player.YSpeed = 0.0;
            }
        }
Exemplo n.º 5
0
        protected override IEnumerable <bool> E_Draw()
        {
            DDGround.EL.Add(SCommon.Supplier(Effects.スライディング(Game.I.Player.X, Game.I.Player.Y + 20.0)));

            for (int frame = 0; ; frame++)
            {
                if (10 < frame)                                                         // ? 最低持続時間経過
                {
                    if (AttackCommon.GetPlayer_側面(4) != 3)                              // ? ここは立ち上がれる場所である。
                    {
                        if (DDInput.A.GetInput() <= 0 || DDInput.DIR_2.GetInput() <= 0) // ? 下・ジャンプボタン少なくともどちらかを離している。
                        {
                            break;
                        }
                    }
                }

                if (AttackCommon.GetPlayer_側面(2) != 0)                 // ? 壁に当たっている。
                {
                    if (AttackCommon.GetPlayer_側面(4) != 3)             // ? ここは立ち上がれる場所である。
                    {
                        if (DDInput.A.GetInput() == 1)                 // ? ジャンプボタンを押した。
                        {
                            break;
                        }
                    }
                }

                if (1 <= DDInput.DIR_4.GetInput())
                {
                    Game.I.Player.FacingLeft = true;
                }

                if (1 <= DDInput.DIR_6.GetInput())
                {
                    Game.I.Player.FacingLeft = false;
                }

                // 移動
                {
                    const double SPEED = 10.0;

                    if (Game.I.Player.FacingLeft)
                    {
                        Game.I.Player.X -= SPEED;
                    }
                    else
                    {
                        Game.I.Player.X += SPEED;
                    }
                }

                //AttackCommon.ProcPlayer_移動();
                AttackCommon.ProcPlayer_Fall();
                AttackCommon.ProcPlayer_側面(2);
                AttackCommon.ProcPlayer_脳天();

                if (!AttackCommon.ProcPlayer_接地())
                {
                    //Game.I.Player.AirborneFrame = 1; // 崖の淵に立ってしまわないように滞空状態にする。
                    Game.I.Player.AirborneFrame = SCommon.IMAX / 2;                     // ジャンプしてしまわないように十分大きな値を設定する。
                    break;
                }

                double xZoom = Game.I.Player.FacingLeft ? -1.0 : 1.0;

                DDDraw.SetTaskList(Game.I.Player.Draw_EL);
                DDDraw.DrawBegin(
                    Ground.I.Picture.Chara_A01_Sliding,
                    Game.I.Player.X - DDGround.ICamera.X,
                    Game.I.Player.Y - DDGround.ICamera.Y
                    );
                DDDraw.DrawZoom_X(xZoom);
                DDDraw.DrawEnd();
                DDDraw.Reset();

                yield return(true);
            }
        }