Example #1
0
        /// <summary>
        ///     取得目前那些按鍵有效
        /// </summary>
        /// <param name="baseHitObject"></param>
        /// <returns></returns>
        public static List <Key> GetListKey(BaseRpHitableObject baseHitObject)
        {
            var output = new List <Key>();
            var divaKeyLayoutConfig = new RpKeyLayoutConfig();
            //取得目前的使用排版
            var config = divaKeyLayoutConfig.GetDefaultLayLayout();

            foreach (var single in config.KeyDictionary)
            {
                if (single.Type == baseHitObject.Shape)
                {
                    if (baseHitObject.Coop == RpBaseHitObjectType.Coop.Both) //如果是通用
                    {
                        output.Add(single.Key);
                    }
                    else if (baseHitObject.Coop == single.Coop) //或是左右屬性符吁E
                    {
                        output.Add(single.Key);
                    }
                }
            }


            return(output);
        }
Example #2
0
        /// <summary>
        ///     圖片名稱
        /// </summary>
        /// <param name="baseHitObject"></param>
        /// <param name="border"></param>
        /// <returns></returns>
        private static string GetImageNameByType(BaseRpHitableObject baseHitObject)
        {
            string fileName = null;

            switch (baseHitObject.Shape)
            {
            case RpBaseHitObjectType.Shape.Up:
                fileName = @"Up";
                break;

            case RpBaseHitObjectType.Shape.Down:
                fileName = @"Down";
                break;

            case RpBaseHitObjectType.Shape.Left:
                fileName = @"Left";
                break;

            case RpBaseHitObjectType.Shape.Right:
                fileName = @"Right";
                break;

            case RpBaseHitObjectType.Shape.Special:
                fileName = @"Star";
                break;

            case RpBaseHitObjectType.Shape.ContainerPress:
                fileName = @"Left";
                break;

            default:
                return(@"RP_Unknown");
            }
            return(fileName);
        }
        /// <summary>
        ///     建構,所有的RP物件一定要建構到這邊
        /// </summary>
        /// <param name="hitObject"></param>
        public DrawableBaseRpHitableObject(BaseRpHitableObject hitObject)
            : base(hitObject)
        {
            HitObject = hitObject;
            //載�E判斷黁E
            if (Judgement == null)
            {
                Judgement = CreateJudgement();
            }

            Template = new RpDrawBaseObjectTemplate(HitObject)
            {
                //Position = this.Position,
                Alpha = 1
            };

            //初始化
            InitialDetectPressEvent();


            Children = new Drawable[]
            {
                Template
                //_rpDetectPress
            };
        }
Example #4
0
 public BaseMoveFlow(BaseRpHitableObject baseHitObject)
     : base(baseHitObject)
 {
     Children = new Drawable[]
     {
         //Slider身體
         _rpLongBody = new SliderBody(BaseHitObject)
         {
             Position  = new Vector2(0, 0),
             PathWidth = BaseHitObject.Scale * 15
         },
         //結尾物件
         hitObjectAnyShapePieceSecondObjectAny = new HitObjectAnyShapePiece(BaseHitObject) //true
         {
             Position = new Vector2(0, 0),
             //Scale = new Vector2(_hitObject.Scale),
             IsFirst = false
         },
         //開頭物件
         hitObjectAnyShapePieceFirstObjectAny = new HitObjectAnyShapePiece(BaseHitObject) //false
         {
             Position = new Vector2(0, 0),
             //Scale = new Vector2(_hitObject.Scale),
             IsFirst = true
         }
     };
 }
