Exemple #1
0
        public bool CreateMark(IMarkInfo markInfo, out GameComponent mark, out GameComponent colorMark,
                               out GameComponent axis, out GameComponent slideMark, out GameComponent slideColorMark, out PictureObject trace)
        {
            mark = colorMark = axis = slideMark = slideColorMark = trace = null;
            var handled = false;

            foreach (ICreateMark create in list)
            {
                if (!handled || (handled && create.IsEvaluateRequired()))
                {
                    create.Create(markInfo);
                    engine.Update();
                }

                if (!handled && create.EvaluateHandled)
                {
                    mark           = create.CreatedMark;
                    colorMark      = create.CreatedColorMark;
                    axis           = create.CreatedAxis;
                    slideMark      = create.CreatedSlideMark;
                    slideColorMark = create.CreatedSlideColorMark;
                    trace          = create.CreatedTrace;
                    handled        = true;
                }
            }
            return(handled);
        }
        public virtual void Process(IMarkInfo markInfo)
        {
            this.markInfo = markInfo;

            FireEvent(Out, true);
            FireEvent(OutEnd, true);
        }
Exemple #3
0
        public virtual Vector2 CalculateColorPosition(ColorMarkInfo colorMarkInfo, IMarkInfo markInfo, float markTime, float currentTime, float bpm)
        {
            float scale    = (float)bpm / DefaultBpm;
            float timediff = markTime - currentTime;

            return(OnChangeColorPosition(markInfo, scale, timediff, currentTime, bpm));
        }
Exemple #4
0
        protected void UpdateColorMarkInfo(ColorMarkInfo colorMarkInfo, IMarkInfo markInfo, float markTime, float currentTime, float bpm, Vector2 vec)
        {
            var scale    = (float)bpm / DefaultBpm;
            var timediff = markTime - currentTime;
            var rot      = GetAngle(vec);

            vec += colorMarkInfo.BasePosition;
            var tempMat = Matrix.Transformation2D(Vector2.Zero, 0, Vector2.One, Vector2.Zero, timediff >= 0 ? rot : (float)(rot - Math.PI), Vector2.Zero);
            var vec1    = new Vector2(10, 4 * (float)Math.Cos((Time - currentTime) * scale * Math.PI));
            var vec2    = new Vector2(vec1.X, -vec1.Y);

            vec1 = Vector2.TransformCoordinate(vec1, tempMat) + vec;
            vec2 = Vector2.TransformCoordinate(vec2, tempMat) + vec;
            if (colorMarkInfo.VerticesCount == 40)
            {
                Array.ConstrainedCopy(colorMarkInfo.Pos1, 1, colorMarkInfo.Pos1, 0, 39);
                colorMarkInfo.Pos1[39] = vec1;
                Array.ConstrainedCopy(colorMarkInfo.Pos2, 1, colorMarkInfo.Pos2, 0, 39);
                colorMarkInfo.Pos2[39] = vec2;
            }
            else
            {
                colorMarkInfo.Pos1[colorMarkInfo.VerticesCount] = vec1;
                colorMarkInfo.Pos2[colorMarkInfo.VerticesCount] = vec2;
                colorMarkInfo.VerticesCount++;
            }
            colorMarkInfo.ColorMark.Position = vec;
        }
        public virtual void Create(IMarkInfo markInfo)
        {
            this.markInfo = markInfo;

            FireEvent(Out, true);
            FireEvent(OutEnd, true);
        }
        public virtual void Process(IMarkInfo markInfo, PPDCoreModel.Data.MarkType buttonType)
        {
            this.markInfo = markInfo;
            PressedButton = buttonType;

            FireEvent(Out, true);
            FireEvent(OutEnd, true);
        }
        public virtual void Calculate(IMarkInfo markInfo, float currentTime, float bpm)
        {
            this.markInfo = markInfo;
            CurrentTime   = currentTime;
            BPM           = bpm;

            FireEvent(Out, true);
            FireEvent(OutEnd, true);
        }
