コード例 #1
0
 public static bool Prefix(JukeboxInstance __instance)
 {
     if (string.IsNullOrEmpty(__instance.file) || !Jukebox.HasFile(__instance._file))
     {
         __instance.SwitchTrack(true);
     }
     if (__instance.isControlling && Jukebox.isStartingOrPlaying)
     {
         MainPatch.isPaused = !Jukebox.paused;
         Jukebox.paused     = !Jukebox.paused;
     }
     else if (__instance.ConsumePower())
     {
         Jukebox.Play(__instance);
         Jukebox.TrackInfo info = Jukebox.GetInfo(__instance.file);
         __instance.SetLabel(info.label);
         __instance.SetLength(info.length);
         MainPatch.isPlaying = true;
         MainPatch.isPaused  = false;
     }
     else
     {
         __instance.SetLabel(Language.main.Get("JukeboxNoPower"));
     }
     if (StoryGoalManager.main.IsAlanOnboard())
     {
         StoryGoal.Execute("Log_Alan_Aside_JukeboxMusic", Story.GoalType.PDA, true, false);
     }
     return(false);
 }
コード例 #2
0
 public static bool Prefix(JukeboxInstance __instance)
 {
     __instance.imagePlayPause.sprite = __instance.spritePlay;
     if (__instance.isControlling)
     {
         Jukebox.Stop();
         MainPatch.isPlaying = false;
         MainPatch.isPaused  = false;
     }
     return(false);
 }
