示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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);
        }
示例#4
0
        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());
        }