Exemple #8
0
        public override Vector2 CalculateColorPosition(ColorMarkInfo colorMarkInfo, IMarkInfo markInfo, float markTime, float currentTime, float bpm)
        {
            var vec = base.CalculateColorPosition(colorMarkInfo, markInfo, markTime, currentTime, bpm);

            if (markTime < currentTime)
            {
                return(Vector2.Zero);
            }
            return(vec);
        }
        public virtual void ProcessEvaluate(IMarkInfo markInfo, PPDCoreModel.Data.EffectType effectType, bool missPress, bool release, Vector2 position)
        {
            this.markInfo = markInfo;
            IsMissPress   = missPress;
            IsRelease     = release;
            EffectType    = effectType;
            Position      = position;

            FireEvent(Out, true);
            FireEvent(OutEnd, true);
        }
        public override void Process(IMarkInfo markInfo, PPDCoreModel.Data.MarkType buttonType)
        {
            SetValue(nameof(TargetID));

            if (markInfo.ID == TargetID)
            {
                base.Process(markInfo, buttonType);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #11
0
        public override void Process(IMarkInfo markInfo)
        {
            SetValue(nameof(TargetID));

            if (markInfo.ID == TargetID)
            {
                base.Process(markInfo);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #12
0
        public override void Calculate(IMarkInfo markInfo, float currentTime, float bpm)
        {
            SetValue(nameof(TargetID));

            if (markInfo.ID == TargetID)
            {
                base.Calculate(markInfo, currentTime, bpm);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #13
0
        public override void ProcessEvaluate(IMarkInfo markInfo, PPDCoreModel.Data.EffectType effectType, bool missPress, bool release, Vector2 position)
        {
            SetValue(nameof(TargetID));

            if (markInfo.ID == TargetID)
            {
                base.ProcessEvaluate(markInfo, effectType, missPress, release, position);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
        public override void ProcessEvaluate(IMarkInfo markInfo, PPDCoreModel.Data.EffectType effectType, bool missPress, bool release, Vector2 position)
        {
            SetValue(nameof(StartTime));
            SetValue(nameof(EndTime));

            if (StartTime <= markInfo.Time && markInfo.Time <= EndTime)
            {
                base.ProcessEvaluate(markInfo, effectType, missPress, release, position);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #15
0
        public override void Process(IMarkInfo markInfo, PPDCoreModel.Data.MarkType buttonType)
        {
            SetValue(nameof(StartTime));
            SetValue(nameof(EndTime));

            if (StartTime <= markInfo.Time && markInfo.Time <= EndTime)
            {
                base.Process(markInfo, buttonType);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
        public override void Create(IMarkInfo markInfo)
        {
            SetValue(nameof(StartTime));
            SetValue(nameof(EndTime));

            if (StartTime <= markInfo.Time && markInfo.Time <= EndTime)
            {
                base.Create(markInfo);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #17
0
        public override void Calculate(IMarkInfo markInfo, float currentTime, float bpm)
        {
            SetValue(nameof(StartTime));
            SetValue(nameof(EndTime));

            if (StartTime <= markInfo.Time && markInfo.Time <= EndTime)
            {
                base.Calculate(markInfo, currentTime, bpm);
            }
            else
            {
                EvaluateHandled = false;
            }
        }
Exemple #18
0
        public bool ProcessEvaluate(IMarkInfo markInfo, EffectType effectType, bool missPress, bool release, Vector2 position)
        {
            var handled = false;

            foreach (IProcessEvaluate proc in list)
            {
                if (!handled || (handled && proc.IsEvaluateRequired()))
                {
                    proc.ProcessEvaluate(markInfo, effectType, missPress, release, position);
                    engine.Update();
                }

                if (!handled && proc.EvaluateHandled)
                {
                    handled = true;
                }
            }

            return(handled);
        }
Exemple #19
0
        public bool Calculate(IMarkInfo markInfo, float currentTime, float bpm)
        {
            var handled = false;

            foreach (ICalculatePosition calc in list)
            {
                if (!handled || (handled && calc.IsEvaluateRequired()))
                {
                    calc.Calculate(markInfo, currentTime, bpm);
                    engine.Update();
                }

                if (!handled && calc.EvaluateHandled)
                {
                    markInfo.ColorPosition = calc.CalculatePosition;
                    handled = true;
                }
            }

            return(handled);
        }
        public bool Process(IMarkInfo markInfo, out ButtonType[] allowedButtons)
        {
            allowedButtons = null;
            var handled = false;

            foreach (IProcessAllowedButtons proc in list)
            {
                if (!handled || (handled && proc.IsEvaluateRequired()))
                {
                    proc.Process(markInfo);
                    engine.Update();
                }

                if (!handled && proc.EvaluateHandled)
                {
                    allowedButtons = proc.ProcessAllowedButtons;
                    handled        = true;
                }
            }
            return(handled);
        }
        public bool Process(IMarkInfo markInfo, MarkType pressedButton, out bool isMissPress)
        {
            isMissPress = false;
            var handled = false;

            foreach (IProcessMissPress proc in list)
            {
                if (!handled || (handled && proc.IsEvaluateRequired()))
                {
                    proc.Process(markInfo, pressedButton);
                    engine.Update();
                }

                if (!handled && proc.EvaluateHandled)
                {
                    isMissPress = proc.ProcessMissPress;
                    handled     = true;
                }
            }

            return(handled);
        }
Exemple #22
0
        public bool Process(IMarkInfo markInfo, out float bpm)
        {
            bpm = 0;
            var handled = false;

            foreach (IProcessMarkBPM proc in list)
            {
                if (!handled || (handled && proc.IsEvaluateRequired()))
                {
                    proc.Process(markInfo);
                    engine.Update();
                }

                if (!handled && proc.EvaluateHandled)
                {
                    bpm     = proc.ProcessBPM;
                    handled = true;
                }
            }

            return(handled);
        }
Exemple #23
0
        protected Vector2 OnChangeColorPosition(IMarkInfo markInfo, float scale, float timediff, float currentTime, float bpm)
        {
            if (CheckColorPosition != null)
            {
                if (CheckColorPosition.Invoke(markInfo, currentTime, bpm))
                {
                    return(markInfo.ColorPosition);
                }
            }

            Vector2 vec;

            if (ChangeColorPosition != null)
            {
                vec = ChangeColorPosition.Invoke(scale, timediff);
            }
            else
            {
                vec = new Vector2(300 * timediff * scale, -30 * (float)Math.Sin(timediff * scale * Math.PI));
            }

            vec = Vector2.TransformCoordinate(vec, matrix);
            return(vec);
        }
Exemple #24
0
 public override void Calculate(IMarkInfo markInfo, float currentTime, float bpm)
 {
     base.Calculate(markInfo, currentTime, bpm);
 }
 public override void Process(IMarkInfo markInfo)
 {
     base.Process(markInfo);
 }
Exemple #26
0
 public override void Process(IMarkInfo markInfo, PPDCoreModel.Data.MarkType buttonType)
 {
     base.Process(markInfo, buttonType);
 }
Exemple #27
0
 public override void Create(IMarkInfo markInfo)
 {
     base.Create(markInfo);
 }