Beispiel #1
0
    /// <summary>
    /// 子メニューを開く
    /// </summary>
    private void PopChildMenu()
    {
        if (NextSceneName != "")
        {
            SceneChangeSingleton.instance.LoadLevel(NextSceneName);
            return;
        }
        IsPopChildMenu = true;
        GameObject go = Instantiate(CurrentCursorItem.ChildMenuPrefab, CurrentCursorItem.transform.position + PopChildOffset, Quaternion.identity) as GameObject;

        ChildMenu = go.GetComponent <MenuParentScript>();
        ChildMenu.transform.parent = CurrentCursorItem.transform;
        ChildMenu.MenuSelected    += MenuSelected;

        foreach (MenuItemScript item in Items)
        {
            SpriteRenderer itemSpriteRenderer = item.GetComponent <SpriteRenderer>();
            if (itemSpriteRenderer != null)
            {
                itemSpriteRenderer.sortingLayerName = "BackGround";
                itemSpriteRenderer.color            = BackColor;
            }
        }

        Selecter.GetComponentInChildren <Renderer>().enabled = false;
    }
    public void Generate()
    {
        if (mapWidth <= 0 || mapHeight <= 0)
        {
            Debug.Log("Please enter values greator than zero for the height and width");
        }
        else
        {
            FileStream          stream     = new FileStream("Assets/Resources/TileData/Test.XML", FileMode.Open);
            XmlSerializer       serializer = new XmlSerializer(typeof(List <TileTemplate>));
            List <TileTemplate> tiles      = (List <TileTemplate>)serializer.Deserialize(stream);

            if (tiles.Count >= 1)
            {
                map = TileStats.GenerateBaseMap(mapWidth, mapHeight, Ground, tiles[0]);
                UIController.SetBool("Map Generated", true);
                cam.Center(Ground);

                //Maybe find somwhere else to handle the transition
                selecter = Selecter.createSelector(map, selectSpace);
            }
            else
            {
                Debug.Log("No Tile Data set found!");
            }
        }
    }
 void Start()
 {
     operatorBehaviour = GetComponent <OperatorMonoBehaviour> ();
     selecter          = GetComponent <Selecter> ();
     operatingA        = false;
     operatingB        = false;
 }
Beispiel #4
0
 // Start is called before the first frame update
 void Start()
 {
     ct_killswitch = 0;
     selecter      = FindObjectOfType <Selecter>();
     SB            = FindObjectOfType <Scoreboard>();
     SP            = FindObjectOfType <Spawner>();
 }
Beispiel #5
0
        /**************************************************************************************************************/

        /// <summary>
        /// 过滤条件起点
        /// </summary>
        /// <param name="func">格式: it => it.CreatedOn >= WhereTest.CreatedOn</param>
        public static WhereQ <M> Where <M>(this Selecter <M> selecter, Expression <Func <M, bool> > compareFunc)
            where M : class
        {
            selecter.DC.Action = ActionEnum.Where;
            selecter.WhereHandle(compareFunc);
            return(new WhereQ <M>(selecter.DC));
        }
Beispiel #6
0
 /// <summary>
 /// 过滤条件起点 -- 设置多个条件
 /// </summary>
 public static WhereQ <M> Where <M>(this Selecter <M> selecter, object mWhere)
     where M : class
 {
     selecter.DC.Action = ActionEnum.Where;
     selecter.WhereDynamicHandle <M>(mWhere);
     return(new WhereQ <M>(selecter.DC));
 }
Beispiel #7
0
        public virtual ActionResult Select(JsSelectOptions Options)//string EntitySetName, string EntityName, Objects.JsIncludeParameter[] Includes = null, Objects.JsWhereParameter[] Wheres = null, Objects.JsOrderParameter[] Orders = null, int Skip = -1, int Take = -1, string WhereMethod = null, string OrderMethod = null)
        {
            string json = this.GetCache(Options);

            if (json.IsNotNullOrEmpty())
            {
                return(this.Content(json, "application/json"));
            }

            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            Selecter <ObjectContext> selecter = new Selecter <ObjectContext>(model);
            JsSelectResult           data     = selecter.Select(Options);//EntitySetName, EntityName, Includes, Wheres, Orders, Skip, Take, WhereMethod, OrderMethod);
            List <string>            log      = data.Data as List <string>;

            if (log != null)
            {
                log.Add(string.Format("{0:hh:mm.ss:ffff} Select data serialized", DateTime.Now));
            }

            var result = new
            {
                code   = 200,
                result = data.ToJson()
            };

            json = serializer.Serialize(result);

            this.SetCache(json, Options);

            return(this.Content(json, "application/json"));
        }
