using AibisDream; public interface IEyeStateEffect { void InitializeEffect(EyeTarget target, EyeSystem eyeSystem); void CleanupEffect(EyeTarget target); void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem); void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem); } public class CanImagineColorEffect : IEyeStateEffect { public void InitializeEffect(EyeTarget target, EyeSystem eyeSystem) { target.SetToNoWrongColor(); target.SetToMaxColorReveal(); target.SetToMinBlur(); eyeSystem?.FocusOnTarget(target, 0f); } public void CleanupEffect(EyeTarget target) { target.SetToMinColorReveal(); target.SetToMaxBlur(); } public void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.ColorIn(eyeSystem.GetEffectTransitionDuration()); } public void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.FadeOut(eyeSystem.GetEffectTransitionDuration()); } } public class CannotImagineColorEffect : IEyeStateEffect { public void InitializeEffect(EyeTarget target, EyeSystem eyeSystem) { target.SetToMinBlur(); target.SetToMinColorReveal(); target.SetToNoWrongColor(); eyeSystem?.FocusOnTarget(target, 0f); } public void CleanupEffect(EyeTarget target) { target.SetToMaxBlur(); } public void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.BlurOut(eyeSystem.GetEffectTransitionDuration()); } public void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.BlurIn(eyeSystem.GetEffectTransitionDuration()); } } public class EyeDisorderEffect : IEyeStateEffect { public void InitializeEffect(EyeTarget target, EyeSystem eyeSystem) { target.SetToMinColorReveal(); eyeSystem?.FocusOnTarget(target, 0f); target.SetToWrongColor(); target.SetToMinBlur(); } public void CleanupEffect(EyeTarget target) { target.SetToNoWrongColor(); } public void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.WrongColorIn(eyeSystem.GetEffectTransitionDuration()); } public void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.WrongColorOut(eyeSystem.GetEffectTransitionDuration()); } } public class CanSeeColorEffect : IEyeStateEffect { public void InitializeEffect(EyeTarget target, EyeSystem eyeSystem) { target.SetToNoWrongColor(); target.SetToMaxColorReveal(); eyeSystem?.FocusOnTarget(target, 0f); target.SetToMinBlur(); } public void CleanupEffect(EyeTarget target) { target.SetToMaxBlur(); } public void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.BlurOut(eyeSystem.GetEffectTransitionDuration()); } public void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem) { target.BlurIn(eyeSystem.GetEffectTransitionDuration()); } } public class HaveChip : IEyeStateEffect { public void InitializeEffect(EyeTarget target, EyeSystem eyeSystem) { } public void CleanupEffect(EyeTarget target) { } public void ApplyFocusedEffect(EyeTarget target, EyeSystem eyeSystem) { } public void ApplyUnfocusedEffect(EyeTarget target, EyeSystem eyeSystem) { } }