/// <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")); }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
/// <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; }
/// <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()); }
/// <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"); }
/// <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>(); }
/// <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); }
/// <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; }
/// <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; }
/// <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; }