Exemple #1
0
        private static void Main()
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            PrintHeader();
            InitializeLogger();
            InitializeConfigs();
            ChickenContainer.Builder.Register(_ => new PluggablePacketFactory()).As <IPacketFactory>().SingleInstance();
            if (InitializePlugins())
            {
                return;
            }

            EnablePlugins(PluginEnableTime.PreContainerBuild);
            CommunicationIocInjector.Inject();
            ChickenContainer.Initialize();
            if (Server.RegisterServer())
            {
                Log.Info("REGISTER_FAIL_SERVER_API");
                return;
            }

            EnablePlugins(PluginEnableTime.PostContainerBuild);
            Server.RunServerAsync(1337).ConfigureAwait(false).GetAwaiter().GetResult();
            Server.UnregisterServer();
            LogManager.Shutdown();
        }
Exemple #2
0
        public static int Handle(LanguageCommand command)
        {
            new RedisPlugin().OnLoad();
            new RedisPlugin().OnEnable();
            ChickenContainer.Initialize();
            foreach (object enume in Enum.GetValues(typeof(LanguageKey)))
            {
                var element = (LanguageKey)enume;

                if (command.GeneratorType != "all" && command.GeneratorType != element.GetKeyForLangFiles())
                {
                    continue;
                }

                string subDirectory = command.Input + Path.DirectorySeparatorChar + element.GetKeyForLangFiles();
                if (!Directory.Exists(subDirectory))
                {
                    Directory.CreateDirectory(subDirectory);
                    Log.Warn($"Creating directory {subDirectory} for future lang files");
                    File.Create(subDirectory + Path.DirectorySeparatorChar + ".gitkeep");
                    continue;
                }

                Log.Info($"Parsing langugage files for {element.GetKeyForLangFiles()}");
                foreach (FileInfo filePath in new DirectoryInfo(subDirectory).GetFiles().Where(s => IsNostaleLangFile(s.Name, element)))
                {
                    Log.Info($"Parsing langugage file {filePath.Name}");
                    ReadFileAndFillService(filePath.FullName, element);
                }
            }

            return(0);
        }
Exemple #3
0
 private static void Main(string[] args)
 {
     PrintHeader();
     InitializeLogger();
     InitializeConfiguration();
     InitializePlugins();
     ChickenContainer.Builder.Register(s => PluginManager).As <IPluginManager>();
     ChickenContainer.Initialize();
     ClientSession.AccountService = ChickenContainer.Instance.Resolve <IAccountService>();
     ClientSession.ServerApi      = ChickenContainer.Instance.Resolve <IServerApiService>();
     ClientSession.SessionService = ChickenContainer.Instance.Resolve <ISessionService>();
     NetworkManager.RunServerAsync(_port, new LoginEncoderFactory()).Wait();
 }
Exemple #4
0
        public void Setup()
        {
            string mqttEndPoint = Environment.GetEnvironmentVariable("MQTT_BROKER_ENDPOINT") ?? "localhost";

            ChickenContainer.Builder.Register(s => new MqttClientConfigurationBuilder().ConnectTo(mqttEndPoint).WithName("test-relation-service-client"));
            ChickenContainer.Builder.Register(s => new MqttServerConfigurationBuilder().ConnectTo(mqttEndPoint).WithName("test-relation-service-server"));
            CommunicationIocInjector.Inject();
            ChickenContainer.Builder.RegisterType <RelationServiceClient>().AsImplementedInterfaces();

            ChickenContainer.Initialize();

            _relationService = ChickenContainer.Instance.Resolve <IRelationService>();
        }
Exemple #5
0
        public static int Handle(GenerateCommand command)
        {
            var algo = new BasicAlgorithmPlugin();

            algo.OnLoad();
            algo.OnEnable();
            var tmp = new DatabasePlugin();

            tmp.OnLoad();
            tmp.OnEnable();

            ChickenContainer.Initialize();
            var portal   = new PacketPortalGenerator();
            var monster  = new MapMonsterGenerator();
            var npc      = new MapNpcGenerator();
            var shop     = new ShopParserGenerator();
            var shopItem = new ShopItemGenerator();

            switch (command.GeneratorType)
            {
            case "npc":
                npc.Generate(command.Input);
                break;

            case "monster":
                monster.Generate(command.Input);
                break;

            case "portal":
                portal.Generate(command.Input);
                break;

            case "shop":
                shop.Generate(command.Input);
                break;

            case "shopItem":
                shopItem.Generate(command.Input);
                break;

            case "all":
                portal.Generate(command.Input);
                monster.Generate(command.Input);
                npc.Generate(command.Input);
                shop.Generate(command.Input);
                shopItem.Generate(command.Input);
                break;
            }

            return(0);
        }
