コード例 #1
0
ファイル: Program.cs プロジェクト: squall-tech/akmapeditor
        static void Main(string[] args)
        {
            bool ieserver = false;
            bool aborted  = false;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            // Starting app.
            try{
                Settings.SetDefault();
                String dataDir  = Generic.getAppDir() + "\\data\\";
                String tibiaDir = "";
                Global.inicialMap = "";

                if (args.Length >= 1)
                {
                    if ("dev".Equals(args[0]))
                    {
                        //devMode = true;
                        dataDir = "C:\\dev\\otserv\\mapeditor\\data\\";
                    }
                    else if ("dev_serv".Equals(args[0]))
                    {
                        //    devMode = true;
                        dataDir  = "C:\\dev\\otserv\\mapeditor\\data\\";
                        ieserver = true;
                    }
                    else if ("serv".Equals(args[0]))
                    {
                        ieserver = true;
                        if ((args.Length >= 2) && (!"".Equals(args[1])))
                        {
                            Global.inicialMap = args[1];
                        }
                    }
                    else
                    {
                        Global.inicialMap = args[0];
                    }
                }

                Global.items = new ItemDatabase();
                Global.items.Load(dataDir + "960\\items.otb");

                if (!ieserver)
                {
                    var client_file = XElement.Load(dataDir + "\\client.xml");
                    foreach (var client in client_file.Elements("client"))
                    {
                        tibiaDir = client.Attribute("tibia_dir").GetString();
                        if (!File.Exists(tibiaDir + "\\Tibia.spr"))
                        {
                            tibiaDir = Generic.OpenTibiaFolder();
                            if (!File.Exists(tibiaDir + "\\Tibia.spr"))
                            {
                                MessageBox.Show("Diretório inválido");
                                Environment.Exit(1);
                            }
                            client.Attribute("tibia_dir").SetValue(tibiaDir);
                            client_file.Save(dataDir + "\\client.xml");
                        }
                    }

                    try
                    {
                        Global.gfx = new GraphicManager(Global.items);
                        Global.gfx.loadSpriteMetadata(tibiaDir + "\\Tibia.dat");
                        Global.gfx.loadSpriteData(tibiaDir + "\\Tibia.spr");
                    }
                    catch (Exception ex2)
                    {
                        client_file = XElement.Load(dataDir + "\\client.xml");
                        foreach (var client in client_file.Elements("client"))
                        {
                            client.Attribute("tibia_dir").SetValue("");
                            client_file.Save(dataDir + "\\client.xml");
                        }
                        throw ex2;
                    }


                    if (errorOnVersion)
                    {
                        client_file = XElement.Load(dataDir + "\\client.xml");
                        foreach (var client in client_file.Elements("client"))
                        {
                            client.Attribute("tibia_dir").SetValue("");
                            client_file.Save(dataDir + "\\client.xml");
                        }
                    }
                }

                CreatureDatabase.creatureDatabase = new CreatureDatabase();
                CreatureDatabase.creatureDatabase.loadFromXML(dataDir + "960\\creatures.xml", false);

                if (!ieserver)
                {
                    Materials.getInstance().loadMaterials(XElement.Load(dataDir + "960\\materials.xml"), dataDir + "960\\");
                    Materials.getInstance().loadExtensions(dataDir + "\\extensions");
                    Materials.getInstance().createOtherTileset();
                    Brushes.getInstance().init();
                }

                if (Messages.messageList != "")
                {
                    //    MessageBox.Show(Messages.messageList);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro: " + ex.Message + "\n trace" + ex.StackTrace);
                aborted = true;
                Application.Exit();
            }
            if (!aborted)
            {
                if (!ieserver)
                {
                    Application.Run(new MainForm());
                }
                else
                {
                    Application.Run(new ServerForm());
                }
            }
        }