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; }
private HUSLColor GetOutlineColour(HUSLColor col) { col.L = ColourModifiers.outlineLightness; col.S = ColourModifiers.outlineSaturation; return(col); }
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; } }