Beispiel #8
0
    void Start()
    {
        SL = FindObjectOfType <Selecter>();
        clear_sprites();
        Debug.Log("Start");
        total  = 0;
        health = 50;

        carne_f    = false;
        lacteos_f  = false;
        verduras_f = false;
        cereales_f = false;
        frutas_f   = false;

        eatenCarne      = 0;
        eatenLacteos    = 0;
        eatenVerduras   = 0;
        eatenCereales   = 0;
        eatenFrutas     = 0;
        destroyedDulces = 0;
        excesos         = 0;

        edad = int.Parse(PlayerPrefs.GetString("edad"));

        SetPorcionesMeta();
    }
Beispiel #9
0
 internal SelectQueryer(Database db)
     : base(db)
 {
     _Select = new Selecter(From);
     _Where  = new Wherer(Maker, db);
     _Joins  = new List <Joiner>();
     Maker   = Make;
 }
 public void Start()
 {
     mapName      = "Untitled";
     mapWidth     = 0;
     mapHeight    = 0;
     map          = null;
     selecter     = null;
     tile_options = null;
 }
Beispiel #11
0
    void Start()
    {
        root = new BehaviorTree();

        sequence_1 = new Sequence();
        sequence_2 = new Sequence();
        selecter_1 = new Selecter();

        condition_Dead        = new Condition_Dead();
        condition_Fine        = new Condition_Find();
        condition_AttackRange = new Condition_AttackRange();
        condition_Arrive      = new Condition_Arrive();

        timeOut_RoamingDelay = new TimeDelay();

        roaming = new Action_Roaming();
        trace   = new Action_Trace();
        attack  = new Action_Attack();
        dead    = new Action_Dead();

        colliders = new Collider[5];

        //========== 공격 ===================
        condition_AttackRange.SetTask(attack);
        selecter_1.AddTask(condition_AttackRange);
        //===================================

        //========== 추적 ===================
        condition_Fine.SetTask(trace);
        selecter_1.AddTask(condition_Fine);
        //===================================

        //========== 로밍 ===================
        timeOut_RoamingDelay.SetTime(3.0f);
        sequence_2.AddTask(timeOut_RoamingDelay);
        sequence_2.AddTask(roaming);
        condition_Arrive.SetTask(sequence_2);
        selecter_1.AddTask(condition_Arrive);
        //==================================

        sequence_1.AddTask(selecter_1);
        condition_Dead.SetTask(dead);
        sequence_1.AddTask(condition_Dead);

        root.Init(sequence_1);

        enemyCharacter     = GetComponentInChildren <Animator>().gameObject;
        animatorController = GetComponentInChildren <Animator>();
        StartCoroutine(Update_Coroution());
    }
Beispiel #12
0
    static public Selecter createSelector(TileStats[,] m_map, cursorDelegate act)
    {
        var        g_ob = Resources.Load <GameObject>("Buttons/Pointer");
        GameObject n_ob = Instantiate(g_ob);

        Selecter temp = n_ob.GetComponent <Selecter>();

        temp.map = m_map;
        temp.transform.position = temp.map[temp.x, temp.y].Location;
        temp.cursorAction       = act;


        return(temp);
    }
Beispiel #13
0
    /// <summary>
    /// 子メニューから復帰
    /// </summary>
    private void ReturnChildMenu()
    {
        IsPopChildMenu = false;

        foreach (MenuItemScript item in Items)
        {
            SpriteRenderer itemSpriteRenderer = item.GetComponent <SpriteRenderer>();
            if (itemSpriteRenderer != null)
            {
                itemSpriteRenderer.sortingLayerName = "ForeGround";
                itemSpriteRenderer.color            = DefaultColor;
            }
        }

        Selecter.GetComponentInChildren <Renderer>().enabled = true;
    }
