예제 #1
0
        public bool onSessionCmd(ISession s, object sCtx, string cls, string method, object par)
        {
            AEPlayer p = null;

            if (!_players.TryGetValue(s.sessionID, out p))
            {
                s.lastErrorCode = AEErrorCode.ERR_SESSOIN_PLAYER_NOT_EXIST;
                s.lastErrorMsg  = "game [" + this.name + "] onSessionCmd sid [" + s.sessionID + "] player not exist!";
                Debug.logger.log(LogType.LOG_ERR, s.lastErrorMsg);
                return(false);
            }

            IGameModule m = getGameModule(cls);

            if (m == null)
            {
                if (this.name == "SHOutGame" && cls == "webGame")
                {
                    s.lastErrorCode = AEErrorCode.ERR_SESSION_NEED_LOGIN;
                    s.lastErrorMsg  = "need login!";
                }
                else
                {
                    s.lastErrorCode = AEErrorCode.ERR_SYS_SERVER_INTERNAL_ERROR;
                    s.lastErrorMsg  = "game [" + this.name + "] onSessionCmd sid [" + s.sessionID + "] game module[" + cls + "] not exist!";
                }
                if (method != "refreshUser" && method != "logout")
                {
                    Debug.logger.log(LogType.LOG_ERR, s.lastErrorMsg);
                }
                return(false);
            }

            return(m.onPlayerCmd(p, sCtx, method, par));
        }
예제 #2
0
        public IPlayer getPlayerByID(ulong id)
        {
            AEPlayer p = null;

            _players.TryGetValue(id, out p);
            return(p);
        }
예제 #3
0
        public void onAddSession(ISession s, string cls, string method, object par)
        {
            AEPlayer p = _newPlayer();

            p.init(s);

            _players[s.sessionID] = p;

            // initialize player
            foreach (var item in _modules)
            {
                item.Value.initPlayer(p);
            }
        }
예제 #4
0
        public void onSessionClose(ISession s, string cls, string method, object par)
        {
            AEPlayer p = null;

            if (!_players.TryGetValue(s.sessionID, out p))
            {
                Debug.logger.log(LogType.LOG_ERR, "game [" + this.name + "] onSessionClose sid [" + s.sessionID + "] player not exist!");
                return;
            }

            // TO DO : clear player

            // foreach(var item in _modules)
            // {
            //     item.Value.onRemovePlayer(p);
            // }

            // session close, need persist & clear db data
            p.flushAll(true);
            p.fin(true);

            _players.Remove(s.sessionID);
        }