示例#1
0
        private void bindColumnKeys()
        {
            int  bindingIndex     = Math.Min(stageIndex, 1);
            int  columns          = PrimaryStageColumns;
            bool useSpecialColumn = AllowSpecialStyle && SpecialStyle != ManiaSpecialStyle.None;

            //Use a layout if we have one instead of the default
            LayoutMania layout = LayoutList.Layout;

            if (layout != null)
            {
                foreach (ColumnMania col in Columns)
                {
                    col.Key = layout[col];
                }
                if (useSpecialColumn)
                {
                    Columns[SpecialColumn].AlternateKey = layout[bindingIndex, ManiaLayoutAccess.AlternateKeys];
                }
                return;
            }

            int specialOffset = 0;

            if (useSpecialColumn)
            {
                columns--;
                specialOffset = SpecialColumn == 0 ? 1 : 0;
                Columns[SpecialColumn].Key          = BindingManager.ManiaDefaultSpecialKeys[bindingIndex];
                Columns[SpecialColumn].AlternateKey = BindingManager.ManiaDefaultAlternateSpecialKeys[bindingIndex];
            }

            //The leftmost key to start from
            int key = Math.Max(0, (BindingManager.ManiaMiddleKeys[bindingIndex]) - columns / 2);

            //If we should skip the binding for the middle key
            bool skipMiddle = columns % 2 == 0 && columns < 10;

            for (int i = 0; i < columns; i++)
            {
                if (skipMiddle && (key == BindingManager.ManiaMiddleKeys[0] || key == BindingManager.ManiaMiddleKeys[1]))
                {
                    key++;
                }
                Columns[i + specialOffset].Key = BindingManager.ManiaDefaultKeys[key++];
            }
        }
示例#2
0
        internal void CopyBindingToLayout(LayoutMania layout)
        {
            if (layout == null)
            {
                return;
            }

            foreach (StageMania stage in this)
            {
                foreach (ColumnMania col in stage.Columns)
                {
                    layout[col] = col.Key;
                }

                if (stage.AllowSpecialStyle && stage.SpecialStyle != ManiaSpecialStyle.None)
                {
                    layout[Math.Min(stage.stageIndex, 1), ManiaLayoutAccess.AlternateKeys] = stage.Columns[stage.SpecialColumn].AlternateKey;
                }
            }
        }