Beispiel #14
0
        private void FormScene_MouseMove(object sender, MouseEventArgs e)
        {
            if (!_tracingMouse)
            {
                return;
            }
            else if (e.Button == MouseButtons.Left)
            {
                var w = Math.Abs(e.Location.X - _mousedownLocation.X);
                var h = Math.Abs(e.Location.Y - _mousedownLocation.Y);

                if (w > 0 && h > 0)
                {
                    var a        = Math.Min(e.Location.X, _mousedownLocation.X);
                    var b        = Math.Min(e.Location.Y, _mousedownLocation.Y);
                    var selecter = new Selecter();
                    selecter.Location = new Point(a, b);
                    selecter.Bwidth   = w;
                    selecter.Aheigth  = h;

                    foreach (var figure in _figures)
                    {
                        figure.Color = figure.IsItOverllap(selecter, figure) ? Color.Gray : figure.ConstColoring;
                    }

                    Invalidate();
                    Application.DoEvents();

                    using (var graphics = CreateGraphics())
                        selecter.Paint(graphics);
                }
            }
            else if (e.Button == MouseButtons.Right)
            {
                foreach (var figure in _Selectedfigure)
                {
                    figure.Location    = new Point(e.X - _mousedownLocation.X + figure.Location.X, e.Y - _mousedownLocation.Y + figure.Location.Y);
                    _mousedownLocation = e.Location;
                    Invalidate();
                }
            }
        }
    public void selectSpace(int x, int y)
    {
        //Create the Tile Display Object
        GameObject template     = Resources.Load <GameObject>("Buttons/TileDisplay");
        GameObject tile_display = Instantiate(template, canvas.transform);

        //Get the tile we are selecting
        TileStats tile = map[x, y];

        //Remove Selector
        Destroy(selecter.gameObject);
        selecter = null;

        //add image to tile display
        Image display = tile_display.transform.Find("Sprite Display").GetComponent <Image>();

        display.sprite = tile.GetSprite();

        //Add Options for Tiles
        tile_options = tile_display.transform.Find("Tile Dropdown").GetComponent <Dropdown>();

        //Add functionality to button
        Button submit = tile_display.transform.Find("Select Tile").GetComponent <Button>();

        submit.onClick.AddListener(delegate { ActivateTile(); });

        //Find a different place for this, seems like we should have this loaded already
        FileStream          stream     = new FileStream("Assets/Resources/TileData/Test.XML", FileMode.Open);
        XmlSerializer       serializer = new XmlSerializer(typeof(List <TileTemplate>));
        List <TileTemplate> tile_temps = (List <TileTemplate>)serializer.Deserialize(stream);

        foreach (TileTemplate tile_temp in tile_temps)
        {
            Dropdown.OptionData option = new Dropdown.OptionData(tile_temp.id);
            tile_options.options.Add(option);
        }
    }
Beispiel #16
0
 // Start is called before the first frame update
 void Start()
 {
     ct_killswitch = 0;
     selecter      = FindObjectOfType <Selecter>();
 }
Beispiel #17
0
 /// <summary>
 /// 过滤条件起点 -- 设置多个条件
 /// </summary>
 public static WhereQ <M> Where <M>(this Selecter <M> selecter, object mWhere)
 {
     selecter.DC.OP.WhereDynamicHandle <M>(mWhere);
     return(new WhereQ <M>(selecter.DC));
 }
Beispiel #18
0
        /**************************************************************************************************************/

        /// <summary>
        /// 过滤条件起点
        /// </summary>
        /// <param name="func">格式: it => it.CreatedOn >= WhereTest.CreatedOn</param>
        public static WhereQ <M> Where <M>(this Selecter <M> selecter, Expression <Func <M, bool> > func)
        {
            selecter.DC.OP.WhereHandle(func, CrudTypeEnum.Query);
            return(new WhereQ <M>(selecter.DC));
        }
Beispiel #19
0
 void Start()
 {
     selecter = GameObject.Find(selecterGameObjectName).GetComponent<Selecter>();
     selecter.register(this);
 }
Beispiel #20
0
 public static DistinctQ <M> Distinct <M>(this Selecter <M> selecter)
     where M : class
 {
     selecter.DistinctHandle();
     return(new DistinctQ <M>(selecter.DC));
 }
