예제 #1
0
        public ClientSession(ServerConfiguration configuration, IEnumerable <IPacketController> packetControllers,
                             IMapInstanceProvider mapInstanceProvider, IExchangeProvider exchangeProvider, ILogger logger) : base(logger)
        {
            _logger = logger;

            if (configuration is WorldConfiguration worldConfiguration)
            {
                WorldConfiguration   = worldConfiguration;
                _mapInstanceProvider = mapInstanceProvider;
                _exchangeProvider    = exchangeProvider;
                _isWorldClient       = true;
            }

            foreach (var controller in packetControllers)
            {
                controller.RegisterSession(this);
                foreach (var methodInfo in controller.GetType().GetMethods().Where(x =>
                                                                                   typeof(PacketDefinition).IsAssignableFrom(x.GetParameters().FirstOrDefault()?.ParameterType)))
                {
                    var type         = methodInfo.GetParameters().FirstOrDefault()?.ParameterType;
                    var packetheader = (PacketHeaderAttribute)Array.Find(type?.GetCustomAttributes(true),
                                                                         ca => ca.GetType() == typeof(PacketHeaderAttribute));
                    _headerMethod.Add(packetheader, new Tuple <IPacketController, Type>(controller, type));
                    _controllerMethods.Add(packetheader,
                                           DelegateBuilder.BuildDelegate <Action <object, object> >(methodInfo));
                }
            }
        }
예제 #2
0
        public ClientSession(ServerConfiguration configuration, IMapInstanceProvider?mapInstanceProvider,
                             IExchangeProvider?exchangeProvider, ILogger logger,
                             IEnumerable <IPacketHandler> packetsHandlers, IFriendHttpClient friendHttpClient,
                             ISerializer packetSerializer, IPacketHttpClient packetHttpClient,
                             IMinilandProvider?minilandProvider) : base(logger)
        {
            _logger           = logger;
            _packetsHandlers  = packetsHandlers.ToList();
            _friendHttpClient = friendHttpClient;
            _packetSerializer = packetSerializer;
            _packetHttpClient = packetHttpClient;
            if (!(configuration is WorldConfiguration worldConfiguration))
            {
                return;
            }

            WorldConfiguration   = worldConfiguration;
            _mapInstanceProvider = mapInstanceProvider !;
            _exchangeProvider    = exchangeProvider !;
            _minilandProvider    = minilandProvider !;
            _isWorldClient       = true;
            foreach (var handler in _packetsHandlers)
            {
                var type = handler.GetType().BaseType?.GenericTypeArguments[0] !;
                if (!_attributeDic.ContainsKey(type ?? throw new InvalidOperationException()))
                {
                    _attributeDic.Add(type, type.GetCustomAttribute <PacketHeaderAttribute>(true) !);
                }
            }
        }
 public CharacterScreenPacketController(
     IItemProvider itemProvider, IMapInstanceProvider mapInstanceProvider, IAdapter adapter)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _itemProvider        = itemProvider;
     _adapter             = adapter;
 }
예제 #4
0
 public CommandPacketController(WorldConfiguration worldConfiguration, List <Item> items,
                                IItemProvider itemProvider, IMapInstanceProvider mapInstanceProvider)
 {
     _worldConfiguration = worldConfiguration;
     _items               = items;
     _itemProvider        = itemProvider;
     _mapInstanceProvider = mapInstanceProvider;
 }
 public DefaultPacketController(WorldConfiguration worldConfiguration,
                                IMapInstanceProvider mapInstanceProvider,
                                IGuriProvider guriProvider)
 {
     _worldConfiguration  = worldConfiguration;
     _mapInstanceProvider = mapInstanceProvider;
     _guriProvider        = guriProvider;
 }
예제 #6
0
 public WorldServer(WorldConfiguration worldConfiguration, NetworkManager networkManager,
                    IEnumerable <IGlobalEvent> events, ILogger logger, IChannelHttpClient channelHttpClient, IMapInstanceProvider mapInstanceProvider)
 {
     _worldConfiguration  = worldConfiguration;
     _networkManager      = networkManager;
     _events              = events.ToList();
     _logger              = logger;
     _channelHttpClient   = channelHttpClient;
     _mapInstanceProvider = mapInstanceProvider;
 }
예제 #7
0
 public MinilandProvider(IMapInstanceProvider mapInstanceProvider, IFriendHttpClient friendHttpClient, List <MapDto> maps,
                         IGenericDao <MinilandDto> minilandDao, IGenericDao <MinilandObjectDto> minilandObjectsDao)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _friendHttpClient    = friendHttpClient;
     _maps               = maps;
     _minilandIds        = new ConcurrentDictionary <long, Miniland>();
     _minilandDao        = minilandDao;
     _minilandObjectsDao = minilandObjectsDao;
 }
예제 #8
0
 public SelectPacketHandler(IAdapter adapter, IGenericDao <CharacterDto> characterDao, ILogger logger, IItemProvider itemProvider,
                            IMapInstanceProvider mapInstanceProvider, IGenericDao <IItemInstanceDto> itemInstanceDao)
 {
     _adapter             = adapter;
     _characterDao        = characterDao;
     _logger              = logger;
     _mapInstanceProvider = mapInstanceProvider;
     _itemProvider        = itemProvider;
     _itemInstanceDao     = itemInstanceDao;
 }
