Esempio n. 1
0
        /// <summary>
        /// 日付の並びを36進数に変換
        /// </summary>
        private string DayTo36()
        {
            DateTime    dt            = DateTime.Now;
            long        timeAdress    = Convert.ToInt64(dt.ToString("yyMMddHHmmss"));
            string      result        = "INI";
            long        quotient      = timeAdress;
            List <long> remainderList = new List <long>();

            while (BASE < quotient)
            {
                remainderList.Add(quotient % BASE);
                quotient /= BASE;
            }

            remainderList.Add(quotient);

            remainderList.Reverse();

            foreach (int num in remainderList)
            {
                result += RadixConvert.ToString(num, 36, true);
            }

            result = result.Remove(0, 3);

            return(result);
        }
Esempio n. 2
0
        public override ThumbnailInfo GetThumbnailInfo(string url, PostClass post)
        {
            var match = this.regex.Match(url);

            if (!match.Success)
            {
                return(null);
            }

            return(new ThumbnailInfo()
            {
                ImageUrl = url,
                ThumbnailUrl = "http://images.bcphotoshare.com/storages/" + RadixConvert.ToInt32(match.Result("${1}"), 36) + "/thumb180.jpg",
                TooltipText = null,
            });
        }
        /// <summary>
        /// 短链接id生成器
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public string Generate(string url)
        {
            var hashCode = Hash(url);

            return(RadixConvert.To62Radix(hashCode));
        }