Beispiel #21
0
        public JsonResult Export(JsExportOptions Options)
        {
            byte[]     content = null;
            int        startRow = 1, startColumn = 1;
            JsonResult result = new JsonResult()
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
            string          id = Guid.NewGuid().ToString();
            JsSelectOptions so = Options.SelectOptions;

            if (Options.Type == ExportTypesEnum.AllRows)
            {
                so.Skip = -1;
                so.Take = -1;
            }

            Selecter <ObjectContext>   selecter     = new Selecter <ObjectContext>(model);
            JsSelectResult             selectResult = selecter.Select(so);
            IEnumerable <EntityObject> data         = selectResult.Collections[so.EntitySetName];
            string fileName = Options.Name.StringAndTrim();

            fileName += !fileName.EndsWith(".xlsx") ? ".xlsx" : "";
            fileName  = fileName.Replace(System.IO.Path.GetInvalidFileNameChars(), "");

            OfficeOpenXml.ExcelPackage   p    = new OfficeOpenXml.ExcelPackage();
            OfficeOpenXml.ExcelWorkbook  book = p.Workbook;
            OfficeOpenXml.ExcelWorksheet sheet;
            Type         itType;
            EntityObject first;

            try
            {
                first  = data.FirstOrDefault();
                itType = first != null?first.GetType() : null;

                sheet = book.Worksheets.Add(Options.Name);

                int i = 0;
                foreach (JsExportParameter ep in Options.Parameters)
                {
                    ep.Compile(itType);
                    sheet.Cells[startRow, startColumn + i].Value = ep.Name;
                    sheet.Column(startColumn + i).AutoFit();
                    sheet.Column(startColumn + i).BestFit = true;
                    i++;
                }

                if (!data.Any())
                {
                    sheet.Row(startRow).Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
                    sheet.Row(startRow).Style.Font.Bold           = true;

                    using (MemoryStream ms = new MemoryStream())
                    {
                        p.SaveAs(ms);
                        content               = ms.ToArray();
                        result.Data           = new { Success = true, Result = data.Count(), ID = id };
                        HttpContext.Cache[id] = File(content, XlsxContentType, fileName);
                        return(result);
                    }
                }

                i = startRow + 1;
                foreach (EntityObject item in data)
                {
                    for (int j = 0; j < Options.Parameters.Length; j++)
                    {
                        JsExportParameter par   = Options.Parameters[j];
                        object            value = par.GetValue(item);

                        if (value != null && value.GetType() == typeof(DateTime))
                        {
                            value = ((DateTime)value).ToShortDateString();
                        }

                        sheet.Cells[i, startColumn + j].Value = value;
                    }
                    i++;
                }

                sheet.Row(startRow).Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
                sheet.Row(startRow).Style.Font.Bold           = true;

                for (i = 0; i < sheet.Dimension.End.Column; i++)
                {
                    sheet.Column(startColumn + i).AutoFit();
                    sheet.Column(startColumn + i).BestFit = true;
                }

                using (MemoryStream ms = new MemoryStream())
                {
                    p.SaveAs(ms);
                    content               = ms.ToArray();
                    result.Data           = new { Success = true, Result = new { Count = data.Count(), ID = id }, Code = 200 };
                    HttpContext.Cache[id] = File(content, XlsxContentType, fileName);
                }
            }
            catch (Exception ex)
            {
                result.Data = new { Success = false, Error = ex.Message };
            }
            finally
            {
                p.Dispose();
            }

            return(result);
        }
Beispiel #22
0
 void Start()
 {
     selecter = FindObjectOfType <Selecter>();
 }
Beispiel #23
0
 public Selecter Select(params string[] selects)
 {
     _Select = new Selecter(From, selects);
     return(_Select);
 }
Beispiel #24
0
 public static OrderByQ <M> OrderBy <M, F>(this Selecter <M> target, Expression <Func <M, F> > propertyFunc, OrderByEnum orderBy = OrderByEnum.Desc)
     where M : class
 {
     return(OrderByQ(target, propertyFunc, orderBy));
 }