예제 #9
0
 public ClientSession(IOptions <WorldConfiguration> configuration, IMapInstanceProvider?mapInstanceProvider,
                      IExchangeProvider?exchangeProvider, ILogger logger,
                      IEnumerable <IPacketHandler> packetsHandlers, IFriendHttpClient friendHttpClient,
                      ISerializer packetSerializer, IPacketHttpClient packetHttpClient,
                      IMinilandProvider?minilandProvider) : this(logger, packetsHandlers, friendHttpClient, packetSerializer, packetHttpClient)
 {
     _mapInstanceProvider = mapInstanceProvider !;
     _exchangeProvider    = exchangeProvider !;
     _minilandProvider    = minilandProvider !;
     _isWorldClient       = true;
 }
예제 #10
0
 public CharacterScreenPacketController(
     IItemProvider itemProvider, IMapInstanceProvider mapInstanceProvider, IAdapter adapter, IGenericDao <CharacterDto> characterDao,
     IGenericDao <AccountDto> accountDao, IGenericDao <IItemInstanceDto> itemInstanceDao, IGenericDao <MateDto> mateDao, ILogger logger)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _itemProvider        = itemProvider;
     _adapter             = adapter;
     _characterDao        = characterDao;
     _accountDao          = accountDao;
     _itemInstanceDao     = itemInstanceDao;
     _mateDao             = mateDao;
     _logger = logger;
 }
예제 #11
0
 public WorldServer(WorldConfiguration worldConfiguration, NetworkManager networkManager, List <Item> items,
                    List <NpcMonsterDto> npcmonsters, List <Map> maps, IMapInstanceProvider mapInstanceProvider,
                    IEnumerable <IGlobalEvent> events, IEnumerable <IHandler <Item, Tuple <IItemInstance, UseItemPacket> > > handlers, Mapper mapper)
 {
     _worldConfiguration = worldConfiguration;
     _networkManager     = networkManager;
     _items               = items;
     _handlers            = handlers;
     _npcmonsters         = npcmonsters;
     _maps                = maps;
     _mapInstanceProvider = mapInstanceProvider;
     _events              = events.ToList();
     _mapper              = mapper;
 }
예제 #12
0
 public SelectPacketHandler(IAdapter adapter, IGenericDao <CharacterDto> characterDao, ILogger logger,
                            IItemProvider itemProvider,
                            IMapInstanceProvider mapInstanceProvider, IGenericDao <IItemInstanceDto> itemInstanceDao,
                            IGenericDao <InventoryItemInstanceDto> inventoryItemInstanceDao, IGenericDao <StaticBonusDto> staticBonusDao,
                            IGenericDao <QuicklistEntryDto> quickListEntriesDao, IGenericDao <TitleDto> titleDao)
 {
     _adapter                  = adapter;
     _characterDao             = characterDao;
     _logger                   = logger;
     _mapInstanceProvider      = mapInstanceProvider;
     _itemProvider             = itemProvider;
     _itemInstanceDao          = itemInstanceDao;
     _inventoryItemInstanceDao = inventoryItemInstanceDao;
     _staticBonusDao           = staticBonusDao;
     _quickListEntriesDao      = quickListEntriesDao;
     _titleDao                 = titleDao;
 }
예제 #13
0
 public SelectPacketHandler(IDao <CharacterDto, long> characterDao, ILogger logger,
                            IItemProvider itemProvider,
                            IMapInstanceProvider mapInstanceProvider, IDao <IItemInstanceDto?, Guid> itemInstanceDao,
                            IDao <InventoryItemInstanceDto, Guid> inventoryItemInstanceDao, IDao <StaticBonusDto, long> staticBonusDao,
                            IDao <QuicklistEntryDto, Guid> quickListEntriesDao, IDao <TitleDto, Guid> titleDao, IDao <CharacterQuestDto, Guid> characterQuestDao,
                            IDao <ScriptDto, Guid> scriptDao, List <QuestDto> quests, List <QuestObjectiveDto> questObjectives)
 {
     _characterDao             = characterDao;
     _logger                   = logger;
     _mapInstanceProvider      = mapInstanceProvider;
     _itemProvider             = itemProvider;
     _itemInstanceDao          = itemInstanceDao;
     _inventoryItemInstanceDao = inventoryItemInstanceDao;
     _staticBonusDao           = staticBonusDao;
     _quickListEntriesDao      = quickListEntriesDao;
     _titleDao                 = titleDao;
     _characterQuestDao        = characterQuestDao;
     _scriptDao                = scriptDao;
     _quests                   = quests;
     _questObjectives          = questObjectives;
 }
예제 #14
0
 public PreqPacketHandler(IMapInstanceProvider mapInstanceProvider)
 {
     _mapInstanceProvider = mapInstanceProvider;
 }
예제 #15
0
 public PreqPacketHandler(IMapInstanceProvider mapInstanceProvider, IMinilandProvider minilandProvider, IDistanceCalculator distanceCalculator)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _minilandProvider    = minilandProvider;
     _distanceCalculator  = distanceCalculator;
 }
예제 #16
0
 public TeleportPacketHandler(ILogger logger, IMapInstanceProvider mapInstanceProvider)
 {
     _logger = logger;
     _mapInstanceProvider = mapInstanceProvider;
 }
예제 #17
0
 public ClientSession(ServerConfiguration configuration, IEnumerable <IPacketController> packetControllers,
                      IMapInstanceProvider mapInstanceProvider, IExchangeProvider exchangeProvider) : this(configuration, packetControllers)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _exchangeProvider    = exchangeProvider;
 }
예제 #18
0
 public PreqPacketHandler(IMapInstanceProvider mapInstanceProvider, IMinilandProvider minilandProvider)
 {
     _mapInstanceProvider = mapInstanceProvider;
     _minilandProvider    = minilandProvider;
 }