Exemple #1
0
        public static bool SetCurrentDir(string[] args)
        {
            var configBuilder = new ConfigurationBuilder().AddCommandLine(args,
                                                                          new Dictionary <string, string> {
                { Settings.DirArgs.Alias, Settings.DirArgs.Name.Replace("--", "") }
            });
            var config = configBuilder.Build();
            var ds     = new DirSettings();

            config.Bind(ds);
            if (!string.IsNullOrEmpty(ds.Dir))
            {
                CurrentDir = Path.Join(CurrentDir, ds.Dir);
            }
            var dir = Path.GetFullPath(CurrentDir);

            if (!Directory.Exists(dir))
            {
                DumpError($"Directory {dir} does not exists!");
                return(false);
            }
            WriteLine("", "Using dir: ");
            WriteLine(ConsoleColor.Cyan, " " + dir);
            return(true);
        }
Exemple #2
0
        // Need to code this next
        private void AutoEdge(Point pt)
        {
            Point tilePt = pt;//GetNearestTilePoint(pt);
            Map.Tile.EdgeTile.Direction EdgeDir;

            //tilePt = GetNearestTilePoint(tilePt);

            int x = 0; // Holding marker
            int y = 0; // Holding marker
            Point temTile = tilePt; // Tile location reset

                    temTile = tilePt;
                    temTile.X += x;
                    temTile.Y += y;

                    Map.Tile tesTile = Map.Tiles[tilePt];
                    Map.Tile.EdgeTile.Direction Edir = Map.Tile.EdgeTile.Direction.South;

                    Map.Tile.EdgeTile.Direction dir1;
                    Map.Tile.EdgeTile.Direction dir2;
                    Map.Tile.EdgeTile.Direction dir3;
                    DirSettings DirSetting = new DirSettings();
                    DirSetting.Clear();
                    Random random = new Random();
                    int variation = 0;

                    ///////////////////////////////////////////////////////////////////////
                    //
                    // East Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.East;
                    dir2 = Map.Tile.EdgeTile.Direction.North;
                    dir3 = Map.Tile.EdgeTile.Direction.South;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        bool done = false;
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (IsTileFromDir(tilePt, dir2) &&
                                !DirSetting.NE &&
                                !DirSetting.SE &&
                                !DirSetting.NW &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir2)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.NE = true;
                                    Edir = Map.Tile.EdgeTile.Direction.NE_Sides;
                                    done = true;
                                }
                            }
                            if (IsTileFromDir(tilePt, dir3) &&
                                !DirSetting.SE &&
                                !DirSetting.NE &&
                                !DirSetting.SW &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir3)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.SE = true;
                                    Edir = Map.Tile.EdgeTile.Direction.SE_Sides;
                                    done = true;
                                }
                            }
                            if( !done && !DirSetting.NE && !DirSetting.SE )
                            {
                                int num = random.Next(3);
                                switch (num)
                                {
                                    case 0: Edir = Map.Tile.EdgeTile.Direction.East_D; break;
                                    case 1: Edir = Map.Tile.EdgeTile.Direction.East_E; break;
                                    default: Edir = dir1; break;
                                }
                                DirSetting.E = true;
                                done = true;
                            }
                            if (done)
                            {
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                            te1.graphicId,
                                            GetEdgeVariation(cboAutoEdge.Text,te1.Variation),
                                            Edir,
                                            (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // North Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.North;
                    dir2 = Map.Tile.EdgeTile.Direction.West;
                    dir3 = Map.Tile.EdgeTile.Direction.East;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        bool done = false;
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (IsTileFromDir(tilePt, dir2) &&
                                !DirSetting.NW &&
                                !DirSetting.NE &&
                                !DirSetting.SW &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir2)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.NW = true;
                                    Edir = Map.Tile.EdgeTile.Direction.NW_Sides;
                                    done = true;
                                }
                            }
                            if (IsTileFromDir(tilePt, dir3) &&
                                !DirSetting.NE &&
                                !DirSetting.NW &&
                                !DirSetting.SE &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir3)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.NE = true;
                                    Edir = Map.Tile.EdgeTile.Direction.NE_Sides;
                                    done = true;
                                }
                            }
                            if( !done && !DirSetting.NE && !DirSetting.NW)
                            {
                                int num = random.Next(3);
                                switch (num)
                                {
                                    case 0: Edir = Map.Tile.EdgeTile.Direction.North_08; break;
                                    case 1: Edir = Map.Tile.EdgeTile.Direction.North_0A; break;
                                    default: Edir = dir1; break;
                                }
                                DirSetting.N = true;
                                done = true;
                            }
                            if (done)
                            {
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                            te1.graphicId,
                                            GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                            Edir,
                                            (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // West Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.West;
                    dir2 = Map.Tile.EdgeTile.Direction.South;
                    dir3 = Map.Tile.EdgeTile.Direction.North;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        bool done = false;
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (IsTileFromDir(tilePt, dir2) &&
                                !DirSetting.NW &&
                                !DirSetting.SW &&
                                !DirSetting.SE &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir2)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.SW = true;
                                    Edir = Map.Tile.EdgeTile.Direction.SW_Sides;
                                    done = true;
                                }
                            }
                            if (IsTileFromDir(tilePt, dir3) &&
                                !DirSetting.NW &&
                                !DirSetting.NE &&
                                !DirSetting.SW &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir3)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.NW = true;
                                    Edir = Map.Tile.EdgeTile.Direction.NW_Sides;
                                    done = true;
                                }
                            }
                            if (!done && !DirSetting.NW && !DirSetting.SW)
                            {
                                int num = random.Next(3);
                                switch (num)
                                {
                                    case 0: Edir = Map.Tile.EdgeTile.Direction.West_02; break;
                                    case 1: Edir = Map.Tile.EdgeTile.Direction.West_03; break;
                                    default: Edir = dir1; break;
                                }
                                DirSetting.W = true;
                                done = true;
                            }
                            if (done)
                            {
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                            te1.graphicId,
                                            GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                            Edir,
                                            (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // South Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.South;
                    dir2 = Map.Tile.EdgeTile.Direction.East;
                    dir3 = Map.Tile.EdgeTile.Direction.West;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        bool done = false;
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (IsTileFromDir(tilePt, dir2) &&
                                !DirSetting.SE &&
                                !DirSetting.SW &&
                                !DirSetting.NE &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir2)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.SE = true;
                                    Edir = Map.Tile.EdgeTile.Direction.SE_Sides;
                                    done = true;
                                }
                            }
                            if (IsTileFromDir(tilePt, dir3) &&
                                !DirSetting.SW &&
                                !DirSetting.SE &&
                                !DirSetting.NW &&
                                !done)
                            {
                                Map.Tile te2 = Map.Tiles[GetTileFromDir(tilePt, dir3)];
                                if (te1.Graphic == te2.Graphic)
                                {
                                    DirSetting.SW = true;
                                    Edir = Map.Tile.EdgeTile.Direction.SW_Sides;
                                    done = true;
                                }
                            }
                            if (!done && !DirSetting.SW && !DirSetting.SE)
                            {
                                int num = random.Next(3);
                                switch (num)
                                {
                                    case 0: Edir = Map.Tile.EdgeTile.Direction.South_07; break;
                                    case 1: Edir = Map.Tile.EdgeTile.Direction.South_09; break;
                                    default: Edir = dir1; break;
                                }
                                DirSetting.S = true;
                                done = true;
                            }
                            if (done)
                            {
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                            te1.graphicId,
                                            GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                            Edir,
                                            (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // NE Tip Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.NE_Tip;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (!DirSetting.NE && !DirSetting.NW && !DirSetting.SE && !DirSetting.N && !DirSetting.E)
                            {
                                Edir = dir1;
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                                                te1.graphicId,
                                                                GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                                                Edir,
                                                                (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // NW Tip Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.NW_Tip;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (!DirSetting.NW && !DirSetting.NE && !DirSetting.SW && !DirSetting.N && !DirSetting.W)
                            {
                                Edir = dir1;
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                                                te1.graphicId,
                                                                GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                                                Edir,
                                                                (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // SE Tip Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.SE_Tip;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (!DirSetting.SE && !DirSetting.NE && !DirSetting.SW && !DirSetting.S && !DirSetting.E)
                            {
                                Edir = dir1;
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                                                te1.graphicId,
                                                                GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                                                Edir,
                                                                (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
                    //
                    // SW Tip Direction If Statement
                    //
                    ///////////////////////////////////////////////////////////////////////
                    dir1 = Map.Tile.EdgeTile.Direction.SW_Tip;
                    if (IsTileFromDir(tilePt, dir1))
                    {
                        Map.Tile te1 = Map.Tiles[GetTileFromDir(tilePt, dir1)];
                        if (tesTile.Graphic != te1.Graphic && !IsOnIgnore(te1.Graphic))
                        {
                            if (!DirSetting.SW && !DirSetting.NW && !DirSetting.SE && !DirSetting.W && !DirSetting.S)
                            {
                                Edir = dir1;
                                Map.Tiles[tilePt].EdgeTiles.Add(new Map.Tile.EdgeTile(
                                                                te1.graphicId,
                                                                GetEdgeVariation(cboAutoEdge.Text, te1.Variation),
                                                                Edir,
                                                                (byte)cboAutoEdge.SelectedIndex));
                            }
                        }
                    }
                    ///////////////////////////////////////////////////////////////////////
                    ///////////////////////////////////////////////////////////////////////
        }