Beispiel #25
0
        /// <summary>
        /// Script parcourant toutes les roms d'un répertoire.
        /// </summary>
        /// <param name="romsDirectory">Répertoire contenant toutes les roms.</param>
        /// <param name="exportDirectory">Répertoire vers lequelle les roms validées seront exportées.</param>
        /// <param name="worldZones">Zones géographiques à exporter (ex : {"(U)", "(E)"}).</param>
        /// <param name="patchsToApply">Patchs de traduction à appliquer (ex : {"Fre", "Eng"}).</param>
        private static void BrowseRoms(string romsDirectory, string exportDirectory, string[] worldZones)
        {
            // Si le répertoire que l'utilisateur a spécifié n'existe pas, on balance une exception et on l'insulte.
            if (!Directory.Exists(romsDirectory))
            {
                throw new Exception("Le répertoire que vous avez spécifié comme source pour les roms n'existe pas. Vous êtes mauvais.");
            }

            // Si le répertoire que l'utilisateur a spécifié n'existe pas, on balance une exception et on l'insulte un peu plus fort.
            if (!Directory.Exists(romsDirectory))
            {
                throw new Exception("Le répertoire que vous avez spécifié pour l'export n'existe pas. Vous êtes très mauvais.");
            }

            // On va parcourir le dossier censé contenir les roms
            string[] files = Directory.GetFiles(romsDirectory);

            for (int i = 0; i < files.Count(); i++)
            {
                try
                {
                    Console.Title = "RomRight : " + Math.Round(((i / (double)files.Count()) * 100)) + "%";

                    string romArchive = files[i];

                    if (Path.GetExtension(romArchive) == ".7z")
                    {
                        // Seuil de note en dessous duquel les roms ne seront pas prises
                        int threshold = 100;

                        // Pour éviter une sortie du buffer (fixé à 800) lors des déplacements de curseur
                        // On clear la console de temps en temps
                        if (Console.CursorTop > 700)
                        {
                            Console.Clear();
                        }

                        Utils.WriteLineInLog("\n======= Parcourt de " + romArchive);

                        string[] romFiles;

                        // On récupère tous les fichiers de roms
                        using (var tmp = new SevenZipExtractor(romArchive))
                        {
                            romFiles = tmp.ArchiveFileNames.ToArray();
                        }

                        // On va créer une liste des variations de roms, regroupées par leur nom commun
                        // Par exemple, "Sonic 1 [!]" et "Sonic 1 (W) [b1]" seront tous deux rangés sous l'id "Sonic 1"
                        Dictionary <string, List <RatedRom> > sortedRomsFiles = new Dictionary <string, List <RatedRom> >();

                        // On va trier les fichiers qu'on a récupéré
                        foreach (string romFile in romFiles)
                        {
                            // Expressions régulières correspondantes aux tags () et []
                            Regex regexParenthesis = new Regex("\\(.*?\\)");
                            Regex regexBracket     = new Regex("\\[.*?\\]");

                            // On va récupérer les noms des roms sans les variantes () et []
                            string uid = Path.GetFileNameWithoutExtension(romFile);
                            uid = regexParenthesis.Replace(uid, "");
                            uid = regexBracket.Replace(uid, "");
                            uid = uid.Trim();

                            // Si on a encore jamais croisé cet uid, il faut créer la liste qui va contenir les noms des roms
                            if (!sortedRomsFiles.ContainsKey(uid))
                            {
                                sortedRomsFiles[uid] = new List <RatedRom>();
                            }

                            // On ajoute le fichier de rom à la liste
                            sortedRomsFiles[uid].Add(new RatedRom(Path.GetFileName(romFile), 0));
                        }

                        // On va lancer le système de notation des roms qui va permettre de choisir automatiquement
                        // la plus pertinente pour la collection.
                        foreach (string uid in sortedRomsFiles.Keys)
                        {
                            foreach (RatedRom ratedRom in sortedRomsFiles[uid])
                            {
                                ratedRom.Rate(worldZones);

                                // On calcule le seuil de la rom (le plancher de centaines le plus proche de sa note)
                                // Ex : pour une rom avec une note de 345, on aura 300.
                                int floorMark = (int)Math.Floor(ratedRom.Mark / 100.0) * 100;

                                // Si le seuil est plus bas, on le réhausse
                                if (threshold < floorMark)
                                {
                                    threshold = floorMark;
                                }
                            }
                        }

                        List <string> finalRomList = new List <string>();

                        // On va chercher les roms les plus pertinentes (celles qui ont eu la meilleure note)
                        foreach (string uid in sortedRomsFiles.Keys)
                        {
                            List <RatedRom> topRoms = new List <RatedRom>();
                            int             maxMark = 0;

                            foreach (RatedRom ratedRom in sortedRomsFiles[uid])
                            {
                                Utils.WriteLineInLog("--- " + ratedRom.Mark + " : " + ratedRom.RomFileName);

                                // On ignore les roms qui ont une note inférieur au seuil
                                if (ratedRom.Mark >= threshold)
                                {
                                    // Si la rom actuelle a une note strictement supérieure au maximum trouvé jusqu'à maintenant
                                    if (ratedRom.Mark > maxMark)
                                    {
                                        maxMark = ratedRom.Mark;

                                        // On efface toutes les roms de la top list car on a trouvé mieux
                                        topRoms.Clear();
                                        topRoms.Add(ratedRom);
                                    }
                                    // Si la rom actuelle a une note identique à celle max trouvée, on ajoute simplement la rom à la liste
                                    else if (ratedRom.Mark == maxMark)
                                    {
                                        topRoms.Add(ratedRom);
                                    }
                                }
                            }

                            // Si l'algorithme n'a pas réussi à départager plusieurs roms, il faut demander à l'utilisateur de choisir manuellement
                            if (topRoms.Count() > 1)
                            {
                                // On construit le selecteur pour que l'utilisateur choisisse
                                ListChoice[] romChoices = new ListChoice[topRoms.Count()];

                                for (int j = 0; j < topRoms.Count(); j++)
                                {
                                    romChoices[j] = new ListChoice(topRoms[j].RomFileName, topRoms[j].RomFileName);
                                }

                                Selecter selectBestRom = new Selecter(romChoices);

                                // On récupère la rom choisie par l'utilisateur et on l'ajoute dans la liste finale
                                ListChoice choosenRom = selectBestRom.Choose();
                                finalRomList.Add(choosenRom.Choice);
                            }
                            // Si on a qu'une seule rom dans le top, on la prend
                            else if (topRoms.Count() == 1)
                            {
                                finalRomList.Add(topRoms[0].RomFileName);
                            }
                        }

                        // On exporte les roms qui ont été sélectionnées comme les plus pertinentes
                        using (var tmp = new SevenZipExtractor(romArchive))
                        {
                            tmp.ExtractFiles(exportDirectory, finalRomList.ToArray());
                        }

                        // On affiche tous les fichiers de roms
                        foreach (string romFileName in finalRomList)
                        {
                            Utils.WriteLineInLog("*** " + romFileName);
                        }
                    }
                }
                catch (Exception e)
                {
                    Utils.WriteLineInLog("Erreur lors du traitement de la rom : " + e.Message);
                }
            }
        }