Example #5
0
        /// <summary>
        ///     根據型態取得物件圖片路徑
        /// </summary>
        /// <param name="baseHitObject"></param>
        /// <returns></returns>
        private static string GetObjectImagePathByType(BaseRpHitableObject baseHitObject, bool end = false)
        {
            var fileName = "";

            //物件是開頭還是尾巴
            if (end)
            {
                fileName = @"End/" + fileName;
            }
            else
            {
                fileName = @"Start/" + fileName;
            }

            //根據模式去命名資料夾
            fileName = baseHitObject.ObjectType + @"/" + fileName;


            //如果是黃金模式(家分模式)
            fileName = GetObjectImagePathBySpecial(baseHitObject.Special) + fileName;

            //不同落下模式
            //if (baseHitObject.ApproachType == ApproachType.ApproachCircle)
            fileName = @"Circle/" + fileName;
            //else
            //    fileName = @"Square/" + fileName;

            return(RP_OBJECT_FOLDER + fileName);
        }
 /// <summary>
 /// </summary>
 /// <param name="hitObject"></param>
 public RpDrawHitObjectTemplate(BaseRpObject hitObject)
     : base(hitObject)
 {
     _hitObject = (BaseRpHitableObject)hitObject;
     InitialApproachHitPicec();
     InitialChild();
 }
 public BaseMoveApproachCircle(BaseRpHitableObject baseHitObject)
     : base(baseHitObject)
 {
     Children = new Drawable[]
     {
         ApproachHitPicec = new ImagePicec(RpTexturePathManager.GetStartObjectImageNameByType(BaseHitObject))
     };
 }
Example #8
0
        public DetectPress(BaseRpHitableObject baseRpObject, RpJudgement judgement)
        {
            _baseRPObject = baseRpObject;
            //預�E取得那些按鍵按亁E��有作用
            _compareKey = RpKeyManager.GetListKey(baseRpObject);

            Children = new Drawable[]
            {
            };
        }
Example #9
0
        public SliderBody(BaseRpHitableObject s)
        {
            sliderHitObject = s;

            slider = new Slider();
            //�C���������W
            //slider.Position = -path.PositionInBoundingBox(sliderHitObject.Curve.PositionAt(0) - sliderHitObject[0]);
            slider.Position = -sliderHitObject.Curve.PositionAt(0);
            Children        = new Drawable[]
            {
                slider
            };
        }
Example #10
0
 public ClickMoveFlow(BaseRpHitableObject baseHitObject)
     : base(baseHitObject)
 {
     Children = new Drawable[]
     {
         //開頭物件
         hitObjectAnyShapePieceFirstObjectAny = new HitObjectAnyShapePiece(BaseHitObject) //false
         {
             Position = new Vector2(0, 0),
             //Scale = new Vector2(_hitObject.Scale),
             IsFirst = true
         }
     };
 }
Example #11
0
        /// <summary>
        ///     圖片名稱
        /// </summary>
        /// <param name="baseHitObject"></param>
        /// <param name="border"></param>
        /// <returns></returns>
        private static string GetImageNameByType(BaseRpHitableObject baseHitObject)
        {
            string fileName = null;

            if (baseHitObject as RpHitObject != null)
            {
                switch ((baseHitObject as RpHitObject).Direction)
                {
                case Direction.Up:
                    fileName = @"Up";
                    break;

                case Direction.Down:
                    fileName = @"Down";
                    break;

                case Direction.Left:
                    fileName = @"Left";
                    break;

                case Direction.Right:
                    fileName = @"Right";
                    break;

                default:
                    return(@"RP_Unknown");
                }
            }
            else
            {
                //switch (baseHitObject.Shape)
                //{
                //    case Shape.ContainerPress:
                //        fileName = @"Left";
                //        break;
                //    default:
                //        return @"RP_Unknown";
                //}
            }
            return(fileName);
        }
Example #12
0
        /// <summary>
        ///     Žæ“¾•Ð’i
        /// </summary>
        /// <returns></returns>
        public BaseMovePicec GetPicec(BaseRpHitableObject hitObject)
        {
            if (hitObject is Objects.RpHitObject) //Click
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseMoveApproachCircle(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new ClickMoveFlow(hitObject));    //V
                }
            }
            else if (hitObject is RpHoldObject) //Slide
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseMoveApproachCircle(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new SliderMoveFlow(hitObject));    //V
                }
            }
            else if (false)//(hitObject is RpHold) //Hold
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseMoveApproachCircle(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new ClickMoveFlow(hitObject));    //V
                }
            }

            return(new BaseMovePicec(hitObject));
        }
