protected override void Init() { Settings = PodiumPluginSettings.ReadFromFile(PluginSettingsFilePath, "Hours Played", -24); SendEmptyManiaLinkPage(_linkPageID); Context.RPCClient.Callbacks.BeginRace += Callbacks_BeginRace; Context.RPCClient.Callbacks.EndRace += Callbacks_EndRace; }
protected override void Init() { Settings = PodiumPluginSettings.ReadFromFile(PluginSettingsFilePath, "Most Top3 Race Results", 8); SendEmptyManiaLinkPage(_linkPageID); Context.RPCClient.Callbacks.BeginRace += Callbacks_BeginRace; Context.RPCClient.Callbacks.EndRace += Callbacks_EndRace; }
public static PodiumPluginSettings ReadFromFile(string xmlConfigurationFile, string title, double x) { string settingsDirectory = Path.GetDirectoryName(xmlConfigurationFile); PodiumPluginSettings result = new PodiumPluginSettings(); XDocument configDocument = XDocument.Load(xmlConfigurationFile); if (configDocument.Root == null) { throw new ConfigurationErrorsException("Could not find root node in file: " + xmlConfigurationFile); } result.MaxEntriesToShow = ReadConfigUInt(configDocument.Root, "MaxEntriesToShow", MAX_ENTRIES_TO_SHOW, xmlConfigurationFile); result.Title = ReadConfigString(configDocument.Root, "Title", title, xmlConfigurationFile); result.X = ReadConfigDouble(configDocument.Root, "PositionX", x, xmlConfigurationFile); result.StripNickFormatting = ReadConfigBool(configDocument.Root, "StripNickFormatting", STRIP_NICK_FORMATTING, xmlConfigurationFile); result.EntryToContainerMarginY = ENTRY_TO_CONTAINER_MARGIN_Y; result.EntryStartMargin = ENTRY_START_MARGIN; result.EntryEndMargin = ENTRY_END_MARGIN; result.EntryHeight = ENTRY_HEIGHT; result.MainTemplate = UITemplates.MainTemplate; result.EntryTemplate = UITemplates.EntryTemplate; string recordListTemplateFile = Path.Combine(settingsDirectory, "EntryListTemplate.xml"); if (File.Exists(recordListTemplateFile)) { XDocument listTemplateDocument = XDocument.Load(recordListTemplateFile); if (listTemplateDocument.Root == null) { throw new ConfigurationErrorsException("Could not find root node in file: " + listTemplateDocument); } result.EntryToContainerMarginY = ReadConfigDouble(listTemplateDocument.Root, "EntryToContainerMarginY", result.EntryToContainerMarginY, recordListTemplateFile); result.EntryStartMargin = ReadConfigDouble(listTemplateDocument.Root, "EntryStartMargin", result.EntryStartMargin, recordListTemplateFile); result.EntryEndMargin = ReadConfigDouble(listTemplateDocument.Root, "EntryEndMargin", result.EntryEndMargin, recordListTemplateFile); result.EntryHeight = ReadConfigDouble(listTemplateDocument.Root, "EntryHeight", result.EntryHeight, recordListTemplateFile); XElement templatesElement = listTemplateDocument.Root.Element("Templates"); if (templatesElement != null) { result.MainTemplate = ReadConfigString(templatesElement, "MainTemplate", result.MainTemplate, recordListTemplateFile); result.EntryTemplate = ReadConfigString(templatesElement, "EntryTemplate", result.EntryTemplate, recordListTemplateFile); } } return(result); }
public static string GetRecordListManiaLinkPage(IList <PodiumPluginUIEntry> entries, string maniaLinkPageID, PodiumPluginSettings settings) { double totalHeight = Math.Abs(settings.EntryToContainerMarginY * 2) + Math.Abs(settings.EntryHeight * entries.Count) + Math.Abs(settings.EntryEndMargin); XElement mainTemplate = XElement.Parse(settings.MainTemplate.Replace("{[ManiaLinkID]}", maniaLinkPageID).Replace("{[ContainerHeight}}", totalHeight.ToString(CultureInfo.InvariantCulture)).Replace("{[Title]}", settings.Title).Replace("{[X]}", settings.X.ToString(CultureInfo.InvariantCulture))); XElement rankingPlaceHolder = mainTemplate.Descendants("EntryPlaceHolder").First(); double currentY = settings.EntryStartMargin; XElement lastInsertedNode = rankingPlaceHolder; for (uint i = 1; i <= entries.Count; i++) { PodiumPluginUIEntry entry = entries[(int)i - 1]; XElement currentElement = GetEntryElement(entry, settings.EntryTemplate, currentY, i, settings.StripNickFormatting); lastInsertedNode.AddAfterSelf(currentElement); lastInsertedNode = currentElement; currentY -= settings.EntryHeight; } rankingPlaceHolder.Remove(); return(mainTemplate.ToString()); }