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, }); }
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); } }