当前位置: 首页>>代码示例>>C#>>正文


C# CallbackManager.Add方法代码示例

本文整理汇总了C#中CallbackManager.Add方法的典型用法代码示例。如果您正苦于以下问题:C# CallbackManager.Add方法的具体用法?C# CallbackManager.Add怎么用?C# CallbackManager.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CallbackManager的用法示例。


在下文中一共展示了CallbackManager.Add方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SetupDotaClientCallbacks

        /// <summary>
        /// Setup the DOTA client callbacks
        /// </summary>
        /// <param name="cb"></param>
        private void SetupDotaClientCallbacks(CallbackManager cb)
        {
            cb.Add<DotaGameClient.HandshakeRejected>(rej =>
            {
                log.ErrorFormat("Connection to the game rejected with reason {0}. Attempts {1}/{2}.", rej.reason, _connAttempts, maxAttempts);
            });
            cb.Add<DotaGameClient.SessionStateTransition>(tra =>
            {
                log.Debug("[GameClient] "+tra.OldStatus.ToString("G")+" => "+tra.NewStatus.ToString("G"));

                if (tra.NewStatus == States.PLAY)
                {
                    _connAttempts = 0;
                }

                if (tra.NewStatus != States.DISCONNECTED || _state.State != State.DotaPlay) return;
                log.WarnFormat("Client has disconnected, attempts {0}/{1}.{2}", _connAttempts, maxAttempts, _connAttempts<maxAttempts ? " Retrying." : " Not retrying.");
                if (_connAttempts < maxAttempts)
                    StartDotaGameConnection();
            });
            cb.Add<DotaGameClient.LogMessage>(msg =>
            {
                log.Debug("[GameClient] "+msg.message);
            });
        }
开发者ID:KimimaroTsukimiya,项目名称:DotaGameConnect,代码行数:29,代码来源:Bot.cs

示例2: SetupSteamCallbacks

        /// <summary>
        /// Setup steam client callbacks
        /// </summary>
        /// <param name="cb"></param>
        private void SetupSteamCallbacks(CallbackManager cb)
        {
            // Handle general connection stuff
            cb.Add<SteamUser.AccountInfoCallback>(a =>
            {
                log.DebugFormat("Current name is: {0}, flags {1}, ", a.PersonaName, a.AccountFlags.ToString("G"));
                UpdatePersona();
            });
            cb.Add<SteamClient.ConnectedCallback>(a => SteamUser.LogOn(_logonDetails));
            cb.Add<SteamClient.DisconnectedCallback>(a => _state.Fire(Trigger.SteamDisconnected));
            cb.Add<SteamUser.LoggedOnCallback>(a =>
            {
                log.DebugFormat("Steam signin result: {0}", a.Result.ToString("G"));
                switch (a.Result)
                {
                    case EResult.OK:
                        _state.Fire(Trigger.SteamConnected);
                        break;

                    case EResult.ServiceUnavailable:
                    case EResult.ServiceReadOnly:
                    case EResult.TryAnotherCM:
                    case EResult.AccountLoginDeniedThrottle:
                    case EResult.AlreadyLoggedInElsewhere:
                    case EResult.BadResponse:
                    case EResult.Busy:
                    case EResult.ConnectFailed:
                        _state.Fire(Trigger.SteamDisconnected); //retry state
                        break;
                    default:
                        _state.Fire(Trigger.SteamInvalidCreds);
                        break;
                }
            });
        }
开发者ID:KimimaroTsukimiya,项目名称:DotaGameConnect,代码行数:39,代码来源:Bot.cs

示例3: SetupDotaGCCallbacks

 /// <summary>
 /// Setup DOTA 2 game coordinator callbacks
 /// </summary>
 /// <param name="cb">Manager</param>
 private void SetupDotaGCCallbacks(CallbackManager cb)
 {
     cb.Add<DotaGCHandler.GCWelcomeCallback>(a => { log.Debug("GC session welcomed"); _state.Fire(Trigger.DotaConnected); });
     cb.Add<DotaGCHandler.ConnectionStatus>(a =>
     {
         log.DebugFormat("GC connection status: {0}", a.result.status.ToString("G"));
         if (a.result.status == GCConnectionStatus.GCConnectionStatus_HAVE_SESSION)
             _state.Fire(Trigger.DotaConnected);
         else _state.Fire(Trigger.DotaDisconnected);
     });
     cb.Add<DotaGCHandler.Popup>(a => log.DebugFormat("GC popup message: {0}", a.result.id.ToString("G")));
     cb.Add<DotaGCHandler.PracticeLobbySnapshot>(a => HandleLobbyUpdate(a.lobby));
     cb.Add<DotaGCHandler.PracticeLobbyLeave>(a => HandleLobbyUpdate(null));
     cb.Add<DotaGCHandler.PracticeLobbyUpdate>(a => HandleLobbyUpdate(a.lobby));
     cb.Add<DotaGCHandler.JoinChatChannelResponse>(a =>
     {
         if (DotaGCHandler.Lobby != null && a.result.channel_id != 0 &&
             a.result.channel_name == "Lobby_" + DotaGCHandler.Lobby.lobby_id)
             lobbyChannelId = a.result.channel_id;
     });
     cb.Add<DotaGCHandler.ChatMessage>(
         a =>
         {
             log.DebugFormat("[Chat][" +
                             (a.result.channel_id == lobbyChannelId ? "Lobby" : a.result.channel_id + "") + "] " +
                             a.result.persona_name + ": " + a.result.text);
             if (a.result.channel_id == lobbyChannelId)
             {
                 if(a.result.text.Contains("!start")) DotaGCHandler.LaunchLobby();
             }
         });
 }
