コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServer" /> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="loggerFactory">The logger factory.</param>
        /// <param name="plugInManager">The plug in manager.</param>
        public GameServer(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IPersistenceContextProvider persistenceContextProvider,
            IFriendServer friendServer,
            ILoggerFactory loggerFactory,
            PlugInManager plugInManager)
        {
            this.Id              = gameServerDefinition.ServerID;
            this.Description     = gameServerDefinition.Description;
            this.ConfigurationId = gameServerDefinition.GetId();
            this.logger          = loggerFactory.CreateLogger <GameServer>();
            try
            {
                var mapInitializer = new GameServerMapInitializer(gameServerDefinition, loggerFactory.CreateLogger <GameServerMapInitializer>());
                this.gameContext = new GameServerContext(gameServerDefinition, guildServer, loginServer, friendServer, persistenceContextProvider, mapInitializer, loggerFactory, plugInManager);
                this.gameContext.GameMapCreated += (sender, e) => this.OnPropertyChanged(nameof(this.Context));
                this.gameContext.GameMapRemoved += (sender, e) => this.OnPropertyChanged(nameof(this.Context));
                mapInitializer.PlugInManager     = this.gameContext.PlugInManager;
            }
            catch (Exception ex)
            {
                this.logger.LogCritical(ex, "Error during map initialization");
                throw;
            }

            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration ?? throw new InvalidOperationException("GameServerDefinition requires a ServerConfiguration"));
        }
コード例 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServer" /> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="stateObserver">The state observer.</param>
        public GameServer(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IPersistenceContextProvider persistenceContextProvider,
            IFriendServer friendServer,
            IServerStateObserver stateObserver)
        {
            this.Id            = gameServerDefinition.ServerID;
            this.Description   = gameServerDefinition.Description;
            this.stateObserver = stateObserver;

            try
            {
                var mapInitializer = new GameServerMapInitializer(gameServerDefinition, this.Id, stateObserver);
                this.gameContext = new GameServerContext(gameServerDefinition, guildServer, loginServer, friendServer, persistenceContextProvider, stateObserver, mapInitializer);
            }
            catch (Exception ex)
            {
                Logger.Fatal(ex);
                throw;
            }

            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration);
        }
コード例 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServer" /> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="friendServer">The friend server.</param>
        public GameServer(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IPersistenceContextProvider persistenceContextProvider,
            IFriendServer friendServer)
        {
            this.Id              = gameServerDefinition.ServerID;
            this.Description     = gameServerDefinition.Description;
            this.ConfigurationId = gameServerDefinition.GetId();

            try
            {
                var mapInitializer = new GameServerMapInitializer(gameServerDefinition, this.Id);
                this.gameContext = new GameServerContext(gameServerDefinition, guildServer, loginServer, friendServer, persistenceContextProvider, mapInitializer);
                this.gameContext.GameMapCreated += (sender, e) => this.OnPropertyChanged(nameof(this.Context));
                this.gameContext.GameMapRemoved += (sender, e) => this.OnPropertyChanged(nameof(this.Context));
                mapInitializer.PlugInManager     = this.gameContext.PlugInManager;
            }
            catch (Exception ex)
            {
                Logger.Fatal(ex);
                throw;
            }

            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration);
        }
コード例 #4
0
ファイル: GameServer.cs プロジェクト: sven-n/OpenMU
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServer"/> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="repositoryManager">The repository manager.</param>
        /// <param name="friendServer">The friend server.</param>
        public GameServer(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IRepositoryManager repositoryManager,
            IFriendServer friendServer)
        {
            this.Id          = gameServerDefinition.ServerID;
            this.Description = gameServerDefinition.Description;

            try
            {
                this.gameContext = new GameServerContext(gameServerDefinition, guildServer, loginServer, friendServer, repositoryManager);
            }
            catch (Exception ex)
            {
                Logger.Fatal(ex);
                throw;
            }

            this.freePlayerIds =
                new ConcurrentBag <ushort>(
                    Enumerable.Range(
                        gameServerDefinition.ServerConfiguration.MaximumNPCs + 1,
                        gameServerDefinition.ServerConfiguration.MaximumPlayers).Select(id => (ushort)id));
            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration);
        }
コード例 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerMapInitializer"/> class.
 /// </summary>
 /// <param name="serverDefinition">The server definition.</param>
 /// <param name="serverId">The server identifier.</param>
 /// <param name="serverStateObserver">The server state observer.</param>
 public GameServerMapInitializer(GameServerDefinition serverDefinition, byte serverId, IServerStateObserver serverStateObserver)
     : base(serverDefinition.GameConfiguration, serverStateObserver?.GetMapStateObserver(serverId))
 {
     this.serverDefinition    = serverDefinition;
     this.serverId            = serverId;
     this.serverStateObserver = serverStateObserver;
 }
コード例 #6
0
ファイル: GameServerContext.cs プロジェクト: xtr3sor/OpenMU
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerContext" /> class.
 /// </summary>
 /// <param name="gameServerDefinition">The game server definition.</param>
 /// <param name="guildServer">The guild server.</param>
 /// <param name="loginServer">The login server.</param>
 /// <param name="friendServer">The friend server.</param>
 /// <param name="persistenceContextProvider">The persistence context provider.</param>
 /// <param name="mapInitializer">The map initializer.</param>
 public GameServerContext(
     GameServerDefinition gameServerDefinition,
     IGuildServer guildServer,
     ILoginServer loginServer,
     IFriendServer friendServer,
     IPersistenceContextProvider persistenceContextProvider,
     IMapInitializer mapInitializer)
     : base(gameServerDefinition.GameConfiguration, persistenceContextProvider, mapInitializer)
 {
     this.Id                  = gameServerDefinition.ServerID;
     this.GuildServer         = guildServer;
     this.LoginServer         = loginServer;
     this.FriendServer        = friendServer;
     this.ServerConfiguration = gameServerDefinition.ServerConfiguration;
 }
