Exemplo n.º 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);
        }
Exemplo n.º 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"));
        }
Exemplo n.º 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>();
        }
Exemplo n.º 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);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MessengerView"/> class.
 /// </summary>
 /// <param name="connection">The connection.</param>
 /// <param name="player">The player.</param>
 /// <param name="friendServer">The friend server.</param>
 /// <param name="appearanceSerializer">The appearance serializer.</param>
 public MessengerView(IConnection connection, Player player, IFriendServer friendServer, IAppearanceSerializer appearanceSerializer)
 {
     this.connection           = connection;
     this.player               = player;
     this.friendServer         = friendServer;
     this.appearanceSerializer = appearanceSerializer;
 }
Exemplo n.º 6
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);
        }
Exemplo n.º 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>
 /// <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;
 }
Exemplo n.º 8
0
        public void SetUp()
        {
            this.gameServer1 = MockRepository.GenerateMock <IGameServer>();
            this.gameServer1.Stub(gs => gs.Id).Return(1);
            this.gameServer2 = MockRepository.GenerateMock <IGameServer>();
            this.gameServer2.Stub(gs => gs.Id).Return(2);

            this.gameServers = new Dictionary <int, IGameServer>
            {
                { this.gameServer1.Id, this.gameServer1 },
                { this.gameServer2.Id, this.gameServer2 }
            };
            this.repositoryManager = new TestRepositoryManager();
            this.friendServer      = new FriendServer.FriendServer(this.gameServers, null, this.repositoryManager);
        }
Exemplo n.º 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>
        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());
        }
Exemplo n.º 10
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");
 }
Exemplo n.º 11
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>();
        }
Exemplo n.º 12
0
        public void SetUp()
        {
            this.gameServer1 = new Mock <IGameServer>();
            this.gameServer1.Setup(gs => gs.Id).Returns(1);
            this.gameServer2 = new Mock <IGameServer>();
            this.gameServer2.Setup(gs => gs.Id).Returns(2);

            this.gameServers = new Dictionary <int, IGameServer>
            {
                { this.gameServer1.Object.Id, this.gameServer1.Object },
                { this.gameServer2.Object.Id, this.gameServer2.Object },
            };
            this.persistenceContextProvider = new InMemoryPersistenceContextProvider();
            this.friendServer = new FriendServer.FriendServer(this.gameServers, null, this.persistenceContextProvider);
            var context = this.persistenceContextProvider.CreateNewContext();

            this.player1      = context.CreateNew <Character>();
            this.player1.Name = "player1";
            this.player2      = context.CreateNew <Character>();
            this.player2.Name = "player2";
        }
Exemplo n.º 13
0
        public void SetUp()
        {
            this.gameServer1 = MockRepository.GenerateMock <IGameServer>();
            this.gameServer1.Stub(gs => gs.Id).Return(1);
            this.gameServer2 = MockRepository.GenerateMock <IGameServer>();
            this.gameServer2.Stub(gs => gs.Id).Return(2);

            this.gameServers = new Dictionary <int, IGameServer>
            {
                { this.gameServer1.Id, this.gameServer1 },
                { this.gameServer2.Id, this.gameServer2 }
            };
            this.persistenceContextProvider = new InMemoryPersistenceContextProvider();
            this.friendServer = new FriendServer.FriendServer(this.gameServers, null, this.persistenceContextProvider);
            var context = this.persistenceContextProvider.CreateNewContext();

            this.player1      = context.CreateNew <Character>();
            this.player1.Name = "player1";
            this.player2      = context.CreateNew <Character>();
            this.player2.Name = "player2";
        }
Exemplo n.º 14
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);
        }
Exemplo n.º 15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LetterSendAction"/> class.
 /// </summary>
 /// <param name="gameContext">The game context.</param>
 /// <param name="friendServer">The friend server.</param>
 /// <exception cref="System.ArgumentNullException">appearanceSerializer</exception>
 public LetterSendAction(IGameContext gameContext, IFriendServer friendServer)
 {
     this.gameContext  = gameContext;
     this.friendServer = friendServer;
 }
Exemplo n.º 16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DeleteFriendHandler"/> class.
 /// </summary>
 /// <param name="friendServer">The friend server.</param>
 public DeleteFriendHandler(IFriendServer friendServer)
 {
     this.deleteAction = new DeleteFriendAction(friendServer);
 }
Exemplo n.º 17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LetterSendHandler"/> class.
 /// </summary>
 /// <param name="gameContext">The game context.</param>
 /// <param name="friendServer">The friend server.</param>
 public LetterSendHandler(IGameContext gameContext, IFriendServer friendServer)
 {
     this.sendAction = new LetterSendAction(gameContext, friendServer);
 }
Exemplo n.º 18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DeleteFriendAction"/> class.
 /// </summary>
 /// <param name="friendServer">The friend server.</param>
 public DeleteFriendAction(IFriendServer friendServer)
 {
     this.friendServer = friendServer;
 }