using System; using System.Collections.Generic; using System.Windows; using System.Windows.Media; using System.Windows.Markup; using System.IO; using System.Xml; namespace BabySmash { internal static class Utils { private static readonly Dictionary brushToString; private static readonly Random lRandom = new Random(); private static readonly FunCursor1 fun1 = new FunCursor1(); private static readonly FunCursor2 fun2 = new FunCursor2(); private static readonly Color[] someColors; private static readonly string[] sounds = { "giggle.wav", "babylaugh.wav", "babygigl2.wav", "ccgiggle.wav", "laughingmice.wav", "scooby2.wav", }; static Utils() { brushToString = new Dictionary { {Colors.Red, "Red"}, {Colors.Blue, "Blue"}, {Colors.Yellow, "Yellow"}, {Colors.Green, "Green"}, {Colors.Purple, "Purple"}, {Colors.Pink, "Pink"}, {Colors.Orange, "Orange"}, {Colors.Tan, "Tan"}, {Colors.Gray, "Gray"} }; someColors = new Color[brushToString.Count]; brushToString.Keys.CopyTo(someColors, 0); } public static Color GetRandomColor() { Color color = someColors[lRandom.Next(0, someColors.Length)]; return color; } public static Brush GetGradientBrush(Color color) { RadialGradientBrush myBrush = new RadialGradientBrush(); myBrush.GradientOrigin = new Point(0.75, 0.25); myBrush.GradientStops.Add(new GradientStop(color.LightenOrDarken(50), 0.0)); myBrush.GradientStops.Add(new GradientStop(color, 0.5)); myBrush.GradientStops.Add(new GradientStop(color.LightenOrDarken(-50), 1.0)); return myBrush; } public static Color LightenOrDarken(this Color src, sbyte degree) { Color ret = new Color(); ret.A = src.A; ret.R = (byte)Math.Max(Math.Min(src.R + degree, 255), 0); ret.G = (byte)Math.Max(Math.Min(src.G + degree, 255), 0); ret.B = (byte)Math.Max(Math.Min(src.B + degree, 255), 0); return ret; } public static string ColorToString(Color b) { return brushToString[b]; } public static string GetRandomSoundFile() { string retVal = sounds[lRandom.Next(0, sounds.Length)]; return ".Resources.Sounds." + retVal; } public static bool GetRandomBoolean() { if (lRandom.Next(0, 2) == 0) return false; return true; } public static int RandomBetweenTwoNumbers(int min, int max) { return lRandom.Next(min, max + 1); } internal static System.Windows.Controls.UserControl GetCursor() { switch (Properties.Settings.Default.CursorType) { case "Hand": return fun2; case "Arrow": return fun1; } return fun1; } } }