Пример #1
0
        private void InitializeCultureInfo()
        {
            var configure = Container.Resolve <IConfigureFile>();

            I18nManager.Initialize(configure);
            var language = configure.GetValue <CultureInfo>(ConfigureKeys.Language);

            if (language == null)
            {
                language = CultureInfo.InstalledUICulture;
                configure.SetValue(ConfigureKeys.Language, language);
            }

            I18nManager.Instance.CurrentUICulture = language;
            I18nManager.Instance.AddResourceManager(UiResources.ResourceManager);
        }
Пример #2
0
        public override void OnEnable()
        {
            I18n.Instance.ApplyLanguage(new DefaultLanguage());
            ConfigWindow window = null;

            base.EventBus.BindEvent <PluginEvents.ProgramReadyEvent>((t) => {
                m_i18n_manager = new I18nManager();
                IO.CurrentIO.WriteColor(DefaultLanguage.COMMAND_LINE_HINT, ConsoleColor.Yellow);
            });

            base.EventBus.BindEvent <PluginEvents.InitCommandEvent>((t) =>
            {
                t.Commands.Dispatch.bind("config", args =>
                {
                    if (Application.Current == null)
                    {
                        TaskCompletionSource <bool> completionSource = new TaskCompletionSource <bool>();
                        var thread = new Thread(() =>
                        {
                            var app      = new Application();
                            app.Startup += (s, e) => completionSource.SetResult(true);
                            app.Run();
                        });
                        thread.Name = "STA WPF Application Thread";
                        thread.SetApartmentState(ApartmentState.STA);
                        thread.Start();
                        completionSource.Task.Wait();
                    }

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        window = (window ?? new ConfigWindow(ItemFactory));
                        if (window.Visibility == Visibility.Visible)
                        {
                            window.Activate();
                        }
                        else
                        {
                            window.Show();
                        }
                    });

                    return(true);
                }, "show config window");
            });
        }
