コード例 #1
0
ファイル: ConfigForm.cs プロジェクト: HerbFargus/bomberstuff
        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;
        }
コード例 #2
0
ファイル: ConfigForm.cs プロジェクト: HerbFargus/bomberstuff
        /// <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;
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: HerbFargus/bomberstuff
        /// <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);
            }
        }