private void BnetParty_OnJoined(OnlineEventType evt, PartyInfo party, LeaveReason?reason) { if ((party.Type == PartyType.FRIENDLY_CHALLENGE) && (evt == OnlineEventType.ADDED)) { long?partyAttributeLong = BnetParty.GetPartyAttributeLong(party.Id, "WTCG.Game.ScenarioId"); if (partyAttributeLong.HasValue) { this.m_scenarioId = (int)partyAttributeLong.Value; TavernBrawlMission mission = TavernBrawlManager.Get().CurrentMission(); this.m_isChallengeTavernBrawl = (mission != null) && (this.m_scenarioId == mission.missionId); } } }
private bool CanPromptReceivedChallenge() { if (!this.IsChallengeTavernBrawl()) { return(true); } if (!TavernBrawlManager.Get().HasUnlockedTavernBrawl) { DeclineReason notUnlocked = DeclineReason.NotUnlocked; BnetParty.SetPartyAttributeLong(this.m_partyId, "WTCG.Friendly.DeclineReason", (long)notUnlocked); this.DeclineChallenge(); return(false); } TavernBrawlManager.Get().EnsureScenarioDataReady(new TavernBrawlManager.CallbackEnsureServerDataReady(this.TavernBrawl_ReceivedChallenge_OnEnsureServerDataReady)); return(false); }
private bool OnFindGameEvent(FindGameEventData eventData, object userData) { this.UpdateMyAvailability(); if (eventData.m_state == FindGameState.BNET_ERROR) { if (this.DidSendChallenge()) { BnetParty.SetPartyAttributeLong(this.m_partyId, "error", (long)GameMgr.Get().GetLastEnterGameError()); BnetParty.SetPartyAttributeString(this.m_partyId, "s1", "deck"); } else if (this.DidReceiveChallenge()) { BnetParty.SetPartyAttributeString(this.m_partyId, "s2", "deck"); } } return(false); }
private void BnetParty_OnPartyAttributeChanged_Error(PartyInfo party, string attributeKey, bnet.protocol.attribute.Variant value) { if (party.Type == PartyType.FRIENDLY_CHALLENGE) { if (this.DidReceiveChallenge() && value.HasIntValue) { object[] args = new object[] { value.IntValue }; Log.Party.Print(LogLevel.Error, "BnetParty_OnPartyAttributeChanged_Error - code={0}", args); BnetErrorInfo info = new BnetErrorInfo(BnetFeature.Games, BnetFeatureEvent.Games_OnCreated, (BattleNetErrors)((uint)value.IntValue)); GameMgr.Get().OnBnetError(info, null); } if (BnetParty.IsLeader(party.Id) && !value.IsNone()) { BnetParty.ClearPartyAttribute(party.Id, attributeKey); } } }
public void OnLoggedIn() { Network.Get().SetPartyHandler(new Network.PartyHandler(this.OnPartyUpdate)); NetCache.Get().RegisterFriendChallenge(new NetCache.NetCacheCallback(this.OnNetCacheReady)); SceneMgr.Get().RegisterSceneUnloadedEvent(new SceneMgr.SceneUnloadedCallback(this.OnSceneUnloaded)); SceneMgr.Get().RegisterSceneLoadedEvent(new SceneMgr.SceneLoadedCallback(this.OnSceneLoaded)); BnetPresenceMgr.Get().AddPlayersChangedListener(new BnetPresenceMgr.PlayersChangedCallback(this.OnPlayersChanged)); BnetFriendMgr.Get().AddChangeListener(new BnetFriendMgr.ChangeCallback(this.OnFriendsChanged)); BnetNearbyPlayerMgr.Get().AddChangeListener(new BnetNearbyPlayerMgr.ChangeCallback(this.OnNearbyPlayersChanged)); BnetEventMgr.Get().AddChangeListener(new BnetEventMgr.ChangeCallback(this.OnBnetEventOccurred)); GameMgr.Get().RegisterFindGameEvent(new GameMgr.FindGameCallback(this.OnFindGameEvent)); BnetParty.OnJoined += new BnetParty.JoinedHandler(this.BnetParty_OnJoined); BnetParty.RegisterAttributeChangedHandler("WTCG.Friendly.DeclineReason", new BnetParty.PartyAttributeChangedHandler(this.BnetParty_OnPartyAttributeChanged_DeclineReason)); BnetParty.RegisterAttributeChangedHandler("error", new BnetParty.PartyAttributeChangedHandler(this.BnetParty_OnPartyAttributeChanged_Error)); this.AddChangedListener(new ChangedCallback(this.OnChallengeChanged)); BnetPresenceMgr.Get().SetGameField(0x13, BattleNet.GetVersion()); BnetPresenceMgr.Get().SetGameField(20, BattleNet.GetEnvironment()); }
private void TavernBrawl_ReceivedChallenge_OnEnsureServerDataReady_OnDeckContentsReady(long deckId) { CollectionManager.Get().RemoveDeckContentsListener(new CollectionManager.DelOnDeckContents(this.TavernBrawl_ReceivedChallenge_OnEnsureServerDataReady_OnDeckContentsReady)); TavernBrawlMission mission = TavernBrawlManager.Get().CurrentMission(); string key = null; DeclineReason? nullable = null; if (mission == null) { nullable = 0; } if (((mission != null) && mission.canCreateDeck) && !TavernBrawlManager.Get().HasValidDeck()) { nullable = 2; key = "GLOBAL_FRIEND_CHALLENGE_TAVERN_BRAWL_RECIPIENT_NO_VALID_DECK_RECIPIENT"; } if (key != null) { AlertPopup.PopupInfo info = new AlertPopup.PopupInfo { m_headerText = GameStrings.Get("GLOBAL_FRIEND_CHALLENGE_TAVERN_BRAWL_HEADER") }; object[] args = new object[] { FriendUtils.GetUniqueName(this.m_challenger) }; info.m_text = GameStrings.Format(key, args); info.m_responseDisplay = AlertPopup.ResponseDisplay.OK; DialogManager.Get().ShowPopup(info); } if (nullable.HasValue) { BnetParty.SetPartyAttributeLong(this.m_partyId, "WTCG.Friendly.DeclineReason", (long)nullable.Value); this.DeclineChallenge(); } else { if (this.IsChallengeTavernBrawl()) { Enum[] enumArray1 = new Enum[] { PresenceStatus.TAVERN_BRAWL_FRIENDLY_WAITING }; PresenceMgr.Get().SetStatus(enumArray1); } this.ShowIReceivedChallengeDialog(this.m_challenger); } }