Example #13
0
        /// <summary>
        ///     Žæ“¾•Ð’i
        /// </summary>
        /// <returns></returns>
        public BaseStillPiece GetPicec(BaseRpHitableObject hitObject)
        {
            if (hitObject is Objects.RpHitObject) //Click
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseStillClick(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new BaseStillClick(hitObject));
                }
            }
            else if (hitObject is RpHoldObject) //Slide
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseStillSlide(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new BaseStillSlide(hitObject));    //V
                }
            }
            else if (false)// (hitObject is RpHold) //Hold
            {
                switch (hitObject.ApproachType)
                {
                case RpBaseHitObjectType.ApproachType.ApproachCircle:
                    return(new BaseStillHold(hitObject));    //V

                case RpBaseHitObjectType.ApproachType.flow:
                    return(new BaseStillHold(hitObject));    //V
                }
            }

            return(new BaseStillPiece(hitObject));
        }
Example #14
0
 /// <summary>
 ///     取得一個Note的開頭物件
 /// </summary>
 /// <param name="baseHitObject"></param>
 /// <returns></returns>
 public static string GetStartObjectImageNameByType(BaseRpHitableObject baseHitObject)
 {
     return(GetObjectImagePathByType(baseHitObject, false) + GetImageNameByType(baseHitObject));
 }
Example #15
0
 /// <summary>
 ///     RP物件聲音
 /// </summary>
 /// <param name="baseHitObject"></param>
 /// <returns></returns>
 public static string GetRPHitSound(BaseRpHitableObject baseHitObject)
 {
     return("");
 }
Example #16
0
 //constructor
 protected DrawableBaseRpHitableObject(BaseRpHitableObject hitObject)
     : base(hitObject)
 {
 }
Example #17
0
        /// <summary>
        ///     根據物件取得對應的顏色
        ///     會在之後實作
        /// </summary>
        /// <returns></returns>
        public static Color4 GetColor(BaseRpHitableObject baseHitObject)
        {
            var colour = new Color4(255, 255, 255, 255);

            return(colour);
        }
Example #18
0
 /// <summary>
 ///     取得 結束物件的遮罩
 /// </summary>
 /// <param name="baseHitObject"></param>
 /// <returns></returns>
 public static string GetEndObjectBackgroundByType(BaseRpHitableObject baseHitObject)
 {
     return(GetObjectImagePathByType(baseHitObject, true) + "background-" + GetImageNameByType(baseHitObject));
 }
Example #19
0
        /// <summary>
        ///     取得 開始物件的遮罩
        /// </summary>
        /// <param name="baseHitObject"></param>
        /// <returns></returns>
        public static string GetStartObjectBackgroundByType(BaseRpHitableObject baseHitObject)
        {
            var str = GetObjectImagePathByType(baseHitObject, false) + "background-" + GetImageNameByType(baseHitObject);

            return(str);
        }
Example #20
0
 public BaseMovePicec(BaseRpHitableObject baseHitObject)
 {
     BaseHitObject = baseHitObject;
 }
Example #21
0
        /// <summary>
        ///     Get List Key
        /// </summary>
        /// <returns></returns>
        private Key getKeyByHitObject(BaseRpHitableObject hitObject)
        {
            var listCompareKeys = RpKeyManager.GetListKey(hitObject);

            return(listCompareKeys[0]);
        }
Example #22
0
 public SlideTemplate(BaseRpHitableObject hitObject)
     : base(hitObject)
 {
 }
Example #23
0
        /// <summary>
        ///     Get List Key
        /// </summary>
        /// <returns></returns>
        private RpAction getKeyByHitObject(BaseRpHitableObject hitObject)
        {
            var listCompareKeys = hitObject.GetListCompareKeys();

            return(listCompareKeys[0]);
        }
 /// <summary>
 /// </summary>
 /// <param name="hitObject"></param>
 public DrawableRpContainerLineHoldObject(BaseRpHitableObject hitObject)
     : base(hitObject)
 {
 }
Example #25
0
 public ClickTemplate(BaseRpHitableObject hitObject)
     : base(hitObject)
 {
 }
Example #26
0
 /// <summary>
 ///     取得 結束物件的遮罩
 /// </summary>
 /// <param name="baseHitObject"></param>
 /// <returns></returns>
 public static string GetEndObjectMaskByType(BaseRpHitableObject baseHitObject)
 {
     return(GetObjectImagePathByType(baseHitObject, true) + "Mask");
 }