Exemple #6
0
        static void Main()
        {
            PrintHeader();
            InitializeLogger();
            if (InitializePlugins())
            {
                return;
            }

            EnablePlugins(PluginEnableTime.PreContainerBuild);
            ChickenContainer.Initialize();
            EnablePlugins(PluginEnableTime.PostContainerBuild);
            Console.ReadLine();
        }
Exemple #7
0
        private static void Main()
        {
            PrintHeader();
            InitializeLogger();
            if (InitializePlugins())
            {
                return;
            }

            EnablePlugins(PluginEnableTime.PreContainerBuild);
            RegisterDependencies();
            CommunicationIocInjector.Inject();
            ChickenContainer.Initialize();
            EnablePlugins(PluginEnableTime.PostContainerBuild);
            var server    = ChickenContainer.Instance.Resolve <IIpcServer>();
            var container = ChickenContainer.Instance.Resolve <IIpcPacketHandlersContainer>();

            foreach (Type handlerType in typeof(RelationService).Assembly.GetTypesImplementingGenericClass(typeof(GenericIpcRequestHandler <,>), typeof(GenericIpcPacketHandler <>)))
            {
                try
                {
                    object handler = ChickenContainer.Instance.Resolve(handlerType);
                    if (!(handler is IIpcPacketHandler postProcessor))
                    {
                        Log.Warn($"{handler}");
                        continue;
                    }

                    Type type = handlerType.BaseType.GenericTypeArguments[0];

                    container.RegisterAsync(postProcessor, type);
                }
                catch (Exception e)
                {
                    Log.Error("[FAIL]", e);
                }
            }

            Console.ReadLine();
        }
Exemple #8
0
        public static int Handle(ParseCommand command)
        {
            if (!CheckFiles(command.InputDirectory))
            {
                Log.Warn("Respect the following parsing directory layer : ");
                Console.WriteLine($"{command.InputDirectory}/");
                Console.WriteLine("\t- maps");
                Console.WriteLine("\t- dats");
                Console.WriteLine("\t\t- Skill.dat");
                Console.WriteLine("\t\t- Monster.dat");
                Console.WriteLine("\t\t- Item.dat");
                Console.WriteLine("\t\t- Card.dat");
                Console.WriteLine("\t- packets");
                Console.WriteLine("\t\t- einfo.packets");
                Console.WriteLine("\t\t- packet.txt");
                return(1);
            }

            var algo = new BasicAlgorithmPlugin();

            algo.OnLoad();
            algo.OnEnable();
            var tmp = new DatabasePlugin();

            tmp.OnLoad();
            tmp.OnEnable();
            ChickenContainer.Initialize();

            var card         = new CardDatConverter();
            var item         = new ItemDatConverter();
            var monster      = new MonsterDatConverter();
            var map          = new MapDatConverter();
            var skill        = new SkillDatConverter();
            var einfo        = new EInfoFiller();
            var portal       = new PacketPortalGenerator();
            var monGenerator = new MapMonsterGenerator();
            var npc          = new MapNpcGenerator();
            var shop         = new ShopParserGenerator();
            var shopItem     = new ShopItemGenerator();
            var shopSkill    = new ShopSkillGenerator();

            switch (command.ParsingType)
            {
            case "card":
                card.Extract(command.InputDirectory);
                break;

            case "skill":
                skill.Extract(command.InputDirectory);
                break;

            case "map":
                map.Extract(command.InputDirectory);
                break;

            case "item":
                item.Extract(command.InputDirectory);
                break;

            case "einfo":
                einfo.Fill(command.InputDirectory);
                break;

            case "monster":
                monster.Extract(command.InputDirectory);
                break;

            case "all":
                Log.Info("Parsing...");
                InitializeAccounts();
                map.Extract(command.InputDirectory + "/maps");
                skill.Extract(command.InputDirectory + "/dats");
                item.Extract(command.InputDirectory + "/dats");
                card.Extract(command.InputDirectory + "/dats");
                monster.Extract(command.InputDirectory + "/dats");
                einfo.Fill(command.InputDirectory + "/packets/einfo.packets");
                portal.Generate(command.InputDirectory + "/packets/packet.txt");
                monGenerator.Generate(command.InputDirectory + "/packets/packet.txt");
                npc.Generate(command.InputDirectory + "/packets/packet.txt");
                shop.Generate(command.InputDirectory + "/packets/packet.txt");
                shopItem.Generate(command.InputDirectory + "/packets/packet.txt");
                shopSkill.Generate(command.InputDirectory + "/packets/packet.txt");
                Log.Info("Parsing done");
                break;
            }

            return(0);
        }