示例#1
0
        private bool FetchRichPresenceResource(Variant presenceValue)
        {
            if (presenceValue == null)
            {
                return(false);
            }
            RichPresence richPresence = RichPresence.ParseFrom(presenceValue.MessageValue);

            if (richPresence == null || !richPresence.IsInitialized)
            {
                base.ApiLog.LogError("Rich presence field from battle.net does not contain valid RichPresence message");
                return(false);
            }
            if (this.m_richPresenceStringTables.ContainsKey(richPresence))
            {
                return(false);
            }
            FourCC programId = new FourCC(richPresence.ProgramId);
            FourCC streamId  = new FourCC(richPresence.StreamId);
            FourCC locale    = new FourCC(BattleNet.Client().GetLocaleName());

            this.IncrementOutstandingRichPresenceStringFetches();
            ResourcesAPI resources = this.m_battleNet.Resources;

            resources.LookupResource(programId, streamId, locale, new ResourcesAPI.ResourceLookupCallback(this.ResouceLookupCallback), richPresence);
            return(true);
        }
示例#2
0
        private bool ResolveRichPresenceStrings(out string richPresenceString, bgs.types.EntityId entityId, ulong index, int recurseDepth)
        {
            richPresenceString = string.Empty;
            FieldKey fieldKey = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.BNET.GetValue());
            fieldKey.SetGroup(2u);
            fieldKey.SetField(8u);
            fieldKey.SetIndex(index);
            Variant cache = this.m_presenceCache.GetCache(entityId, fieldKey);

            if (cache == null)
            {
                base.ApiLog.LogError("Expected field missing from presence cache when resolving rich presence string");
                return(false);
            }
            RichPresence richPresence = RichPresence.ParseFrom(cache.MessageValue);

            if (richPresence == null || !richPresence.IsInitialized)
            {
                base.ApiLog.LogError("Rich presence field did not contain valid RichPresence message when resolving");
                return(false);
            }
            if (!this.m_richPresenceStringTables.ContainsKey(richPresence))
            {
                return(false);
            }
            PresenceAPI.IndexToStringMap indexToStringMap = this.m_richPresenceStringTables[richPresence];
            if (!indexToStringMap.ContainsKey((ulong)richPresence.Index))
            {
                base.ApiLog.LogWarning("Rich presence string table data is missing");
                return(false);
            }
            richPresenceString = indexToStringMap[(ulong)richPresence.Index];
            if (recurseDepth < 1 && !this.SubstituteVariables(out richPresenceString, richPresenceString, entityId, recurseDepth + 1))
            {
                base.ApiLog.LogWarning("Failed to substitute rich presence variables in: {0}", new object[]
                {
                    richPresenceString
                });
                return(false);
            }
            return(true);
        }