Beispiel #26
0
        /// <summary>
        /// Execute le script principal de RomRight.
        /// </summary>
        /// <param name="args">Arguments à passer</param>
        private static void ExecRomRight(string[] args)
        {
            Console.Title        = "RomRight";
            Console.WindowHeight = 40;
            Console.WindowWidth  = 100;

            Console.BackgroundColor = ConsoleColor.White;
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.DarkBlue;

            Console.BufferHeight = 800;

            // Chargement de la dll 7zip
            SevenZipExtractor.SetLibraryPath(@"7z.dll");

            // On écrit le header
            Console.WriteLine(TITLE_ASCII_ART + "\n");
            Console.WriteLine("-----------------------------------------------------------\n");
            Console.WriteLine("Développé par Francois BERTRAND (lamoutarde.fr), RomRight permet de créer automatiquement une bibliothèque de roms localisée à partir de fichiers 7z.\n");
            Console.WriteLine("-----------------------------------------------------------\n");

            string romsDirectory   = null;
            string exportDirectory = null;

            ////////////////////////////////////////////////////////
            #region Choix du dossier source
            ////////////////////////////////////////////////////////

            // Si l'utilisateur n'a pas passé d'arg[0], il va falloir lui demander de choisir un dossier où se trouvent les roms
            if (args.Count() == 0)
            {
                Console.WriteLine("\nOù se trouve le répertoire contenant vos roms ?");
                Selecter selectDirectory = new Selecter(new ListChoice[] {
                    new ListChoice("7z", "Répertoire 7z dans le dossier de l'application"),
                    new ListChoice("dialog", "Choisir le dossier dans l'explorateur Windows")
                });

                // Tant qu'on a pas de répertoire sur lequel travailler, on boucle sur le choix de l'utilisateur
                // Y U NO SELECT SOMETHING CORRECT
                while (romsDirectory == null)
                {
                    string choice = selectDirectory.Choose().Choice;

                    // Si l'utilisateur souhaite utiliser le dossier 7z à la racine du projet
                    if (choice == "7z")
                    {
                        romsDirectory = "7z";
                    }
                    // Si l'utilisateur veut sélectionner le dossier des roms via une boite de dialog
                    else if (choice == "dialog")
                    {
                        romsDirectory = Utils.GetDirectoryWithDialog();
                    }
                }
            }
            // Si l'utilisateur a saisi un arg[0], on considère qu'il s'agit du répertoire des roms
            else
            {
                romsDirectory = args[0];
            }

            #endregion

            ////////////////////////////////////////////////////////
            #region Choix du dossier d'export
            ////////////////////////////////////////////////////////

            // Si l'utilisateur n'a pas passé d'arg[1], il va falloir lui demander de choisir un dossier pour l'export
            if (args.Count() < 1)
            {
                Console.WriteLine("\nOù voulez vous exportez les fichiers finaux ?");
                Selecter selectDirectory = new Selecter(new ListChoice[] {
                    new ListChoice("export", "Répertoire export dans le dossier de l'application"),
                    new ListChoice("dialog", "Choisir le dossier dans l'explorateur Windows")
                });

                // Tant qu'on a pas de répertoire sur lequel travailler, on boucle sur le choix de l'utilisateur
                // Y U NO SELECT SOMETHING CORRECT
                while (exportDirectory == null)
                {
                    string choice = selectDirectory.Choose().Choice;

                    // Si l'utilisateur souhaite utiliser le dossier 7z à la racine du projet
                    if (choice == "export")
                    {
                        exportDirectory = "export";

                        // On vide le dossier d'export
                        if (Directory.Exists("export"))
                        {
                            Directory.Delete("export", true);
                        }

                        Directory.CreateDirectory("export");
                    }
                    // Si l'utilisateur veut sélectionner le dossier des roms via une boite de dialog
                    else if (choice == "dialog")
                    {
                        exportDirectory = Utils.GetDirectoryWithDialog();
                    }
                }
            }
            // Si l'utilisateur a saisi un arg[1], on considère qu'il s'agit du répertoire des roms
            else
            {
                exportDirectory = args[1];
            }

            #endregion

            ////////////////////////////////////////////////////////
            #region Choix des zones géographiques
            ////////////////////////////////////////////////////////

            string selectedZones = "";

            // Si l'utilisateur n'a pas passé d'args[2], on va lui demander s'il veut saisir les codes pays
            if (args.Count() < 2)
            {
                // Tant que l'utilisateur n'a rien sélectionné ou rien tappé, on boucle
                while (selectedZones == "")
                {
                    Console.WriteLine("\nQuelles zones doivent-être exportées ?");

                    Selecter selectZones = new Selecter(new ListChoice[] {
                        new ListChoice("default", "Garder la sélection par défaut pour la France (" + DEFAULT_ZONES + ")"),
                        new ListChoice("manual", "Entrer manuellement les zones à exporter"),
                    });

                    // S'il souhaite garder le choix par défaut
                    if (selectZones.Choose().Choice == "default")
                    {
                        selectedZones = DEFAULT_ZONES;
                    }
                    // S'il veut entrer manuellement les zones
                    else
                    {
                        Console.WriteLine("\nTappez les codes de pays, séparés par des espaces et sans parenthèse (ex : U E) :");
                        selectedZones = Console.ReadLine();
                    }
                }
            }
            // Si l'utilisateur a saisi un args[2], on l'utilise pour les zones
            else
            {
                selectedZones = args[2];
            }

            #endregion


            // On lance l'algorithme qui va s'occuper des roms
            BrowseRoms(romsDirectory, exportDirectory, selectedZones.Trim().Split(new char[] { ' ' }));

            Console.Title = "RomRight";
            Console.Write("\nFin du traitement. Appuyez sur une touche pour quitter le programme... ");
            Console.ReadKey();
        }