Ejemplo n.º 1
0
        public override void Filter(bool[,] panelConfig, GeneratorState state)
        {
            var history = state.PanelHistory;

            if (history.Count < 1)
            {
                return;
            }

            var indexOfLastFoot = PanelHistoryUtil.GetLastIndexOfLastFoot(history, state.CurrentFoot);
            var startCol        = history[indexOfLastFoot].panel[1];

            switch (state.CurrentFoot)
            {
            case Foot.Left:
                FilterLeftOfStartColumn(panelConfig, startCol, maxStretchDistance);                         // Prevent left foot from stretching too far to the left
                FilterRightOfStartColumn(panelConfig, startCol, maxCrossoverDistance);                      // Prevent left foot from crossing over too far to the right
                break;

            case Foot.Right:
                FilterRightOfStartColumn(panelConfig, startCol, maxStretchDistance);
                FilterLeftOfStartColumn(panelConfig, startCol, maxCrossoverDistance);
                break;
            }
        }
Ejemplo n.º 2
0
        public override void Filter(bool[,] panelConfig, GeneratorState state)
        {
            var history = state.PanelHistory;

            if (history.Count < 2)
            {
                return;
            }

            var lastPanelIndex = PanelHistoryUtil.GetLastIndexOfLastNote(history);
            var lastFootIndex  = PanelHistoryUtil.GetIndexOfLastFoot(history, lastPanelIndex, history[lastPanelIndex].foot);
            var lastFootPanel  = history[lastFootIndex].panel;
            var historyRow     = lastFootPanel[0];
            var historyCol     = lastFootPanel[1];

            for (var row = 0; row < PanelConfigUtil.maxRows; row++)
            {
                for (var col = 0; col < PanelConfigUtil.maxColumns; col++)
                {
                    if (Math.Abs(row - historyRow) > maxHorizontalDistance || Math.Abs(col - historyCol) > maxVerticalDistance)
                    {
                        panelConfig[row, col] = false;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public override void Filter(bool[,] panelConfig, GeneratorState state)
        {
            var history      = state.PanelHistory;
            var historyIndex = PanelHistoryUtil.GetLastIndexOfLastNote(history);
            var noteCounter  = 0;

            while (historyIndex >= 0 && noteCounter < numNotes)
            {
                var historyItem = history[historyIndex];
                var panel       = historyItem.panel;
                var row         = panel[0];
                var col         = panel[1];

                panelConfig[row, col] = false;
                DisableAdjacentRows(panelConfig, row, col);

                noteCounter++;
                historyIndex = PanelHistoryUtil.GetIndexOfLastFoot(history, historyIndex, historyItem.foot);
            }
        }