public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { Plugin_PatchDetector_Config cfg = (Plugin_PatchDetector_Config)Host.GetConfiguration(typeof(Plugin_PatchDetector_Config), typeof(Plugin_PatchDetector)); Plugin_PatchDetector_Config.PPMapping mapped = null; if (replay.MapName.Contains("1.02+")) mapped = cfg.Mappings.FirstOrDefault(pp => pp.Mapped_MC.ToLower() == replay.MapVersion.ToLower()); if (mapped == null) return "Vanilla"; return mapped.FriendlyName; }
public override void OnPreSave(KWReplayFile replay) { config = GetConfiguration<Plugin_MatchOfTheDay_Config>(); if (DateTime.Today.Date != config.LastMatch.Date) { config.LastMatch = DateTime.Today; config.CounterOfToday = 0; } SaveConfiguration(config); }
public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { int digit_count = string.IsNullOrWhiteSpace(OptionalArguments) ? 4 : int.Parse(OptionalArguments); StringBuilder sbformat = new StringBuilder(digit_count); sbformat.Append("{0:"); for (int i = 0; i < digit_count; i++) sbformat.Append('0'); sbformat.Append("}"); string formatString = sbformat.ToString(); sbformat.Clear(); sbformat = null; Plugin_MatchOfTheDay_Config cfg = (Plugin_MatchOfTheDay_Config)host.GetConfiguration(typeof(Plugin_MatchOfTheDay_Config), typeof(Plugin_MatchOfTheDay)); return string.Format(formatString, cfg.CounterOfToday); }
public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { StringBuilder sb = new StringBuilder(); foreach (PlayerSlot player in replay.PlayerSlots.Where(ps => ps != PlayerSlot.Empty).OrderBy(ps2 => ps2.PlayerName).ThenBy(ps3 => ps3.PlayerIndex)) { sb.AppendFormat("{0}.", player.PlayerName); } string rslt = sb.ToString().Trim('.', ' '); sb.Clear(); sb = null; return rslt; }
static void Main(string[] args) { using (FileStream fs = new FileStream(@"C:\Users\wiki\Desktop\Replays\R11\2015.09.07\0003.[1.02+] Twisted Arena.HateMeLikeAPro.Lucwasbeer.KWReplay", FileMode.Open, FileAccess.Read)) { KWReplayFile replay = new KWReplayFile(); replay.ParseStream(fs); foreach (var player in replay.PlayerSlots) { } } using (FileStream fs = new FileStream(@"D:\tmp2\bigstuff\MPMaps.big", FileMode.Open, FileAccess.Read)) { BigFile bf = new BigFile(fs); bf.LoadArchive(); BigFilePart part = bf.GetPart(@"data\mapmetadata.bin"); //if (!Directory.Exists(output_dir)) Directory.CreateDirectory(output_dir); //foreach (BigFilePart part in bf.PartStartsWith(@"data\maps\official\map_mp_4_bass")) //{ // using (FileStream sfs = new FileStream(Path.Combine(output_dir, part.FileName.Substring(part.FileName.LastIndexOf('\\') + 1)), FileMode.Create, FileAccess.ReadWrite)) // { // using (Stream content = part.OpenStream()) content.CopyTo(sfs); // } //} using (FileStream sf = new FileStream(@"D:\tmp2\bigstuff\map_mp_4_bass\test.tga", FileMode.Create, FileAccess.Write)) { using (Stream content = part.OpenStream()) { content.CopyTo(sf); } //using (StreamWriter sr = new StreamWriter(sf)) //{ // foreach (BigFilePart bfp in bf.FileParts) // { // sr.WriteLine("[{0}]: {1}", bfp.Offset, bfp.FileName); // } //} } } Console.ReadLine(); }
private void FileBinder_OnNewReplay(string ReplayFile) { KWReplayFile replay = new KWReplayFile(); using (FileStream fs = new FileStream(ReplayFile, FileMode.Open, FileAccess.Read)) replay.ParseStream(fs); LoadedPlugins.ForEach(lp => lp.OnPreSave(replay)); string NewFile = EvalExpression(txtSaveBase.Text, txtExpression.Text, replay); string NewFileName = Path.GetFileName(NewFile); string NewFileDirectory = Path.GetDirectoryName(NewFile); if (!Directory.Exists(NewFileDirectory)) Directory.CreateDirectory(NewFileDirectory); File.Copy(ReplayFile, NewFile); SPNOTIF.Play(); LoadedPlugins.ForEach(lp => lp.OnSaveComplete(NewFileName, NewFile, replay)); LogMessage(MessageType.Notification, "Successfully saved \"<b>{0}</b>\"!", NewFileName); }
public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { int digit_count = string.IsNullOrWhiteSpace(OptionalArguments) ? 4 : int.Parse(OptionalArguments); StringBuilder sbformat = new StringBuilder(digit_count); sbformat.Append("{0:"); for (int i = 0; i < digit_count; i++) sbformat.Append('0'); sbformat.Append("}"); string formatString = sbformat.ToString(); sbformat.Clear(); sbformat = null; int counter = 0; while (true) { if (!File.Exists(Regex.Replace(CurrentFilename, InnerRegex, string.Format(formatString, counter)))) break; else counter++; } return string.Format(formatString, counter); }
public abstract string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "");
public string EvalExpression(string BaseDirectory, string Expression, KWReplayFile replay) { string target_file = BaseDirectory.TrimEnd('\\') + '\\' + Expression.TrimStart('\\'); foreach (RegexCommand rc in AvailableRegexes()) { string CreatedRegex = "{" + rc.InnerRegex + "}"; Match rm = Regex.Match(target_file, CreatedRegex); if (rm != null && rm.Success) { string param = null; if (rm.Groups.Count != 0) param = rm.Groups["OptionalArguments"].Value.TrimStart(':'); target_file = Regex.Replace(target_file, CreatedRegex, rc.FormatFunction(replay, target_file, param)); } } return target_file; }
public override void OnSaveComplete(string SavedFilename, string Fullname, KWReplayFile replay) { config = GetConfiguration<Plugin_MatchOfTheDay_Config>(); config.CounterOfToday++; SaveConfiguration(config); }
public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { string fm = string.IsNullOrWhiteSpace(OptionalArguments) ? "dd.MM.yyyy" : OptionalArguments; return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Add(TimeSpan.FromSeconds((double)replay.MatchTimestamp)).ToString(fm); }
public override string FormatFunction(KWReplayFile replay, string CurrentFilename, string OptionalArguments = "") { return replay.MapName; }