Ejemplo n.º 1
0
        public static Commander FromFrontierApiCmdr(Commander currentCmdr, FrontierApiCommander frontierApiCommander, DateTime apiTimeStamp, DateTime journalTimeStamp, out bool cmdrMatches)
        {
            if (frontierApiCommander is null)
            {
                cmdrMatches = true; return(currentCmdr);
            }

            // Copy our current commander to a new commander object
            Commander Cmdr = currentCmdr.Copy();

            // Set our commander name if it hadn't already been set
            Cmdr.name = string.IsNullOrEmpty(Cmdr.name) ? frontierApiCommander.name : Cmdr.name;

            // Verify that the profile information matches the current Cmdr name
            if (frontierApiCommander.name != Cmdr.name)
            {
                Logging.Warn("Frontier API incorrectly configured: Returning information for Commander " +
                             frontierApiCommander.name + " rather than for " + Cmdr.name + ". Disregarding incorrect information.");
                cmdrMatches = false;
                return(Cmdr);
            }
            cmdrMatches = true;

            // Update our commander object with information exclusively available from the Frontier API
            Cmdr.crimerating   = frontierApiCommander.crimerating;
            Cmdr.servicerating = frontierApiCommander.servicerating;
            Cmdr.credits       = frontierApiCommander.credits;
            Cmdr.debt          = frontierApiCommander.debt;

            // Update our commander object with information obtainable from the journal
            // Since the parameters below only increase, we will take any that are higher in rank than we had before
            Cmdr.combatrating = (frontierApiCommander.combatrating?.rank ?? 0) >= (Cmdr.combatrating?.rank ?? 0)
                ? frontierApiCommander.combatrating : Cmdr.combatrating;
            Cmdr.traderating = (frontierApiCommander.traderating?.rank ?? 0) >= (Cmdr.traderating?.rank ?? 0)
                ? frontierApiCommander.traderating : Cmdr.traderating;
            Cmdr.explorationrating = (frontierApiCommander.explorationrating?.rank ?? 0) >= (Cmdr.explorationrating?.rank ?? 0)
                ? frontierApiCommander.explorationrating : Cmdr.explorationrating;
            Cmdr.cqcrating = (frontierApiCommander.cqcrating?.rank ?? 0) >= (Cmdr.cqcrating?.rank ?? 0)
                ? frontierApiCommander.cqcrating : Cmdr.cqcrating;
            Cmdr.empirerating = (frontierApiCommander.empirerating?.rank ?? 0) >= (Cmdr.empirerating?.rank ?? 0)
                ? frontierApiCommander.empirerating : Cmdr.empirerating;
            Cmdr.federationrating = (frontierApiCommander.federationrating?.rank ?? 0) >= (Cmdr.federationrating?.rank ?? 0)
                ? frontierApiCommander.federationrating : Cmdr.federationrating;
            Cmdr.mercenaryrating = (frontierApiCommander.mercenaryrating?.rank ?? 0) >= (Cmdr.mercenaryrating?.rank ?? 0)
                ? frontierApiCommander.mercenaryrating : Cmdr.mercenaryrating;
            Cmdr.exobiologistrating = (frontierApiCommander.exobiologistrating?.rank ?? 0) >= (Cmdr.exobiologistrating?.rank ?? 0)
                ? frontierApiCommander.exobiologistrating : Cmdr.exobiologistrating;
            // Power rating is also updated from the journal but may decrease so we check the timestamp
            if (apiTimeStamp > journalTimeStamp)
            {
                Cmdr.powerrating = frontierApiCommander.powerrating;
            }

            return(Cmdr);
        }