Пример #3
0
        public static void Main(string[] args)
        {
            try
            {
                Console.CursorVisible = false;
                Console.Title         = "crystal";
                Console.WindowWidth   = 100;
                Console.WindowHeight  = 50;
                Task.Factory.StartNew(() => Interop.StartArgsManager.ProcessArgs(args));
                Utilities.ConsoleStyle.DrawAscii();
                Utilities.ConsoleStyle.InitConsole();

                Utilities.ConfigurationManager.LoadConfiguration();
                MaxIdleTime   = Utilities.ConfigurationManager.GetIntValue("MaximumIdleTime");
                StartTime     = Environment.TickCount;
                Console.Title = "Crystal World " + Utilities.ConfigurationManager.GetStringValue("ServerName")
                                + " (" + Utilities.ConfigurationManager.GetStringValue("ServerID") + ")";

                Globalization.I18nManager.LoadLangs();
                Utilities.ConsoleStyle.Infos(I18nManager.GetText(0));

                Utilities.ConsoleStyle.Infos(I18nManager.GetText(1));
                Database.Manager.DatabaseManager.StartDatabase();
                Utilities.ConsoleStyle.Infos(I18nManager.GetText(2));

                if (Utilities.ConfigurationManager.GetBoolValue("CreateShema"))
                {
                    Utilities.ConsoleStyle.Infos("Creating shema ...");
                    Database.Manager.DatabaseManager.InitTable();
                    Utilities.ConsoleStyle.Infos("Shema created !");
                }

                Utilities.ConsoleStyle.Infos(I18nManager.GetText(3));
                World.Handlers.AccountHandler.RegisterMethod();
                World.Handlers.GameHandler.RegisterMethod();
                World.Handlers.BasicHandler.RegisterMethod();
                World.Handlers.ItemHandler.RegisterMethod();
                World.Handlers.NpcHandler.RegisterMethod();
                World.Handlers.ZaapHandler.RegisterMethod();
                World.Handlers.FriendHandler.RegisterMethod();
                World.Handlers.EnemiesHandler.RegisterMethod();
                World.Handlers.DialogHandler.RegisterMethod();
                World.Handlers.ExchangeHandler.RegisterMethod();
                World.Handlers.PartyHandler.RegisterMethod();
                World.Handlers.SpellHandler.RegisterMethod();
                World.Handlers.FightHandler.RegisterMethod();
                World.Handlers.GuildHandler.RegisterMethod();
                World.Handlers.MountHandler.RegisterMethod();
                World.Handlers.EmoteHandler.RegisterMethod();
                Utilities.ConsoleStyle.Infos(I18nManager.GetText(4));

                Utilities.ConsoleStyle.Infos(I18nManager.GetText(5));
                World.Game.Jobs.JobManager.LoadJobs();
                Utilities.ConsoleStyle.Infos(I18nManager.GetText(6));

                Utilities.ConsoleStyle.Infos(I18nManager.GetText(7));
                Database.Cache.AccountDataCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.AccountDataCache.Cache.Count.ToString() + " @Accounts data loaded");

                Database.Cache.BreedCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.BreedCache.Cache.Count.ToString() + " @Breeds data loaded");

                Database.Cache.OriginalBreedStartMapCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.OriginalBreedStartMapCache.Cache.Count.ToString() + " @Original maps loaded");

                Database.Cache.IncarnamTeleporterCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.IncarnamTeleporterCache.Cache.Count.ToString() + " @Incarnam teleporters loaded");

                Database.Cache.GuildCreatorLocationCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.GuildCreatorLocationCache.Cache.Count.ToString() + " @Guild creator loaded");

                Database.Cache.GuildCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.GuildCache.Cache.Count.ToString() + " @Guild loaded");

                Utilities.ConsoleStyle.Infos("Loading @maps@ ...");
                Utilities.ConsoleStyle.EnableLoadingSymbol();
                Database.Cache.MapCache.Init();
                Utilities.ConsoleStyle.DisabledLoadingSymbol();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.MapCache.Cache.Count + " @Maps loaded !");

                Database.Cache.IODataCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.IODataCache.Cache.Count.ToString() + " @Interactive object loaded");

                Database.Cache.DungeonRoomCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.DungeonRoomCache.Cache.Count + " @Dungeon rooms loaded !");

                if (Utilities.ConfigurationManager.GetBoolValue("FastLoading"))
                {
                    Utilities.ConsoleStyle.Infos("Fast loading enabled !");
                    Utilities.ConsoleStyle.Warning("Be careful with this function, don't use it in real situation, use this only for debugging");
                    System.Threading.Thread triggerThread = new System.Threading.Thread(new System.Threading.ThreadStart(Database.Cache.TriggerCache.Init));
                    triggerThread.Start();
                }
                else
                {
                    Database.Cache.TriggerCache.Init();
                    Utilities.ConsoleStyle.Infos("@" + Database.Cache.TriggerCache.Cache.Count + " @Trigger loaded !");
                }

                Database.Cache.ExpFloorCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ExpFloorCache.Cache.Count + " @Exp floors loaded !");

                if (Utilities.ConfigurationManager.GetBoolValue("FastLoading"))
                {
                    System.Threading.Thread spellThread = new System.Threading.Thread(new System.Threading.ThreadStart(Database.Cache.SpellCache.Init));
                    spellThread.Start();
                }
                else
                {
                    Database.Cache.SpellCache.Init();
                    Utilities.ConsoleStyle.Infos("@" + Database.Cache.SpellCache.Cache.Count + " @Spells data loaded !");
                }

                Database.Cache.BaseSpellCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.BaseSpellCache.Cache.Count + " @Base spells loaded !");

                Database.Cache.NpcCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.NpcCache.Cache.Count + " @Npcs loaded !");

                Utilities.ConsoleStyle.Infos("Loading @characters@ ...");
                Utilities.ConsoleStyle.EnableLoadingSymbol();
                Database.Cache.CharacterCache.Init();
                Utilities.ConsoleStyle.DisabledLoadingSymbol();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.CharacterCache.Cache.Count + " @Characters loaded !");

                Database.Cache.MountTemplateCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.MountTemplateCache.Cache.Count + " @Mount templates loaded !");

                Database.Cache.WorldMountCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.WorldMountCache.Cache.Count + " @WorldMounts loaded !");

                Database.Cache.ItemCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ItemCache.Cache.Count + " @Items loaded !");

                Database.Cache.ItemSetCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ItemSetCache.Cache.Count + " @Item Sets loaded !");

                Utilities.ConsoleStyle.Infos("Loading @world items@ ...");
                Utilities.ConsoleStyle.EnableLoadingSymbol();
                Database.Cache.WorldItemCache.Init();
                Utilities.ConsoleStyle.DisabledLoadingSymbol();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.WorldItemCache.Cache.Count + " @WorldItems loaded !");

                Utilities.ConsoleStyle.Infos("Loading @item bags@ ...");
                Database.Cache.ItemBagCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ItemBagCache.Cache.Count + " @ItemBags loaded !");

                Database.Cache.NpcPositionCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.NpcPositionCache.Cache.Count + " @Npcs positions loaded !");

                Database.Cache.NpcDialogCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.NpcDialogCache.Cache.Count + " @Npcs dialogs loaded !");

                Database.Cache.MonstersTemplateCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.MonstersTemplateCache.Cache.Count + " @Monsters templates loaded !");

                Database.Cache.MonsterLevelCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.MonsterLevelCache.Cache.Count + " @Monsters levels loaded !");

                Database.Cache.DropCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.DropCache.Cache.Count + " @Drops loaded !");

                Database.Cache.ZaapCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ZaapCache.Cache.Count + " @Zaaps loaded !");

                Database.Cache.PaddockCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.PaddockCache.Cache.Count + " @Paddocks loaded !");

                Database.Cache.JobDataCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.JobDataCache.Cache.Count + " @Jobs loaded !");

                Database.Cache.CraftCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.CraftCache.Cache.Count + " @Recipes loaded !");

                Database.Cache.ShopItemCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ShopItemCache.Cache.Count + " @Shop item loaded !");

                Database.Cache.BannedAccountCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.BannedAccountCache.Cache.Count + " @Banned Account loaded !");

                Database.Cache.ElitesCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.ElitesCache.Cache.Count + " @Elites level loaded !");

                Database.Cache.HotelCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.HotelCache.Cache.Count + " @Hotel rooms loaded !");

                Database.Cache.AuctionHouseCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.AuctionHouseCache.Cache.Count + " @Auction Houses loaded !");

                Database.Cache.AuctionHouseItemsCache.Init();
                Utilities.ConsoleStyle.Infos("@" + Database.Cache.AuctionHouseItemsCache.Cache.Count + " @Auction Houses Items loaded !");

                Database.Cache.CharacterCache.SetToMaxLife();
                Utilities.ConsoleStyle.Infos("@Restoring character life@ completed !");
                Utilities.ConsoleStyle.Infos("Cache created !");

                Interop.Scripting.ScriptManager.Load("Scripts");
                Interop.PythonScripting.ScriptManager.Load();
                Utilities.ConsoleStyle.Infos("@Scripts@ loaded !");

                /* World contents enabling */

                World.Manager.WorldManager.SyncMonsterLevelWithTemplate();
                Utilities.ConsoleStyle.Infos("@Sync monsters@ with all levels available finished !");
                World.Manager.WorldManager.SyncMapWithMonsterAvailable();
                Utilities.ConsoleStyle.Infos("@Sync maps@ with all monsters available finished !");

                World.Manager.WorldManager.InitServer();
                Communication.Realm.Communicator.InitServer();
                Communication.Rcon.RConManager.InitServer();

                World.Network.World.InitAutoSave(Utilities.ConfigurationManager.GetIntValue("SaveIntervall"));
                Utilities.ConsoleStyle.Infos("@AutoSave@ started !");

                World.Network.World.InitAutoInformationsUpdate();

                World.Game.LiveActions.LiveActionManager.Initialize();
                Utilities.ConsoleStyle.Infos("@LiveActions@ initialized !");

                World.Game.Kolizeum.KolizeumManager.LoadMaps();
                Utilities.ConsoleStyle.Infos("@" + World.Game.Kolizeum.KolizeumManager.Maps.Count + "@ Kolizeum maps loaded !");
                World.Game.Kolizeum.KolizeumManager.LaunchKolizeumTask();

                World.Game.Shop.ShopManager.Logger = new Utilities.BasicLogger("Datas/Shop/shop_logs" + StartTime + ".log");
                LoadHelpFile();
                World.Game.Admin.AdminRankManager.Initialize();
                Utilities.ConsoleStyle.Infos("Admins ranks @permissions initialized@ !");

                World.Game.Pvp.PvpManager.LoadNoPvpMaps();
                World.Game.Exchange.ExchangeRestrictions.LoadRestrictedItems();
                World.Game.Ads.AdsManager.LoadAds();
                World.Game.Idle.IdleManager.Start();
                Utilities.ConsoleStyle.Infos("@" + World.Game.Ads.AdsManager.Ads.Count + "@ Ads loaded !");

                //World.Game.Pools.PoolManager.StartPoolsWarning();

                Utilities.ConsoleStyle.Infos("@Server online !@");
                Communication.NightWorld.NightWorldManager.Start();

                while (true)
                {
                    //TODO: Command scalar !
                    Console.ReadLine();
                }
            }
            catch (Exception ex)
            {
                Utilities.ConsoleStyle.Error("Error : " + ex.ToString());
                Console.ReadLine();
            }
        }