コード例 #3
0
        public static bool Prefix(JukeboxInstance __instance)
        {
            if (__instance._materials == null)
            {
                return(false);
            }
            float num  = __instance._flashValue;
            float num2 = __instance._highValue;

            if (__instance.isControlling)
            {
                float        num3     = 0f;
                float        num4     = 0f;
                List <float> spectrum = Jukebox.spectrum;
                if (spectrum != null && spectrum.Count > 0)
                {
                    int num5 = Mathf.Min(2, spectrum.Count);
                    for (int i = 0; i < num5; i++)
                    {
                        float b = spectrum[i];
                        num3 = Mathf.Max(num3, b);
                    }
                    int count = spectrum.Count;
                    for (int j = num5; j < count; j++)
                    {
                        float b2 = spectrum[j];
                        num4 = Mathf.Max(num4, b2);
                    }
                }
                if (num < num3)
                {
                    num = num3;
                }
                else
                {
                    num = Mathf.SmoothDamp(num, num3, ref __instance._flashVelocity, 0.2f, float.PositiveInfinity, Time.deltaTime);
                }
                if (num2 < num4)
                {
                    num2 = num4;
                }
                else
                {
                    num2 = Mathf.SmoothDamp(num2, num4, ref __instance._highVelocity, 0.05f, float.PositiveInfinity, Time.deltaTime);
                }
                num  = Mathf.Clamp(num, 0.2f, 1f);
                num2 = Mathf.Clamp01(num2 * 1.75f) * 0.39999998f + 0.6f;
            }
            else if (num != 0f)
            {
                num = 0f;
                __instance._flashVelocity = 0f;
            }
            else if (num2 != 0f)
            {
                num2 = 0f;
                __instance._highVelocity = 0f;
            }
            if (__instance._highValue != num2)
            {
                Color value;
                __instance._highValue = num2;
                if (JukeboxConfig.JBColor)
                {
                    value = Color.Lerp(JukeboxConfig.FlashColor0, JukeboxConfig.FlashColor2, __instance._highValue);
                }
                else
                {
                    value = Color.Lerp(__instance.flashColor0, __instance.flashColor2, __instance._highValue);
                }
                __instance._materials[1].SetColor(ShaderPropertyID._Color, value);
            }
            if (__instance._flashValue != num)
            {
                Color value2;
                if (JukeboxConfig.JBColor)
                {
                    value2 = Color.Lerp(JukeboxConfig.FlashColor0, JukeboxConfig.FlashColor1, __instance._flashValue);
                }
                else
                {
                    value2 = Color.Lerp(__instance.flashColor0, __instance.flashColor1, __instance._flashValue);
                }
                __instance._flashValue = num;
                __instance._materials[1].SetColor(ShaderPropertyID._GlowColor, value2);
            }

            var subRoot = __instance._baseComp;

            light = subRoot.GetCellLightingFor(__instance.transform.position);
            var color0 = new Color(__instance.flashColor0.r, __instance.flashColor0.g, __instance.flashColor0.b, 1);
            var color1 = new Color(__instance.flashColor1.r, __instance.flashColor1.g, __instance.flashColor1.b, 1);
            var color2 = new Color(JukeboxConfig.FlashColor0.r, JukeboxConfig.FlashColor0.g, JukeboxConfig.FlashColor0.b, 1);
            var color3 = new Color(JukeboxConfig.FlashColor1.r, JukeboxConfig.FlashColor1.g, JukeboxConfig.FlashColor1.b, 1);

            //var color4 = new Color(JukeboxConfig.FlashColor2.r, JukeboxConfig.FlashColor2.g, JukeboxConfig.FlashColor2.b, 1);
            //string file = "Logs/test.txt";
            if (light != null && JukeboxConfig.PartyMode)
            {
                foreach (var l in light.interior)
                {
                    foreach (var mat in l.materials)
                    {
                        Color flashValue;
                        Mat = mat;
                        if (JukeboxConfig.JBColor)
                        {
                            flashValue = Color.Lerp(color2, color3, __instance._flashValue);
                        }
                        else
                        {
                            flashValue = Color.Lerp(color0, color1, __instance._flashValue);
                        }
                        if (MainPatch.isPlaying && !MainPatch.isPaused)
                        {
                            if (!Mat.name.Contains("window") &&
                                !Mat.name.Contains("glass") &&
                                !Mat.name.Contains("WaterPlaneBaseCorridor") &&
                                !Mat.name.Contains("WaterRunOnWall") &&
                                !Mat.name.Contains("WaterPlaneBaseRoomObs") &&
                                !Mat.name.Contains("x_BaseWaterFog_BaseRoom") &&
                                !Mat.name.Contains("x_BaseWaterFog_RoomCorridorConnector") &&
                                !Mat.name.Contains("Juke") &&
                                !Mat.name.Contains("water"))
                            {
                                /*if (!File.Exists(file))
                                 *      File.Create(file);
                                 * if (!File.ReadAllText(file).Contains(Mat.name))
                                 * {
                                 *      File.AppendAllText(file, "Name: " + string.Join(",", mat.name) + " \n");
                                 * }*/
                                mat.color = flashValue;
                                light.currentIntensity = Mathf.Clamp(__instance._flashValue, 0, 1);
                                light.ApplyCurrentIntensity();
                            }
                        }
                        if (MainPatch.isPaused && !MainPatch.isPlaying)
                        {
                            if (!Mat.name.Contains("window") &&
                                !Mat.name.Contains("glass") &&
                                !Mat.name.Contains("WaterPlaneBaseCorridor") &&
                                !Mat.name.Contains("WaterRunOnWall") &&
                                !Mat.name.Contains("WaterPlaneBaseRoomObs") &&
                                !Mat.name.Contains("x_BaseWaterFog_BaseRoom") &&
                                !Mat.name.Contains("x_BaseWaterFog_RoomCorridorConnector") &&
                                !Mat.name.Contains("Juke") &&
                                !Mat.name.Contains("water"))
                            {
                                Mat.color = Color.white;
                                light.currentIntensity = 1;
                                light.ApplyCurrentIntensity();
                            }
                        }
                        if (!MainPatch.isPlaying && !MainPatch.isPaused)
                        {
                            if (!Mat.name.Contains("window") &&
                                !Mat.name.Contains("glass") &&
                                !Mat.name.Contains("WaterPlaneBaseCorridor") &&
                                !Mat.name.Contains("WaterRunOnWall") &&
                                !Mat.name.Contains("WaterPlaneBaseRoomObs") &&
                                !Mat.name.Contains("x_BaseWaterFog_BaseRoom") &&
                                !Mat.name.Contains("x_BaseWaterFog_RoomCorridorConnector") &&
                                !Mat.name.Contains("Juke") &&
                                !Mat.name.Contains("water"))
                            {
                                Mat.color = Color.white;
                                light.currentIntensity = 1;
                                light.ApplyCurrentIntensity();
                            }
                        }
                    }
                }
            }
            else
            {
                if (!Mat.name.Contains("window") &&
                    !Mat.name.Contains("glass") &&
                    !Mat.name.Contains("WaterPlaneBaseCorridor") &&
                    !Mat.name.Contains("WaterRunOnWall") &&
                    !Mat.name.Contains("WaterPlaneBaseRoomObs") &&
                    !Mat.name.Contains("x_BaseWaterFog_BaseRoom") &&
                    !Mat.name.Contains("x_BaseWaterFog_RoomCorridorConnector") &&
                    !Mat.name.Contains("Juke") &&
                    !Mat.name.Contains("water") &&
                    !JukeboxConfig.PartyMode)

                {
                    Mat.color = Color.white;
                    light.currentIntensity = 1;
                    light.ApplyCurrentIntensity();
                }
            }
            return(false);
        }