private void cbPlayer_SelectedIndexChanged(object sender, EventArgs e) { int i = cbPlayer.SelectedIndex; ColorRemapInfo info = PlayerRemapInfo[i]; checkHue.Checked = info.SetHue; if (info.SetHue) { trackHue.Value = info.NewHue; } else { trackHue.Value = 135; } checkSaturation.Checked = info.SetSaturation; if (info.SetSaturation) { trackSaturation.Value = info.NewSaturation; } else { trackSaturation.Value = 0; } trackLightness.Value = info.DiffLightness; }
/// <summary> /// /// </summary> /// <param name="color"></param> private void PreviewColor(ColorRemapInfo color) { AnimationFrame frame = ColorRemapper.Remap(OrigFrame, color); Bitmap back; using (Bitmap bmp = new Bitmap(frame.BitmapBuilder.GetStream())) { back = new Bitmap(bmp.Width * 2, bmp.Height * 2); using (Graphics g = Graphics.FromImage(back)) { g.DrawImage(bmp, new Rectangle(0, 0, back.Width, back.Height), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel); } } picPreviewColor.Image = back; }
/// <summary> /// Program entry. Handles command line arguments and loads /// plugins accordingly /// </summary> /// <param name="args">Program arguments</param> private static void Main(string /*^!^*/[] /*^!^*/ args) { System.Version ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; System.Console.WriteLine("This is Bomber Stuff {0}.{1}.{2} Build {3}", ver.Major, ver.Minor, ver.Build, ver.Revision); //System.Console.WriteLine("Copyright (c) 2010 Thomas Faber"); //System.Console.WriteLine("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>"); //System.Console.WriteLine("This is free software: you are free to change and redistribute it."); //System.Console.WriteLine("There is NO WARRANTY, to the extent permitted by law."); System.Console.WriteLine(); if (args.Length > 0) { if (args[0] == "-i") { System.Console.WriteLine("Running in integrity test mode"); // prepare integrity testing System.Diagnostics.Debug.Listeners.Clear(); System.Diagnostics.Debug.Listeners.Add(new ConsoleTraceListener()); System.Diagnostics.Trace.Assert(false, "Assert test SUCCEEDED"); // integrity testing System.Diagnostics.Trace.Assert(!new Drawing.RectangleF(0, 0, 1, 1).IntersectsWith(new Drawing.RectangleF(1, 0, 1, 1)), "test1"); System.Diagnostics.Trace.Assert(new Drawing.RectangleF(0, 0, 1, 1).IntersectsWith(new Drawing.RectangleF(511.0f / 512.0f, 0, 1, 1)), "test2"); System.Diagnostics.Trace.Assert(new Drawing.RectangleF(0, 0, 1, 1).IntersectsWith(new Drawing.RectangleF(.5f, .5f, 0, 0)), "test3"); System.Diagnostics.Trace.Assert(new Drawing.RectangleF(.5f, .5f, 0, 0).IntersectsWith(new Drawing.RectangleF(0, 0, 1, 1)), "test4"); System.Diagnostics.Trace.Assert(!new Drawing.RectangleF(1, 0, 1, 1).IntersectsWith(new Drawing.RectangleF(.5f, .5f, .5f, 0)), "test5"); System.Diagnostics.Trace.Assert(new Drawing.RectangleF(.99f, 0, 1, 1).IntersectsWith(new Drawing.RectangleF(.5f, .5f, .5f, 0)), "test6"); System.Diagnostics.Trace.Assert(!new Drawing.RectangleF(.5f, .5f, .5f, 0).IntersectsWith(new Drawing.RectangleF(.5f, .5f, 0, 0)), "test7"); System.Diagnostics.Trace.Assert(new Drawing.RectangleF(.5f, .5f, .5f, 0).IntersectsWith(new Drawing.RectangleF(.4f, .4f, .2f, .2f)), "test8"); // end integrity testing if (ConsoleTraceListener.fails == 1) { System.Console.WriteLine("All tests succeeded"); } else { System.Console.WriteLine("{0} test(s) failed", ConsoleTraceListener.fails - 1); } return; } } // load settings Settings settings; settings = BomberStuff.Files.SettingsReader.ReadFile("settings.xml"); if (settings.Get <string>("GotSettings") != "true") { return; } if (settings.Get <string>(Settings.Types.ABDirectory) == null) { settings.Set <string>(Settings.Types.ABDirectory, @"C:\Temp\atomic_bomberman\bomber"); } if (settings.Get <ColorRemapInfo[]>(Settings.Types.PlayerColor) == null) { ColorRemapInfo[] remapInfo = new ColorRemapInfo[10]; for (int i = 0; i < remapInfo.Length; ++i) { remapInfo[i] = PlayerColor(i); } settings.Set <ColorRemapInfo[]>(Settings.Types.PlayerColor, remapInfo); } if (settings.Get <string>(Settings.Types.UserInterface) == null) { settings.Set <string>(Settings.Types.UserInterface, "SlimDXInterface"); } if (settings.Get <object>(Settings.Types.Tileset) == null) { settings.Set <int>(Settings.Types.Tileset, -1); } if (settings.Get <object>(Settings.Types.PlayerCount) == null) { settings.Set <int>(Settings.Types.PlayerCount, 1); } if (settings.Get <string>(Settings.Types.Scheme) == null) { settings.Set <string>(Settings.Types.Scheme, "BASIC"); } System.Console.WriteLine("Settings found:"); foreach (KeyValuePair <string, object> setting in settings) { System.Console.WriteLine("{0}: {1}", setting.Key, setting.Value); } System.Console.WriteLine(); string uiName = settings.Get <string>(Settings.Types.UserInterface); try { Assembly assembly = Assembly.LoadFrom(uiName + ".dll"); object uiObject = assembly.CreateInstance("BomberStuff." + uiName + "." + uiName); IUserInterface ui = uiObject as IUserInterface; if (uiObject == null) { throw new MissingMethodException(); } // start a new game Game = new Game.Game(settings); ui.LoadSprites += Game.LoadSprites; ui.Render += Game.Render; ui.Idle += Game.Idle; PlayerControls[] playerControls = new PlayerControls[settings.Get <int>(Settings.Types.PlayerCount)]; IInputMethod im = uiObject as IInputMethod; Dictionary <string, Control> imControls = im.GetControls(); for (int i = 0; i < settings.Get <int>(Settings.Types.PlayerCount); ++i) { List <KeyValuePair <PlayerControls.Types, Control> > controls = new List <KeyValuePair <PlayerControls.Types, Control> >(); string key = settings.Get <string>("Player" + i + ".Up"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Up, imControls[key])); } key = settings.Get <string>("Player" + i + ".Down"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Down, imControls[key])); } key = settings.Get <string>("Player" + i + ".Left"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Left, imControls[key])); } key = settings.Get <string>("Player" + i + ".Right"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Right, imControls[key])); } key = settings.Get <string>("Player" + i + ".Action1"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Action1, imControls[key])); } key = settings.Get <string>("Player" + i + ".Action2"); if (key != null && imControls.ContainsKey(key)) { controls.Add(new KeyValuePair <PlayerControls.Types, Control>(PlayerControls.Types.Action2, imControls[key])); } playerControls[i] = new PlayerControls(controls); foreach (KeyValuePair <PlayerControls.Types, Control> control in controls) { im.RegisterControl(control.Value); } } im.RegisterControl(imControls["Escape"]); imControls["Escape"].Pressed += (sender, e) => ui.Terminate(); Game.Participants.Add(new LocalParticipant(playerControls)); nParticipantsNegotiating = 1; playersRequested = new int[nParticipantsNegotiating]; foreach (Participant p in Game.Participants) { p.Negotiate += Participant_Negotiate; p.StartNegotiation(); } while (nParticipantsNegotiating != 0) { ; } Game.StartRound(playerCount); int iFirstPlayer = 0; for (int i = 0; i < Game.Participants.Count; ++i) { Player[] players = new Player[playersRequested[i]]; Array.Copy(Game.Players, iFirstPlayer, players, 0, playersRequested[i]); iFirstPlayer += playersRequested[i]; System.Console.WriteLine(Game.Participants[i] + " starting round controlling " + players.Length + " players"); Game.Participants[i].StartRound(players); } // start up the game UI ui.Initialize(settings); // make settings file backup. This one apparently works System.IO.File.Copy("settings.xml", "settings.lastgood.xml", true); ui.MainLoop(); ui.Terminate(); } catch (FileNotFoundException /*^!^*/ e) { ErrorHandling.FatalError(e, @"The interface module ""{0}"" or one of its" + @" dependencies could not be found:", uiName); } /* This is not in CF. Does it throw an alternative error? TRYTRY * catch (FileLoadException e) * { * ErrorHandling.FatalError(e, @"The interface module ""{0}"" or one of its" + @" dependencies could not be loaded:\n{1}", + uiName); + }*/ catch (BadImageFormatException /*^!^*/ e) { ErrorHandling.FatalError(e, @"The interface module ""{0}"" or one of its" + @" dependencies could has an invalid format:", uiName); } catch (MissingMethodException /*^!^*/ e) { ErrorHandling.FatalError(e, @"The module ""{0}"" is not a valid BomberStuff" + @" interface module:", uiName); } catch (Exception /*^!^*/ e) { ErrorHandling.UnexpectedError(e, @"while trying to load the interface module {0}:", uiName); } }