コード例 #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServerContext"/> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        public GameServerContext(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IFriendServer friendServer,
            IPersistenceContextProvider persistenceContextProvider)
            : base(gameServerDefinition.GameConfiguration, persistenceContextProvider)
        {
            this.Id                  = gameServerDefinition.ServerID;
            this.GuildServer         = guildServer;
            this.LoginServer         = loginServer;
            this.FriendServer        = friendServer;
            this.ServerConfiguration = gameServerDefinition.ServerConfiguration;

            this.PacketHandlers = gameServerDefinition.ServerConfiguration.SupportedPacketHandlers.Select(m => new ConfigurableMainPacketHandler(m, this)).ToArray <IMainPacketHandler>();
            this.GuildCache     = new GuildCache(this, new GuildInfoSerializer());
        }
コード例 #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerContext" /> class.
 /// </summary>
 /// <param name="gameServerDefinition">The game server definition.</param>
 /// <param name="guildServer">The guild server.</param>
 /// <param name="loginServer">The login server.</param>
 /// <param name="friendServer">The friend server.</param>
 /// <param name="persistenceContextProvider">The persistence context provider.</param>
 /// <param name="mapInitializer">The map initializer.</param>
 /// <param name="loggerFactory">The logger factory.</param>
 /// <param name="plugInManager">The plug in manager.</param>
 public GameServerContext(
     GameServerDefinition gameServerDefinition,
     IGuildServer guildServer,
     ILoginServer loginServer,
     IFriendServer friendServer,
     IPersistenceContextProvider persistenceContextProvider,
     IMapInitializer mapInitializer,
     ILoggerFactory loggerFactory,
     PlugInManager plugInManager)
     : base(gameServerDefinition.GameConfiguration ?? throw new InvalidOperationException("GameServerDefinition requires a GameConfiguration"), persistenceContextProvider, mapInitializer, loggerFactory, plugInManager)
 {
     this.gameServerDefinition = gameServerDefinition;
     this.Id                  = gameServerDefinition.ServerID;
     this.GuildServer         = guildServer;
     this.LoginServer         = loginServer;
     this.FriendServer        = friendServer;
     this.ServerConfiguration = gameServerDefinition.ServerConfiguration ?? throw new InvalidOperationException("GameServerDefinition requires a ServerConfiguration");
 }
コード例 #9
0
ファイル: GameServerContext.cs プロジェクト: axislover/OpenMU
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServerContext" /> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="stateObserver">The state observer.</param>
        /// <param name="mapInitializer">The map initializer.</param>
        public GameServerContext(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IFriendServer friendServer,
            IPersistenceContextProvider persistenceContextProvider,
            IServerStateObserver stateObserver,
            IMapInitializer mapInitializer)
            : base(gameServerDefinition.GameConfiguration, persistenceContextProvider, new ServerStateToGameStateObserverAdapter(stateObserver, gameServerDefinition.ServerID), mapInitializer)
        {
            this.Id                  = gameServerDefinition.ServerID;
            this.GuildServer         = guildServer;
            this.LoginServer         = loginServer;
            this.FriendServer        = friendServer;
            this.ServerConfiguration = gameServerDefinition.ServerConfiguration;

            this.PacketHandlers = gameServerDefinition.ServerConfiguration.SupportedPacketHandlers.Select(m => new ConfigurableMainPacketHandler(m, this)).ToArray <IMainPacketHandler>();
        }
コード例 #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServer"/> class.
        /// </summary>
        /// <param name="gameServerDefinition">The game server definition.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="repositoryManager">The repository manager.</param>
        /// <param name="friendServer">The friend server.</param>
        public GameServer(
            GameServerDefinition gameServerDefinition,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IRepositoryManager repositoryManager,
            IFriendServer friendServer)
        {
            this.Id          = gameServerDefinition.ServerID;
            this.Description = gameServerDefinition.Description;

            try
            {
                this.gameContext = new GameServerContext(gameServerDefinition, guildServer, loginServer, friendServer, repositoryManager);
            }
            catch (Exception ex)
            {
                Logger.Fatal(ex);
                throw;
            }

            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration);
        }
コード例 #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerMapInitializer" /> class.
 /// </summary>
 /// <param name="serverDefinition">The server definition.</param>
 /// <param name="logger">The logger.</param>
 public GameServerMapInitializer(GameServerDefinition serverDefinition, ILogger <GameServerMapInitializer> logger)
     : base(serverDefinition.GameConfiguration ?? throw new InvalidOperationException("GameServerDefinition requires a GameConfiguration"), logger)
 {
     this.serverDefinition = serverDefinition;
 }
コード例 #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerMapInitializer" /> class.
 /// </summary>
 /// <param name="serverDefinition">The server definition.</param>
 /// <param name="logger">The logger.</param>
 public GameServerMapInitializer(GameServerDefinition serverDefinition, ILogger <GameServerMapInitializer> logger)
     : base(serverDefinition.GameConfiguration, logger)
 {
     this.serverDefinition = serverDefinition;
 }
コード例 #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GameServerMapInitializer"/> class.
 /// </summary>
 /// <param name="serverDefinition">The server definition.</param>
 public GameServerMapInitializer(GameServerDefinition serverDefinition)
     : base(serverDefinition.GameConfiguration)
 {
     this.serverDefinition = serverDefinition;
 }