public bnet.protocol.presence.Field QueryField(bnet.protocol.presence.FieldKey queryKey) { var field = bnet.protocol.presence.Field.CreateBuilder().SetKey(queryKey); switch ((FieldKeyHelper.Program)queryKey.Program) { case FieldKeyHelper.Program.D3: if (queryKey.Group == 1 && queryKey.Field == 1) // Account's selected toon. { if (this.LoggedInClient != null) // check if the account is online actually. { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.LoggedInClient.CurrentToon.D3EntityID.ToByteString()).Build()); } } else { Logger.Warn("Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); } break; case FieldKeyHelper.Program.BNet: Logger.Warn("Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); break; } return(field.HasValue ? field.Build() : null); }
public bnet.protocol.presence.Field QueryField(bnet.protocol.presence.FieldKey queryKey) { var field = bnet.protocol.presence.Field.CreateBuilder().SetKey(queryKey); switch ((FieldKeyHelper.Program)queryKey.Program) { case FieldKeyHelper.Program.D3: if (queryKey.Group == 1 && queryKey.Field == 1) // Account's last selected toon. { if (this.IsOnline) // check if the account is online actually. { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.LastSelectedHeroField.Value.ToByteString()).Build()); } } else if (queryKey.Group == 1 && queryKey.Field == 2) // Account's last selected Game Account { if (this.IsOnline) // check if the account is online actually. { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.LastSelectedGameAccount.ToByteString()).Build()); } } else { Logger.Warn("Account Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); } break; case FieldKeyHelper.Program.BNet: if (queryKey.Group == 1 && queryKey.Field == 5) // Account's battleTag { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetStringValue(this.BattleTag).Build()); } else { Logger.Warn("Account Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); } break; } return(field.HasValue ? field.Build() : null); }
public bnet.protocol.presence.Field QueryField(bnet.protocol.presence.FieldKey queryKey) { var field = bnet.protocol.presence.Field.CreateBuilder().SetKey(queryKey); switch ((FieldKeyHelper.Program)queryKey.Program) { case FieldKeyHelper.Program.D3: if (queryKey.Group == 2 && queryKey.Field == 1) // Banner configuration { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.Owner.BannerConfiguration.ToByteString()).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 1) // Hero's class (GbidClass) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(this.ClassID).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 2) // Hero's current level { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(this.Level).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 3) // Hero's visible equipment { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.Equipment.ToByteString()).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 4) // Hero's flags (gender and such) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue((uint)(this.Flags | ToonFlags.BothUnknowns)).Build()); } else if (queryKey.Group == 4 && queryKey.Field == 1) // Channel ID if the client is online { if (this.Owner.LoggedInBNetClient != null) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.Owner.LoggedInBNetClient.CurrentChannel.D3EntityId.ToByteString()).Build()); } } else if (queryKey.Group == 4 && queryKey.Field == 2) // Current screen (all known values are just "in-menu"; also see ScreenStatuses sent in ChannelService.UpdateChannelState) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(0).Build()); } break; case FieldKeyHelper.Program.BNet: if (queryKey.Group == 3 && queryKey.Field == 2) // Toon name { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetStringValue(this.Name).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 3) // Whether the toon is online { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetBoolValue(true).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 5) // Away status - 0 for online { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(0).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 9) // Program - always D3 { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetFourccValue("D3").Build()); } break; } return(field.HasValue ? field.Build() : null); }
public bnet.protocol.presence.Field QueryField(bnet.protocol.presence.FieldKey queryKey) { var field = bnet.protocol.presence.Field.CreateBuilder().SetKey(queryKey); switch ((FieldKeyHelper.Program)queryKey.Program) { case FieldKeyHelper.Program.D3: if (queryKey.Group == 2 && queryKey.Field == 1) // Banner configuration { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.BannerConfigurationField.Value.ToByteString()).Build()); } else if (queryKey.Group == 2 && queryKey.Field == 2) //Hero's EntityId { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.lastPlayedHeroId.ToByteString()).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 1) // Hero's class (GbidClass) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(this.CurrentToon.ClassID).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 2) // Hero's current level { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(this.CurrentToon.Level).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 3) // Hero's visible equipment { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.CurrentToon.Equipment.ToByteString()).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 4) // Hero's flags (gender and such) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue((uint)(this.CurrentToon.Flags | ToonFlags.AllUnknowns)).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 5) // Toon name { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetStringValue(this.CurrentToon.Name).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 6) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(0).Build()); } else if (queryKey.Group == 3 && queryKey.Field == 7) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(0).Build()); } else if (queryKey.Group == 4 && queryKey.Field == 1) // Channel ID if the client is online { if (this.LoggedInClient != null && this.LoggedInClient.CurrentChannel != null) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetMessageValue(this.LoggedInClient.CurrentChannel.D3EntityId.ToByteString()).Build()); } else { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().Build()); } } else if (queryKey.Group == 4 && queryKey.Field == 2) // Current screen (all known values are just "in-menu"; also see ScreenStatuses sent in ChannelService.UpdateChannelState) { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue(this.ScreenStatus.Screen).Build()); } else if (queryKey.Group == 4 && queryKey.Field == 4) //Unknown Bool { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetBoolValue(false).Build()); } else { Logger.Warn("GameAccount Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); } break; case FieldKeyHelper.Program.BNet: if (queryKey.Group == 2 && queryKey.Field == 1) //GameAccount Logged in { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetBoolValue(this.GameAccountStatusField.Value).Build()); } else if (queryKey.Group == 2 && queryKey.Field == 3) // Away status { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetIntValue((long)this.AwayStatus).Build()); } else if (queryKey.Group == 2 && queryKey.Field == 4) // Program - always D3 { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetFourccValue("D3").Build()); } else if (queryKey.Group == 2 && queryKey.Field == 6) // BattleTag { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetStringValue(this.Owner.BattleTag).Build()); } else if (queryKey.Group == 2 && queryKey.Field == 8) // Account.EntityId { field.SetValue(bnet.protocol.attribute.Variant.CreateBuilder().SetEntityidValue(this.Owner.BnetEntityId).Build()); } else { Logger.Warn("GameAccount Unknown query-key: {0}, {1}, {2}", queryKey.Program, queryKey.Group, queryKey.Field); } break; } return(field.HasValue ? field.Build() : null); }