Exemple #1
0
 internal StageGeometry(OnsetCollection onsets, OnsetDrawing onsetDrawing, Color4 segmentStartColour, Random random)
 {
     Onsets              = onsets;
     _onsetDrawing       = onsetDrawing;
     _segmentStartColour = segmentStartColour;
     _random             = random;
     _baseColour         = HUSLColor.FromColor4(_segmentStartColour);
     _initialHue         = _baseColour.H;
     _p2 = new Player()
     {
         UseGamePad = true
     };
     //_p2.ShaderProgram = ParentStage.ShaderProgram;
 }
Exemple #2
0
 private HUSLColor GetOutlineColour(HUSLColor col)
 {
     col.L = ColourModifiers.outlineLightness;
     col.S = ColourModifiers.outlineSaturation;
     return(col);
 }
Exemple #3
0
        public void UpdateColours(double time)
        {
            if (InputSystem.CurrentKeys.Contains(Key.Number1))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.baseLightness -= 3;
                }
                else
                {
                    ColourModifiers.baseLightness += 3;
                }
            }
            if (InputSystem.CurrentKeys.Contains(Key.Number2))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.baseSaturation -= 3;
                }
                else
                {
                    ColourModifiers.baseSaturation += 3;
                }
            }
            if (InputSystem.CurrentKeys.Contains(Key.Number3))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.foregroundLightnessDelta -= 3;
                }
                else
                {
                    ColourModifiers.foregroundLightnessDelta += 3;
                }
            }
            if (InputSystem.CurrentKeys.Contains(Key.Number4))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.foregroundSaturationDelta -= 3;
                }
                else
                {
                    ColourModifiers.foregroundSaturationDelta += 3;
                }
            }
            if (InputSystem.CurrentKeys.Contains(Key.Number5))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.outlineLightness -= 3;
                }
                else
                {
                    ColourModifiers.outlineLightness += 3;
                }
            }
            if (InputSystem.CurrentKeys.Contains(Key.Number6))
            {
                if (InputSystem.CurrentKeys.Contains(Key.ShiftLeft))
                {
                    ColourModifiers.outlineSaturation -= 3;
                }
                else
                {
                    ColourModifiers.outlineSaturation += 3;
                }
            }

            //_baseColour.H += time*50f*(!OutOfBeats ? BeatFrequencies[_beats.Index] : 1);

            // Only update colours if more than 3 beats have passed since last time
            if (CurrentOnset - _previousBeat < 3)
            {
                return;
            }

            _previousBeat = CurrentOnset;
            _extraHue     = ((_random.NextDouble() > 0.5) ? -1 : 1) * (90 + (_hueWobbleAmount * _random.NextDouble() - _hueWobbleAmount / 2));
            double swapChance = CurrentColourMode == ColourMode.BlackAndWhite ? 0.9 : 0.95;

            if ((_elapsedTime - _lastSwapTime) > MIN_COLOUR_SWAP_TIME && _random.NextDouble() > swapChance)
            {
                _swapColours  = !_swapColours;
                _lastSwapTime = _elapsedTime;
            }

            _baseColour.H = _initialHue + (CurrentOnset) * 5;
            _baseColour.L = ColourModifiers.baseLightness;
            _baseColour.S = ColourModifiers.baseSaturation;

            var evenBackground = _baseColour;

            //find odd background
            var oddBackground = evenBackground;

            oddBackground.S += 5;
            oddBackground.L += 5;

            //set the background colours
            _colours.EvenBackgroundColour = HUSLColor.ToColor4(evenBackground);
            _colours.OddBackgroundColour  = HUSLColor.ToColor4(oddBackground);

            //find the collision colours
            var opp = evenBackground;

            opp.S += 30;
            opp.L += 20;

            _colours.EvenCollisionColour        = HUSLColor.ToColor4(opp);
            _colours.EvenCollisionOutlineColour = HUSLColor.ToColor4(GetOutlineColour(opp));

            opp    = oddBackground;
            opp.S += 30;
            opp.L += 20;

            _colours.OddCollisionColour        = HUSLColor.ToColor4(opp);
            _colours.OddCollisionOutlienColour = HUSLColor.ToColor4(GetOutlineColour(opp));

            //find the foreground colours
            var fEven = evenBackground;
            var fOdd  = oddBackground;

            fEven.H  = MathUtilities.Normalise(fEven.H + _extraHue, 0, 360);
            fEven.S += ColourModifiers.foregroundSaturationDelta;
            fEven.L += ColourModifiers.foregroundLightnessDelta;
            fOdd.H   = MathUtilities.Normalise(fOdd.H + _extraHue, 0, 360);
            fOdd.S  += ColourModifiers.foregroundSaturationDelta;
            fOdd.L  += ColourModifiers.foregroundLightnessDelta;

            //set the foreground colours
            _colours.EvenOpposingColour = HUSLColor.ToColor4(fEven);
            _colours.EvenOutlineColour  = HUSLColor.ToColor4(GetOutlineColour(fEven));
            _colours.OddOpposingColour  = HUSLColor.ToColor4(fOdd);
            _colours.OddOutlineColour   = HUSLColor.ToColor4(GetOutlineColour(fOdd));

            // Black and White
            if (CurrentColourMode == ColourMode.BlackAndWhite)
            {
                _colours.EvenOpposingColour   = _colours.OddOpposingColour = Color4.Black;
                _colours.EvenBackgroundColour = _colours.OddBackgroundColour = Color4.White;
                _colours.OddOutlineColour     = _colours.EvenOutlineColour = Color4.White;
            }

            // Swap colours if required
            if (_swapColours)
            {
                // Handle outlines for black and white
                if (CurrentColourMode == ColourMode.BlackAndWhite)
                {
                    _colours.OddOutlineColour = _colours.EvenOutlineColour = Color4.Black;
                }

                var t1 = _colours.EvenBackgroundColour;
                var t2 = _colours.OddBackgroundColour;
                _colours.EvenBackgroundColour = _colours.OddOpposingColour;
                _colours.OddBackgroundColour  = _colours.EvenOpposingColour;
                _colours.EvenOpposingColour   = t2;
                _colours.OddOpposingColour    = t1;
            }
            if (CurrentColourMode == ColourMode.BlackAndWhite)
            {
                TextColour = _colours.OddOpposingColour;
            }
        }