Esempio n. 4
0
    private void ProcessData(Match score, int line)
    {
        string measure = score.Groups ["measure"].Value.ToUpper();
        string lane    = score.Groups ["lane"].Value;
        string data    = score.Groups ["data"].Value.Replace(" ", "");

        /*
         * 判定順について
         * 0. #...** (BPMなど)
         * 1. #---0* (特殊データ、定義分割不可)
         * 2. #---1* (Short)
         * 3. #---5* (Air)
         * 4. #---[234]*. (Long)
         * ※参考用にSeaurchinの写し
         */

        int notesCount = data.Length / 2;

        int measureInt;

        if (!int.TryParse(measure, out measureInt))
        {
            // コマンド
            switch (measure)
            {
            case "BPM":
                float bpm;
                if (float.TryParse(data, out bpm))
                {
                    Debug.Log("BPM change");
                    bpmDef.Add(RadixConvert.ToInt32(lane, 36), bpm);
                }
                else
                {
                    Debug.Log("BPMの値が不正です Line: " + line);
                }
                break;

            case "TIL":
                Debug.LogError("Warn: TILはsusフォーマットv2.7.1現在定義されていますが未実装です Line: " + line);
                break;

            default:
                Debug.LogError("Warn: " + measure + "は未実装です Line: " + line);
                break;
            }
        }
        else if (lane [0] == '0')
        {
            int step = (int)((ticksPerBeat * getBeatsAt(measureInt)) / (notesCount == 0 ? 1 : notesCount));

            switch (lane [1])
            {
            case '2':
                // 小節長
                float pat;
                if (float.TryParse(data, out pat))
                {
                    beatDef [measureInt] = pat;
                }
                else
                {
                    Debug.Log("Beatの値が不正です Line: " + line);
                }
                break;

            case '8':
                // BPM
                for (int i = 0; i < notesCount; i++)
                {
                    string         note     = data.Substring(i * 2, 2);
                    SusRawNoteData noteData = new SusRawNoteData();
                    noteData.time      = new SusRelativeNoteTime(measureInt, step * i);
                    noteData.type      = SusNoteType.Undefined;
                    noteData.defNumber = RadixConvert.ToInt32(note, 36);
                    notes.Add(noteData);
                }
                break;

            default:
                Debug.LogError("Warn: 不正なデータコマンドです Line: " + line);
                break;
            }
        }
        else if (lane [0] == '1')
        {
            int step = (int)((ticksPerBeat * getBeatsAt(measureInt)) / (notesCount == 0 ? 1 : notesCount));

            for (int i = 0; i < notesCount; i++)
            {
                string         note     = data.Substring(i * 2, 2);
                SusRawNoteData noteData = new SusRawNoteData();
                noteData.time      = new SusRelativeNoteTime(measureInt, step * i);
                noteData.startLane = RadixConvert.ToInt32(lane.Substring(1, 1), 36);
                noteData.length    = RadixConvert.ToInt32(note.Substring(1, 1), 36);

                if (note [1] == '0')
                {
                    continue;
                }

                switch (note [0])
                {
                case '1':
                    noteData.type = SusNoteType.Tap;
                    break;

                case '2':
                    noteData.type = SusNoteType.ExTap;
                    break;

                case '3':
                    noteData.type = SusNoteType.Flick;
                    break;

                case '4':
                    noteData.type = SusNoteType.HellTap;
                    break;

                default:
                    Debug.LogError("Warn: ショートレーンの指定が不正です Line: " + line);
                    break;
                }

                notes.Add(noteData);
            }
        }
        else if (lane [0] == '5')
        {
            int step = (int)((ticksPerBeat * getBeatsAt(measureInt)) / (notesCount == 0 ? 1 : notesCount));

            for (int i = 0; i < notesCount; i++)
            {
                string         note     = data.Substring(i * 2, 2);
                SusRawNoteData noteData = new SusRawNoteData();
                noteData.time      = new SusRelativeNoteTime(measureInt, step * i);
                noteData.startLane = RadixConvert.ToInt32(lane.Substring(1, 1), 36);
                noteData.length    = RadixConvert.ToInt32(note.Substring(1, 1), 36);
                noteData.type      = SusNoteType.Air;

                if (note [1] == '0')
                {
                    continue;
                }

                switch (note [0])
                {
                case '1':
                    noteData.type |= SusNoteType.Up;
                    break;

                case '2':
                    noteData.type |= SusNoteType.Down;
                    break;

                case '3':
                    noteData.type |= SusNoteType.Up | SusNoteType.Left;
                    break;

                case '4':
                    noteData.type |= SusNoteType.Up | SusNoteType.Right;
                    break;

                case '5':
                    noteData.type |= SusNoteType.Down | SusNoteType.Right;
                    break;

                case '6':
                    noteData.type |= SusNoteType.Down | SusNoteType.Left;
                    break;

                default:
                    Debug.LogError("Warn: Airレーンの指定が不正です Line: " + line);
                    break;
                }

                notes.Add(noteData);
            }
        }
        else if (lane.Length == 3)
        {
            int step = (int)((ticksPerBeat * getBeatsAt(measureInt)) / (notesCount == 0 ? 1 : notesCount));

            for (int i = 0; i < notesCount; i++)
            {
                string         note     = data.Substring(i * 2, 2);
                SusRawNoteData noteData = new SusRawNoteData();
                noteData.time      = new SusRelativeNoteTime(measureInt, step * i);
                noteData.startLane = RadixConvert.ToInt32(lane.Substring(1, 1), 36);
                noteData.length    = RadixConvert.ToInt32(note.Substring(1, 1), 36);
                noteData.extra     = RadixConvert.ToInt32(lane.Substring(2, 1), 36);

                if (note [1] == '0')
                {
                    continue;
                }

                switch (lane [0])
                {
                case '2':
                    noteData.type = SusNoteType.Hold;
                    break;

                case '3':
                    noteData.type = SusNoteType.Slide;
                    break;

                case '4':
                    noteData.type = SusNoteType.AirAction;
                    break;

                default:
                    Debug.LogError("Warn: ロングレーンの指定が不正です Line: " + line);
                    break;
                }

                switch (note [0])
                {
                case '1':
                    noteData.type |= SusNoteType.Start;
                    break;

                case '2':
                    noteData.type |= SusNoteType.End;
                    break;

                case '3':
                    noteData.type |= SusNoteType.Step;
                    break;

                case '4':
                    noteData.type |= SusNoteType.Control;
                    break;

                case '5':
                    noteData.type |= SusNoteType.Invisible;
                    break;

                default:
                    Debug.LogError("Warn: ロングレーンのノーツ種類の指定が不正です Line: " + line);
                    break;
                }

                notes.Add(noteData);
            }
        }
        else
        {
            Debug.LogError("Warn: 不正なデータ定義です Line: " + line);
        }
    }