Example #1
0
    /// <summary>
    /// 判定の描画
    /// </summary>
    /// <returns></returns>
    public override bool Draw()
    {
        if (_endmillis < now.millis)
        {
            return(false);
        }
        int x = datacalc.ScreenCenterLine;

        if (now.millis - _startmillis < 100)
        {
            DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, (int)((now.millis - _startmillis) * 2.5));
            if (_lr == CdjData.Left)
            {
                x -= (int)((100 - now.millis + _startmillis) * 2);
            }
            else
            {
                x += (int)((100 - now.millis + _startmillis) * 2);
            }
        }
        DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
        if (_endmillis - now.millis < 250)
        {
            DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, (int)((_endmillis - now.millis)));
        }
        if (drawobj != null)
        {
            drawobj.DrawZoomRotate(x, (int)(datacalc.JudgeLineY - 20 - drawobj.height * _zoom), _zoom, 0);
        }
        DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
        return(true);
    }
Example #2
0
    /// <summary>
    /// 判定の描画
    /// </summary>
    /// <returns></returns>
    public override bool Draw()
    {
        if (_endmillis < now.millis)
        {
            return(false);
        }
        double zoom = (1 - ((double)(now.millis - _startmillis) / (_endmillis - _startmillis)));

        DX.SetDrawBlendMode(DX.DX_BLENDMODE_ADD, (int)(zoom * 180));
        drawobj.DrawZoomRotate(_x, _y, zoom * 2.5, 0);
        DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
        return(true);
    }
Example #3
0
    public override bool Draw()
    {
        //double deltasec = -0.1;
        double sec    = (double)(now.millis - this._startmillis) / 100;
        double millis = now.millis - this._startmillis;

        if (now.millis > this._endmillis)
        {
            return(false);
        }

        {
            if (sec > 0)
            {
                int y = (int)(_y + sec * _vy + G * sec * sec);
                int x = (int)(_x + sec * _vx);
                if (x > 0 && x < datacalc.ScreenWidth && y > 0 && y < datacalc.ScreenHeight)
                {
                    int toumei = (int)((this._endmillis - now.millis) * 2);
                    if (toumei > 250)
                    {
                        DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
                    }
                    else
                    {
                        DX.SetDrawBlendMode(DX.DX_BLENDMODE_ADD, (int)(toumei));
                    }

                    particle.DrawZoomRotate(x, y, 1, (int)((millis * _angle / 60) % 360), (int)((millis / 50) % 3));
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }
    }
Example #4
0
    public void Draw()
    {
        //赤と紫の縦帯
        DrawPlayline(now.dot);
        LRDrawObject lrdraw;

        if (lr == CdjData.Left)
        {
            lrdraw = _ldraw;
        }
        else
        {
            lrdraw = _rdraw;
        }

        if (this.judge == EnumJudge.BAD)
        {
            //失敗オブジェを描く(×印付き)
            //まだアクティブになっていない
            DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
            if (quecount > 0)
            {
                _disk.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep));
                //キューの量
                lrdraw.diskque.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep), (int)(quecount / 10));
                _X.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep));
            }
            //カットイン矢印
            lrdraw.cutin.Draw(datacalc.ScreenCenterLine, datacalc.realtimey(now.dot, startstep));
            _X.Draw(datacalc.ScreenCenterLine, datacalc.realtimey(now.dot, startstep));
        }
        else if (this.judge == EnumJudge.NOTYET)
        {
            //未判定オブジェを描く
            DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
            if (ActiveState == EnumActiveState.NEXT)//皿が光ったり回ったり
            {
                if (quecount > 0)
                {
                    //皿のびーるの赤と紫
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ALPHA, 60);
                    lrdraw.diskshadow.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep), 0);
                    lrdraw.diskshadow.DrawModi(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep) + lrdraw.diskshadow.height, lrdraw.diskshadow.width, datacalc.JudgeLineY - datacalc.realtimey(now.dot, startstep), 1);
                    int y;
                    if (now.millis - activemillis < 100)
                    {
                        y = (int)(datacalc.realtimey(now.dot, startstep) + datacalc.JudgeLineY * (now.millis - activemillis) / 100);
                    }
                    else
                    {
                        y = datacalc.JudgeLineY;
                    }
                    if (y > datacalc.JudgeLineY)
                    {
                        y = datacalc.JudgeLineY;
                    }

                    //皿がビートに合わせて光る
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ADD, 128);
                    //double zoom = 1 - ((nowmillis % 500) * 1f / 1000);
                    double zoom = 1 - ((now.judgementlinestep % (datacalc.resolution / 4)) * 1f / (datacalc.resolution / 2));
                    _diskbeat.DrawZoomRotate(datacalc.realtimerecordx(lr), y, zoom, 0);
                    //皿
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
                    double angle = (now.millis % 1000) * datacalc.PI / 500;
                    _disk.DrawZoomRotate(datacalc.realtimerecordx(lr), y, 1, angle);
                    double q = (quecount / 10);
                    if (q > 360)
                    {
                        q = 360;
                    }
                    //キューの量
                    lrdraw.diskque.Draw(datacalc.realtimerecordx(lr), y, (int)q);
                    //キューの今の位置
                    _cue.Draw(datacalc.realtimerecordx(lr), y, (int)((quecount / 10 - 1) % 36));

                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_ADD, (int)(96 * (zoom - 0.5)));
                    _diskbeat.DrawZoomRotate(datacalc.realtimerecordx(lr), y, 1, 0);
                    DX.SetDrawBlendMode(DX.DX_BLENDMODE_NOBLEND, 0);
                }
            }
            else
            {
                //まだアクティブになっていない
                if (quecount > 0)
                {
                    _disk.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep));
                    //キューの量
                    lrdraw.diskque.Draw(datacalc.realtimerecordx(lr), datacalc.realtimey(now.dot, startstep), (int)(quecount / 10));
                }
            }
            //カットイン矢印
            lrdraw.cutin.Draw(datacalc.ScreenCenterLine, datacalc.realtimey(now.dot, startstep));
        }
    }