/// <summary> /// 使用字符串构造一个Sprite对象 /// </summary> /// <param name="dataline"></param> public void Parse(string dataline) { if (!dataline.StartsWith("Sprite,") && !dataline.StartsWith("4,")) { throw new FailToParseException("该行的数据不适用。"); } var data = dataline.Split(','); var sprite = data[0]; var suc = int.TryParse(data[1], out var layer); if (!suc) { Layer = StoryBoardTools.GetLayerByString(data[1]); } else { Layer = (StoryBoardLayer)layer; } suc = int.TryParse(data[2], out var origin); if (!suc) { Origin = StoryBoardTools.GetOriginByString(data[2]); } else { Origin = (StoryBoardOrigin)origin; } Path = data[3].Trim('\"'); Position = new OsuPixel(double.Parse(data[4]), double.Parse(data[5])); }
/// <summary> /// 将字符串解析成Fade /// </summary> /// <param name="data"></param> public void Parse(string data) { while (data.StartsWith(" ")) { data = data.Remove(0, 1); } var parts = data.Split(','); if (parts[0] != "F") { throw new ArgumentException("该行的数据不适用。"); } var ed = parts[3]; if (string.IsNullOrEmpty(ed)) { parts[3] = parts[2]; } var suc = int.TryParse(parts[1], out var eas); if (suc) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]); } StartTime = int.Parse(parts[2]); EndTime = int.Parse(parts[3]); var i = 4; var j = 1; if (i + 1 == parts.Length) { Translations.Add( new FadeTranslation(double.Parse(parts[4]), double.Parse(parts[4]), StartTime, EndTime)); } while (true) { var stindex = i; var st = double.Parse(parts[i++]); var end = double.Parse(parts[i]); /*(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex])*/; var dur = EndTime - StartTime; Translations.Add(new FadeTranslation(st, end, StartTime + dur * j, EndTime + dur * j)); if (i + 1 < parts.Length) { i--; } j++; if (i + 1 >= parts.Length) { break; } } }
/// <summary> /// 将字符串解析成Fade /// </summary> /// <param name="data"></param> public void Parse(string data) { var parts = data.Split(','); var suc = int.TryParse(parts[1], out var eas); if (suc) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]); } StartTime = int.Parse(parts[2]); var ed = parts[3]; if (string.IsNullOrEmpty(ed)) { parts[3] = parts[2]; } EndTime = int.Parse(parts[3]); var i = 4; var j = 1; if (i + 3 == parts.Length) { Translations.Add(new ColorTranslation( new RgbColor(int.Parse(parts[4]), int.Parse(parts[5]), int.Parse(parts[6])), new RgbColor(int.Parse(parts[4]), int.Parse(parts[5]), int.Parse(parts[6])), StartTime, EndTime)); } while (i + 3 < parts.Length) { var r = int.Parse(parts[i + 1 < parts.Length ? i++ : i]); var g = int.Parse(parts[i + 1 < parts.Length ? i++ : i]); var b = int.Parse(parts[i + 1 < parts.Length ? i++ : i]); var er = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]); var eg = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]); var eb = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]); var dur = EndTime - StartTime; Translations.Add(new ColorTranslation(new RgbColor(r, b, g), new RgbColor(er, eb, eg), StartTime + j * dur, EndTime + j * dur)); j++; if (i + 1 < parts.Length) { i -= 3; } } }
/// <summary> /// 使用字符串构建一个Move对象 /// </summary> /// <param name="data"></param> public void Parse(string data) { var datas = data.Split(','); if (int.TryParse(datas[1], out var eas)) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(datas[1]); } StartTime = int.Parse(datas[2]); var ed = datas[3]; if (string.IsNullOrEmpty(ed)) { datas[3] = datas[2]; } EndTime = int.Parse(datas[3]); int i = 4, j = 0; if (i + 2 == datas.Length) { Translations.Add(new MoveTranslation( new StoryBoardPoint(double.Parse(datas[4]), double.Parse(datas[5])), new StoryBoardPoint(double.Parse(datas[4]), double.Parse(datas[5])), StartTime, EndTime)); } while (i + 2 < datas.Length) { var stindex = i; var stx = double.Parse(datas[i++]); var sty = double.Parse(datas[i++]); var edx = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex]); var edy = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex + 1]); var dur = EndTime - StartTime; Translations.Add(new MoveTranslation(new StoryBoardPoint(stx, sty), new StoryBoardPoint(edx, edy), StartTime + j * dur, EndTime + j * dur)); j++; if (i + 1 < datas.Length) { i -= 2; } } }
/// <inheritdoc /> public void Parse(string line) { var datas = line.Split(','); if (int.TryParse(datas[1], out var eas)) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(datas[1]); } if (string.IsNullOrEmpty(datas[3])) { datas[3] = datas[2]; } StartTime = int.Parse(datas[2]); EndTime = int.Parse(datas[3]); int i = 4, j = 0; if (i + 2 == datas.Length) { Translations.Add(new VectorScaleTranslation( new VectorScaleMultiplier(double.Parse(datas[4]), double.Parse(datas[5])), new VectorScaleMultiplier(double.Parse(datas[4]), double.Parse(datas[5])), StartTime, EndTime)); } while (i + 2 < datas.Length) { var stindex = i; var initindex = i; var xst = double.Parse(datas[i++]); var xed = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex]); var yst = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : initindex]); var yed = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : initindex]); var dur = EndTime - StartTime; Translations.Add(new VectorScaleTranslation(new VectorScaleMultiplier(xst, xed), new VectorScaleMultiplier(yst, yed), StartTime + j * dur, EndTime + j * dur)); j++; if (i + 1 < datas.Length) { i -= 2; } } }
///<inheritdoc/> public void Parse(string line) { var parts = line.Split(','); if (int.TryParse(parts[1], out var eas)) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]); } StartTime = int.Parse(parts[2]); if (string.IsNullOrEmpty(parts[3])) { parts[3] = parts[2]; } EndTime = int.Parse(parts[3]); var i = 4; var j = 0; if (i + 1 == parts.Length) { Translations.Add(new RotateTranslation(new Degrees(double.Parse(parts[4]), false), new Degrees(double.Parse(parts[4]), false), StartTime, EndTime)); } while (i + 1 < parts.Length) { var stindex = i; var st = double.Parse(parts[i++]); var ed = double.Parse(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex]); var du = EndTime - StartTime; Translations.Add(new RotateTranslation(new Degrees(st, false), new Degrees(ed, false), StartTime + j * du, EndTime + j * du)); j++; if (i + 1 < parts.Length) { i--; } } }
/// <inheritdoc /> public void Parse(string dataline) { if (!dataline.StartsWith("Animation,") && !dataline.StartsWith("6,")) { throw new FailToParseException("该行的数据不适用。"); } var data = dataline.Split(','); var suc = int.TryParse(data[1], out var layer); if (!suc) { Layer = StoryBoardTools.GetLayerByString(data[1]); } else { Layer = (StoryBoardLayer)layer; } suc = int.TryParse(data[2], out var origin); if (!suc) { Origin = StoryBoardTools.GetOriginByString(data[2]); } else { Origin = (StoryBoardOrigin)origin; } Path = data[3].Trim('\"'); Position = new OsuPixel(double.Parse(data[4]), double.Parse(data[5])); FrameCount = double.Parse(data[6]); FrameDelay = double.Parse(data[7]); suc = int.TryParse(data[8], out var loopType); if (!suc) { LoopType = StoryBoardTools.GetLoopTypeByString(data[8]); } else { LoopType = (StoryBoardAnimationLoopType)loopType; } }
///<inheritdoc/> public void Parse(string line) { var parts = line.Split(','); if (int.TryParse(parts[1], out var eas)) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]); } var ed = parts[3]; if (string.IsNullOrEmpty(ed)) { parts[3] = parts[2]; } StartTime = int.Parse(parts[2]); EndTime = int.Parse(parts[3]); int i = 4, j = 0; if (i + 1 == parts.Length) { Translations.Add(new MoveYTranslation(double.Parse(parts[4]), double.Parse(parts[4]), StartTime, EndTime)); } while (i + 1 < parts.Length) { var stindex = i; var st = double.Parse(parts[i++]); var end = double.Parse(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex]); var dur = EndTime - StartTime; Translations.Add(new MoveYTranslation(st, end, StartTime + j * dur, EndTime + j * dur)); j++; if (i + 1 < parts.Length) { i--; } } }
/// <inheritdoc /> public void Parse(string line) { var parts = line.Split(','); if (int.TryParse(parts[1], out var eas)) { Easing = (StoryBoardEasing)eas; } else { Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]); } StartTime = int.Parse(parts[2]); if (string.IsNullOrEmpty(parts[3])) { parts[3] = parts[2]; } EndTime = int.Parse(parts[3]); var op = parts[4]; Operation = op == "A" ? ParameterOperation.AddictiveColorBlend : op == "H" ? ParameterOperation.HorizentalFlip : op == "V" ? ParameterOperation.VerticalFlip : ParameterOperation.None; }