Exemple #1
0
        public static void CreateHorizontalEntrancePath(IntentionDependencies p)
        {
            var circuits  = p.grid.GetByMeaning(Meaning.Circuit);
            var leftMost  = circuits.Select(x => x.X).Min();
            var rightMost = circuits.Select(x => x.X).Max();

            foreach (var entrance in p.entrances.Where(e => e.X == 0 || e.X == p.grid.Width))
            {
            }
            var xDir   = 0;
            var xStart = 0;
            var xStop  = leftMost;

            if (entranceX <= 0)
            {
                xDir = 1;
            }
            else
            {
                xDir   = -1;
                xStart = grid.Width - 1;
                xStop  = rightMost;
            }

            for (var x = xStart; x != xStop; x += xDir)
            {
                grid.Positions[x, entranceY].Intentions.Add(Intention.EntrancePathIntention());
            }

            //Debug
            DebugPrintMeaning(grid, Meaning.EntrancePath);
        }
Exemple #2
0
        public static int[] CreateGroundLevels(IntentionDependencies p)
        {
            var floorHeight  = 2.0;
            var groundLevels = new int[(int)Math.Floor((p.grid.Height - 2) / floorHeight)];

            for (var i = 0; i < groundLevels.Count(); i++)
            {
                groundLevels[i]  = (int)Math.Floor((i) * (p.grid.Height - 2) / (float)groundLevels.Count());
                groundLevels[i] += (int)floorHeight;
            }

            for (var x = 1; x < p.grid.Width - 1; x++)
            {
                for (var y = 0; y < p.grid.Height; y++)
                {
                    if (groundLevels.Any(gl => gl == y))
                    {
                        p.grid.Positions[x, y].Intentions.Add(Intention.GroundLevelIntention());
                    }
                }
            }

            DebugPrintMeaning(p.grid, Meaning.GroundLevel);

            return(groundLevels);
        }
Exemple #3
0
        public static void CreateHorizontalExitPath(IntentionGrid grid, int exitX, int exitY)
        {
            var circuits  = grid.GetByMeaning(Meaning.Circuit);
            var leftMost  = circuits.Select(x => x.X).Min();
            var rightMost = circuits.Select(x => x.X).Max();

            var xDir   = 0;
            var xStart = 0;
            var xStop  = leftMost;

            if (exitX <= 0)
            {
                xDir = 1;
            }
            else
            {
                xDir   = -1;
                xStart = grid.Width - 1;
                xStop  = rightMost;
            }

            for (var x = xStart; x != xStop; x += xDir)
            {
                grid.Positions[x, exitY].Intentions.Add(Intention.ExitPathIntention());
            }

            DebugPrintMeaning(grid, Meaning.ExitPath);
        }
Exemple #4
0
        public static void CreateToggleExitDoor(IntentionGrid grid)
        {
            var tile = grid.GetByMeaning(Meaning.ExitPath).Where(t => t.X == grid.Width - 1 || t.X == 0).FirstOrDefault();

            grid.Positions[tile.X, tile.Y].Intentions.Add(Intention.ToggleDoorIntention());

            DebugPrintMeaning(grid, Meaning.ToggleDoor);
        }
Exemple #5
0
        public static void CreateToggleExitDoorButton(IntentionGrid grid, Random random)
        {
            //get a humble GroundLevel Tile
            var tiles           = grid.GetByMeaning(Meaning.GroundLevel).Where(t => grid.Positions[t.X, t.Y].Intentions.Count == 1).ToList();
            var tile            = tiles[random.Next(0, tiles.Count())];
            var buttonIntention = Intention.ButtonIntention();
            var exit            = grid.GetByMeaning(Meaning.ExitPath).Where(t => grid.Positions[t.X, t.Y].Intentions.Any(i => i.Meaning == Meaning.ToggleDoor)).First().Intentions.Where(i => i.Meaning == Meaning.ToggleDoor).First();

            buttonIntention.RelatedTileMeaning = exit;
            exit.RelatedTileMeaning            = buttonIntention;
            grid.Positions[tile.X, tile.Y].Intentions.Add(Intention.ButtonIntention());

            DebugPrintMeaning(grid, Meaning.Button);
        }
Exemple #6
0
        public static void CreateCircuit(IntentionDependencies p)
        {
            var verticals = new int[2];

            verticals[0] = (int)Math.Floor(p.grid.Width / 4.0f);
            verticals[1] = (int)Math.Floor(3.0f * p.grid.Width / 4.0f);

            var groundLevels    = p.grid.GetByMeaning(Meaning.GroundLevel);
            var groundLevelsMin = groundLevels.Min(x => x.Y);
            var groundLevelsMax = groundLevels.Max(x => x.Y);

            for (var x = 0; x < p.grid.Width; x++)
            {
                for (var y = 0; y < p.grid.Height; y++)
                {
                    if (
                        !(
                            y >= groundLevelsMin &&
                            y <= groundLevelsMax &&
                            x >= verticals[0] &&
                            x <= verticals[1]
                            )
                        )
                    {
                        continue;
                    }

                    if (
                        (y == groundLevelsMin || y == groundLevelsMax) ||
                        (x == verticals[0] || x == verticals[1])
                        )
                    {
                        p.grid.Positions[x, y].Intentions.Add(Intention.CircuitIntention());
                    }

                    if (x == verticals[0] || x == verticals[1])
                    {
                        p.grid.Positions[x, y].Intentions.Add(Intention.LadderIntention());
                    }
                }
            }


            //Debug
            DebugPrintMeaning(p.grid, Meaning.Circuit);
        }
Exemple #7
0
        public static void CreateBorder(IntentionGrid grid, Random random)
        {
            for (var y = 0; y < grid.Height; y++)
            {
                var str = "";
                for (var x = 0; x < grid.Width; x++)
                {
                    if (
                        (x == 0 || y == 0 || x == grid.Width - 1 || y == grid.Height - 1)
                        &&
                        grid.Positions[x, y].Intentions.Count() == 0
                        )
                    {
                        grid.Positions[x, y].Intentions.Add(Intention.SolidIntention());
                    }
                }
            }

            DebugPrintMeaning(grid, Meaning.Solid);
        }
Exemple #8
0
        public static void CreateRopeSection(IntentionGrid grid, Random random)
        {
            //TODO - RANDOMIZE THIS

            //get a humble groundlevel tile
            var tiles = grid.GetByMeaning(Meaning.GroundLevel).Where(t => grid.Positions[t.X, t.Y].Intentions.Count == 1).ToList();

            //find 3 in a row
            var middle = tiles.Where(t => tiles.Any(tleft => tleft.Y == t.Y && tleft.X == t.X - 1) && tiles.Any(tright => tright.Y == t.Y && tright.X == t.X + 1)).FirstOrDefault();

            if (middle != null)
            {
                /*for(var x = middle.X -1; x <= middle.X +1; x++)
                 * {
                 *  grid.Positions[x, middle.Y].Intentions.Add(Intention.RopeIntention());
                 * }*/
                grid.Positions[middle.X, middle.Y].Intentions.Add(Intention.RopeIntention());
            }

            DebugPrintMeaning(grid, Meaning.Rope);
        }