Пример #1
0
        public MainForm()
        {
            InitializeComponent();
            Text = ProductName + " " + ProductVersion;

            jazz2 = new Jazz2();
            jazz2.ProcessFound  += Jazz2_ProcessFound;
            jazz2.ProcessClosed += Jazz2_ProcessClosed;

            loopThread = new Thread(LoopProc);
            loopThread.Start();

            randomizerSettings = new RandomizerSettings();
            randomizerSettings.LevelSettings.Add(new LevelSettings()
            {
                LevelFilename = "carrot1.j2l", Bird = true, Jazz = true
            });
            randomizerSettings.LevelSettings.Add(new LevelSettings()
            {
                LevelFilename = "castle1n.j2l", Bird = true, Spaz = true
            });

            textBoxSeed.Text = new Random().Next().ToString("X8");
        }
        public LevelSettingsControl(RandomizerSettings randomizerSettings, LevelSettings levelSettings)
        {
            InitializeComponent();
            Dock = DockStyle.Fill;

            textBoxLevelFilename.DataBindings.Add("Text", levelSettings, "LevelFilename");
            checkBoxJazz.DataBindings.Add("Checked", levelSettings, "Jazz");
            checkBoxSpaz.DataBindings.Add("Checked", levelSettings, "Spaz");
            checkBoxLori.DataBindings.Add("Checked", levelSettings, "Lori");
            checkBoxFrog.DataBindings.Add("Checked", levelSettings, "Frog");
            checkBoxBird.DataBindings.Add("Checked", levelSettings, "Bird");
            checkBoxRandomzieColors.DataBindings.Add("Checked", levelSettings, "RandomizeColors");
            dataGridViewEventGroups.AutoGenerateColumns = false;
            dataGridViewEventGroups.DataSource          = new BindingList <EventGroup>(levelSettings.EventGroups);
            ColumnFromDifficulty.DataSource             = Enum.GetValues(typeof(Difficulty));
            ColumnToDifficulty.DataSource = Enum.GetValues(typeof(Difficulty));

            var eventTypes = EventInfo.EventNames
                             .Select((name, i) => new { Name = name, Id = i, Type = EventInfo.EventTypes[i] })
                             .Where(x => !string.IsNullOrEmpty(x.Type))
                             .GroupBy(x => x.Type)
                             .ToList();

            foreach (var eventGroup in eventTypes)
            {
                var eventInfos = eventGroup
                                 .ToList();

                var menuItemFrom = new ToolStripMenuItem(eventGroup.Key);
                menuItemFrom.DropDownItems.Add("-= ADD ALL =-").Click += delegate
                {
                    foreach (var eventInfo in eventInfos)
                    {
                        eventsFrom?.Add(new EventInfo()
                        {
                            EventId = eventInfo.Id
                        });
                    }
                };

                var menuItemTo = new ToolStripMenuItem(eventGroup.Key);
                menuItemTo.DropDownItems.Add("-= ADD ALL =-").Click += delegate
                {
                    foreach (var eventInfo in eventInfos)
                    {
                        eventsTo?.Add(new EventInfo()
                        {
                            EventId = eventInfo.Id
                        });
                    }
                };

                foreach (var eventInfo in eventInfos)
                {
                    menuItemFrom.DropDownItems.Add(eventInfo.Name).Click += delegate
                    {
                        eventsFrom?.Add(new EventInfo()
                        {
                            EventId = eventInfo.Id
                        });
                    };
                    menuItemTo.DropDownItems.Add(eventInfo.Name).Click += delegate
                    {
                        eventsTo?.Add(new EventInfo()
                        {
                            EventId = eventInfo.Id
                        });
                    };
                }

                toolStripDropDownButtonAddFromEvent.DropDownItems.Add(menuItemFrom);
                toolStripDropDownButtonAddToEvent.DropDownItems.Add(menuItemTo);
            }

            var existingEventGroups = randomizerSettings.LevelSettings
                                      .SelectMany(x => x.EventGroups)
                                      .Distinct();

            foreach (var eventGroup in existingEventGroups)
            {
                toolStripSplitButtonAddEventGroup.DropDownItems.Add(eventGroup.Name).Click += delegate
                {
                    eventGroups.Add(eventGroup);
                };
            }
        }