示例#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="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);
        }
示例#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="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"));
        }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GameServerContainer" /> class.
        /// </summary>
        /// <param name="loggerFactory">The logger factory.</param>
        /// <param name="servers">The servers.</param>
        /// <param name="gameServers">The game servers.</param>
        /// <param name="persistenceContextProvider">The persistence context provider.</param>
        /// <param name="connectServerContainer">The connect server container.</param>
        /// <param name="guildServer">The guild server.</param>
        /// <param name="loginServer">The login server.</param>
        /// <param name="friendServer">The friend server.</param>
        /// <param name="ipResolver">The ip resolver.</param>
        /// <param name="plugInManager">The plug in manager.</param>
        public GameServerContainer(
            ILoggerFactory loggerFactory,
            IList <IManageableServer> servers,
            IDictionary <int, IGameServer> gameServers,
            IPersistenceContextProvider persistenceContextProvider,
            ConnectServerContainer connectServerContainer,
            IGuildServer guildServer,
            ILoginServer loginServer,
            IFriendServer friendServer,
            IIpAddressResolver ipResolver,
            PlugInManager plugInManager)
        {
            this.loggerFactory = loggerFactory;
            this.servers       = servers;
            this.gameServers   = gameServers;
            this.persistenceContextProvider = persistenceContextProvider;
            this.connectServerContainer     = connectServerContainer;
            this.guildServer   = guildServer;
            this.loginServer   = loginServer;
            this.friendServer  = friendServer;
            this.ipResolver    = ipResolver;
            this.plugInManager = plugInManager;

            this.logger = this.loggerFactory.CreateLogger <GameServerContainer>();
        }
示例#4
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);
        }
示例#5
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.freePlayerIds =
                new ConcurrentBag <ushort>(
                    Enumerable.Range(
                        gameServerDefinition.ServerConfiguration.MaximumNPCs + 1,
                        gameServerDefinition.ServerConfiguration.MaximumPlayers).Select(id => (ushort)id));
            this.ServerInfo = new GameServerInfoAdapter(this, gameServerDefinition.ServerConfiguration);
        }
示例#6
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>
 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
        /// <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);
        }