コード例 #1
0
        /// <summary>
        /// Set Goron energy colors from the given options.
        /// </summary>
        /// <param name="options">Color options.</param>
        void SetGoronEnergyColors(GoronColorOptions options)
        {
            Colors.GoronPunchEnergyPrim = GetPunchPrim(options.Main);
            Colors.GoronPunchEnergyEnv1 = options.Extra1;
            Colors.GoronPunchEnergyEnv2 = options.Extra1;

            var inner = Mix(options.Main, Colors.GoronRollInnerEnergyEnv);

            Colors.GoronRollInnerEnergyEnv  = inner.Item1;
            Colors.GoronRollInnerEnergyPrim = inner.Item2;

            var outer1 = Mix(options.Extra1, Colors.GoronRollOuterEnergyEnv1);

            Colors.GoronRollOuterEnergyEnv1  = outer1.Item1;
            Colors.GoronRollOuterEnergyPrim1 = outer1.Item2;

            var outer2 = Mix(options.Extra2, Colors.GoronRollOuterEnergyEnv2);

            Colors.GoronRollOuterEnergyEnv2  = outer2.Item1;
            Colors.GoronRollOuterEnergyPrim2 = outer2.Item2;

            Color GetPunchPrim(Color color)
            {
                var converter = new ColorSpaceConverter();

                return(converter.TranslateHsv(color, hsv => new Hsv(hsv.H, (hsv.S / 5f) * 4f, hsv.V)));
            }

            (Color env, Color prim) Mix(Color color, Color env)
            {
                // Convert color values to HSV.
                var converter = new ColorSpaceConverter();
                var curHsv    = converter.ToHsv(color);
                var envHsv    = converter.ToHsv(env);
                // Calculate delta of Value.
                var envHsvValDelta = ((curHsv.V + envHsv.V) / 2f) - curHsv.V;
                // Multiply by Saturation to limit deviation of Value for greyscale-approaching colors (Saturation approaching 0).
                var envHsvValue = options.MixEnvValue ? curHsv.V + (envHsvValDelta * curHsv.S) : curHsv.V;
                // Build new colors from HSV.
                var envResultHsv  = new Hsv(curHsv.H, curHsv.S, envHsvValue);
                var primResultHsv = new Hsv(curHsv.H, curHsv.S, curHsv.V);
                // Convert back into RGB.
                var envResult  = converter.ToColor(envResultHsv);
                var primResult = converter.ToColor(primResultHsv);

                return(envResult, primResult);
            }
        }
コード例 #2
0
        /// <summary>
        /// Set Goron energy colors from the given options.
        /// </summary>
        /// <param name="options">Color options.</param>
        void SetGoronEnergyColors(GoronColorOptions options)
        {
            Colors.GoronPunchEnergyPrim = GetPunchPrim(options.Main);
            Colors.GoronPunchEnergyEnv1 = options.Extra1;
            Colors.GoronPunchEnergyEnv2 = options.Extra1;

            var inner = Mix(options.Main, Colors.GoronRollInnerEnergyEnv);

            Colors.GoronRollInnerEnergyEnv  = inner.Item1;
            Colors.GoronRollInnerEnergyPrim = inner.Item2;

            var outer1 = Mix(options.Extra1, Colors.GoronRollOuterEnergyEnv1);

            Colors.GoronRollOuterEnergyEnv1  = outer1.Item1;
            Colors.GoronRollOuterEnergyPrim1 = outer1.Item2;

            var outer2 = Mix(options.Extra2, Colors.GoronRollOuterEnergyEnv2);

            Colors.GoronRollOuterEnergyEnv2  = outer2.Item1;
            Colors.GoronRollOuterEnergyPrim2 = outer2.Item2;
コード例 #3
0
ファイル: WorldColorsConfig.cs プロジェクト: jet082/mm-rando
 /// <summary>
 /// Apply energy colors for a specific <see cref="TransformationForm"/>.
 /// </summary>
 /// <param name="form">Transformation form.</param>
 /// <param name="colors">Energy colors to apply.</param>
 void ApplyEnergyColors(TransformationForm form, Color[] colors)
 {
     if (form == TransformationForm.Human)
     {
         SetHumanEnergyColors(colors[0], colors[1]);
     }
     else if (form == TransformationForm.Deku)
     {
         SetDekuEnergyColors(colors[0]);
     }
     else if (form == TransformationForm.Goron)
     {
         var options = new GoronColorOptions(colors[0], colors[1], colors[2]);
         SetGoronEnergyColors(options);
     }
     else if (form == TransformationForm.Zora)
     {
         SetZoraEnergyColors(colors[0]);
     }
     else if (form == TransformationForm.FierceDeity)
     {
         SetFierceDeityEnergyColors(colors[0]);
     }
 }