开发者ID:KimimaroTsukimiya,项目名称:DotaGameConnect,代码行数:36,代码来源:Bot.cs

示例4: InitAndConnect

        private void InitAndConnect()
        {
            if (client == null)
            {
                client = new SteamClient();
                DotaGCHandler.Bootstrap(client);
                user = client.GetHandler<SteamUser>();
                friends = client.GetHandler<SteamFriends>();
                dota = client.GetHandler<DotaGCHandler>();
                manager = new CallbackManager(client);

                isRunning = true;
                manager.Add<SteamClient.ConnectedCallback>(c =>
                {
                    if (c.Result != EResult.OK)
                    {
                        fsm.FirePriority(Events.Disconnected);
                        isRunning = false;
                        return;
                    }

                    user.LogOn(details);
                });
                manager.Add<SteamClient.DisconnectedCallback>(
                    c =>
                    {
                        fsm?.Fire(Events.Disconnected);
                    });
                manager.Add<SteamUser.LoggedOnCallback>(c =>
                {
                    if (c.Result != EResult.OK)
                    {
                        log.Error("Logon failure, result: " + c.Result);
                        switch (c.Result)
                        {
                            case EResult.AccountLogonDenied:
                                fsm.Fire(Events.LogonFailSteamGuard);
                                return;
                            case EResult.ServiceUnavailable:
                            case EResult.TryAnotherCM:
                                fsm.Fire(Events.LogonFailSteamDown);
                                return;
                        }
                        fsm.Fire(Events.LogonFailBadCreds);
                    }
                    else
                    {
                        fsm.Fire(Events.Connected);
                    }
                });
                manager.Add<DotaGCHandler.UnhandledDotaGCCallback>(
                    c => log.Debug("Unknown GC message: " + c.Message.MsgType));
                manager.Add<DotaGCHandler.GCWelcomeCallback>(
                    c => fsm.Fire(Events.DotaGCReady));
                manager.Add<SteamFriends.FriendsListCallback>(c => log.Debug(c.FriendList));
                manager.Add<DotaGCHandler.PracticeLobbySnapshot>(c =>
                {
                    log.DebugFormat("Lobby snapshot received with state: {0}", c.lobby.state);

                    fsm.Fire(c.lobby.state == CSODOTALobby.State.RUN
                        ? Events.DotaEnterLobbyRun
                        : Events.DotaEnterLobbyUI);

                    switch (c.lobby.state)
                    {
                        case CSODOTALobby.State.UI:
                            fsm.FirePriority(Events.DotaEnterLobbyUI);
                            break;
                        case CSODOTALobby.State.RUN:
                            fsm.FirePriority(Events.DotaEnterLobbyRun);
                            break;
                    }
                    LobbyUpdate?.Invoke(c.lobby);
                });
                manager.Add<DotaGCHandler.PingRequest>(c =>
                {
                    log.Debug("GC Sent a ping request. Sending pong!");
                    dota.Pong();
                });
                manager.Add<DotaGCHandler.Popup>(
                    c => { log.DebugFormat("Received message (popup) from GC: {0}", c.result.id); });
                manager.Add<DotaGCHandler.ConnectionStatus>(
                    c => log.DebugFormat("GC Connection Status: {0}", JObject.FromObject(c.result)));
                manager.Add<DotaGCHandler.PracticeLobbySnapshot>(c =>
                {
                    log.DebugFormat("Lobby snapshot received with state: {0}", c.lobby.state);
                    if (c.lobby != null)
                    {
                        switch (c.lobby.state)
                        {
                            case CSODOTALobby.State.UI:
                                fsm.FirePriority(Events.DotaEnterLobbyUI);
                                break;
                            case CSODOTALobby.State.RUN:
                                fsm.FirePriority(Events.DotaEnterLobbyRun);
                                break;
                        }
                    }
                    LobbyUpdate?.Invoke(c.lobby);
                });
//.........这里部分代码省略.........
开发者ID:jgoyvaerts,项目名称:Dota2LobbyDump,代码行数:101,代码来源:Bot.cs


注:本文中的CallbackManager.Add方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。