public static Func <bool> GUI_Edit(SingleSlotBox container, FitnessWorld world) { var builder = new FieldBuilder(); builder.BuildSessionStart(container); Panel panel = new Panel(); panel.Initialize(); builder.AddDrawBoxAsField(panel, DrawBoxAlignment.GetFull()); Func <bool> isReadyFunc = World.GUI_Edit(panel, world); var minFood = builder.AddIntegerField("Minimum Food: "); var minCreatures = builder.AddIntegerField("Minimum Creatures: "); builder.BuildSessionEnd(); container.IsClosing += delegate(object sender) { world.MinimumFood = (int)minFood.Value; world.MinimumCreatures = (int)minCreatures.Value; }; return(delegate() { return isReadyFunc(); }); }
public static Func <bool> GUI_Edit(SingleSlotBox container, World world) { var builder = new FieldBuilder(); builder.BuildSessionStart(container); var width = builder.AddIntegerField("World Width: "); width.MinValue = 1; width.Value = world.Width; var height = builder.AddIntegerField("World Height: "); height.MinValue = 1; height.Value = world.Height; var worldHasEdges = builder.AddCheckBoxField("World Edges"); worldHasEdges.Checked = world.WorldHasEdges; var regionSize = builder.AddIntegerField("Region Size: "); regionSize.MinValue = 1; regionSize.Value = world.RegionSize; var gaussianMin = builder.AddIntegerField("Gassian Generator Min: "); gaussianMin.Value = 0; var gaussianMax = builder.AddIntegerField("Gassian Generator Max: "); gaussianMax.Value = 1000; container.IsClosing += delegate(object sender) { world.Width = (int)width.Value; world.Height = (int)height.Value; world.WorldHasEdges = worldHasEdges.Checked; world.RegionSize = (int)regionSize.Value; world.Random = new UniformRandomGenerator(); world.GaussianRandom = new NormalRandomGenerator((int)gaussianMin.Value, (int)gaussianMax.Value, world.Random); foreach (var e in world.EntityList) { e.Position = new EntityPosition(Math.Min(e.Position.X, world.Width - 1), Math.Min(e.Position.Y, world.Height - 1)); } world.ReloadRegions(); }; builder.BuildSessionEnd(); return(delegate() { return true; }); }
public override void AddedToContainer() { base.AddedToContainer(); CloseButtonOn = false; var builder = new FieldBuilder(); builder.BuildSessionStart(this); var valueField = builder.AddIntegerField("Value: "); valueField.Value = Result; builder.AddVerticalMargin(5); builder.AddResizableButtonField("OK", delegate(object sender) { Result = (byte)valueField.Value; Close(); }, FieldBuilder.ResizableButtonOrientation.Left); builder.BuildSessionEnd(); CanResizeFormVertically = false; X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); }
public static Func <bool> GUI_Edit(SingleSlotBox container, FoodWorld world) { var builder = new FieldBuilder(); builder.BuildSessionStart(container); Panel panel = new Panel(); panel.Initialize(); builder.AddDrawBoxAsField(panel, DrawBoxAlignment.GetFull()); Func <bool> isReadyFunc = World.GUI_Edit(panel, world); var minFood = builder.AddIntegerField("Minimum Food: "); minFood.Value = world.MinimumFood; var foodSpawnRate = builder.AddIntegerField("Food Spawn-rate: "); foodSpawnRate.Value = world.FoodSpawnRate; builder.AddResizableButtonField("Edit Food", delegate(object sender) { EditEntityForm.ShowDialogue(container.Parent, world.FoodToClone); }, FieldBuilder.ResizableButtonOrientation.FillWidth); container.IsClosing += delegate(object sender) { world.MinimumFood = (int)minFood.Value; world.FoodSpawnRate = (int)foodSpawnRate.Value; }; builder.BuildSessionEnd(); return(delegate() { return isReadyFunc(); }); }
public override void AddedToContainer() { base.AddedToContainer(); CloseButtonOn = false; var builder = new FieldBuilder(); builder.BuildSessionStart(this); var eye = builder.AddIntegerField("Eye Neurons: "); var input = builder.AddIntegerField("Input Neurons: "); var output = builder.AddIntegerField("Output Neurons: "); var hidden = builder.AddIntegerField("Hidden Neurons: "); builder.AddVerticalMargin(5); builder.AddResizableButtonField("OK", delegate(object sender) { chromosome.CreateRandom((int)eye.Value, (int)input.Value, (int)output.Value, (int)hidden.Value); Close(); }, FieldBuilder.ResizableButtonOrientation.Right); builder.MoveUpOneField(); builder.AddResizableButtonField("Abort", delegate(object sender) { Close(); }, FieldBuilder.ResizableButtonOrientation.Left); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); CanResizeFormVertically = false; }
public override void AddedToContainer() { base.AddedToContainer(); CloseButtonOn = false; var builder = new FieldBuilder(); builder.BuildSessionStart(this); targetIntegerField = builder.AddIntegerField("Target: "); targetIntegerField.Value = connection.Target; isOutputConnectionCheckBox = builder.AddCheckBoxField("Is Output-Connection: "); isOutputConnectionCheckBox.Checked = connection.IsOutputConnection; isMutableCheckBox = builder.AddCheckBoxField("Connection Mutability: "); isMutableCheckBox.Checked = connection.IsMutable; builder.AddLabelField("Weight:"); weightMin = builder.AddDoubleField("Min: "); weightMax = builder.AddDoubleField("Max: "); weightVal = builder.AddDoubleField("Value: "); weightMin.Value = connection.Weight.Min; weightMax.Value = connection.Weight.Max; weightVal.Value = connection.Weight.Value; builder.AddResizableButtonField("OK", delegate(object sender) { Close(); }, FieldBuilder.ResizableButtonOrientation.Left); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); }
public override void AddedToContainer() { base.AddedToContainer(); var builder = new FieldBuilder(); builder.BuildSessionStart(this); var allEntities = new List <IEntity>(); allEntities.AddRange(EditorData.EntityTemplates.Select(e => e.Entity)); allEntities.AddRange(EditorData.CreatureTemplates.Select(e => e.Creature)); var entityTypesComboBox = builder.AddComboBoxField("Entity-Templates: "); entityTypesComboBox.Items.AddRange(EditorData.EntityTemplates.Select(e => e.TemplateName)); entityTypesComboBox.Items.AddRange(EditorData.CreatureTemplates.Select(e => e.TemplateName)); var amountField = builder.AddIntegerField("Amount: "); var okButton = builder.AddResizableButtonField("OK", delegate(object sender) { if (entityTypesComboBox.Index == -1) { return; } spawnPoint.SpawnClones.Add(allEntities[entityTypesComboBox.Index]); Close(); }, FieldBuilder.ResizableButtonOrientation.Right); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); CanResizeFormVertically = false; }
public override void AddedToContainer() { base.AddedToContainer(); var builder = new FieldBuilder(); builder.BuildSessionStart(this); var isFirstGeneration = builder.AddCheckBoxField("IsFirstGeneration: "); isFirstGeneration.Checked = genome.IsFirstGeneration; isFirstGeneration.CanChangeValue = false; var parent1 = builder.AddIntegerField("Parent1: "); parent1.Value = genome.Parent1; parent1.CanChangeValue = false; var parent2 = builder.AddIntegerField("Parent2: "); parent2.Value = genome.Parent2; parent2.CanChangeValue = false; builder.AddResizableButtonField("Edit Body-genes", delegate(object sender) { EditDoubleGeneListForm.ShowDialogue(Parent, genome.BodyGenes); }, FieldBuilder.ResizableButtonOrientation.FillWidth); builder.AddResizableButtonField("Edit Mutation-genes", delegate(object sender) { EditDoubleGeneListForm.ShowDialogue(Parent, genome.MutationGenes); }, FieldBuilder.ResizableButtonOrientation.FillWidth); var crossoverTypes = Globals.GetAllTypesDeriving(typeof(CrossoverFunction), Assembly.GetExecutingAssembly()); var crossoverNames = new List <string>(crossoverTypes.Select(s => s.Name)); var crossoverComboBox = builder.AddComboBoxField("Crossover Function: ", crossoverNames); if (genome.CrossoverFunction != null) { var crossoverType = genome.CrossoverFunction.GetType(); foreach (var type in crossoverTypes) { if (type.IsEquivalentTo(crossoverType)) { crossoverComboBox.Index = crossoverTypes.IndexOf(type); } } } crossoverComboBox.SelectedItemChanged += delegate(object sender, int newItemIndex, int oldItemIndex) { genome.CrossoverFunction = (CrossoverFunction)Activator.CreateInstance(crossoverTypes[newItemIndex]); }; var globalSigmoidEditButton = builder.AddResizableButtonField("Edit Crossover Function", delegate(object sender) { if (genome.CrossoverFunction == null) { return; } var crossoverFunc = genome.CrossoverFunction; crossoverTypes[crossoverComboBox.Index].InvokeMember("GUI_Edit", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, new object[] { Parent, crossoverFunc }); }); builder.BuildSessionEnd(); }
public override void AddedToContainer() { base.AddedToContainer(); var builder = new FieldBuilder(); builder.BuildSessionStart(this); var entityTemplatesComboBox = builder.AddComboBoxField("Templates: "); entityTemplatesComboBox.Items.AddRange(EditorData.EntityTemplates.Select(s => s.TemplateName)); entityTemplatesComboBox.SelectedItemChanged += delegate(object sender, int newItemIndex, int oldItemIndex) { if (entityTemplatesComboBox.Index == -1) { return; } string name = entityTemplatesComboBox.Items[entityTemplatesComboBox.Index]; foreach (var c in EditorData.EntityTemplates) { if (c.TemplateName == name) { entity = c.Entity.Clone(); break; } } }; entityTemplatesComboBox.Index = 0; var editButton = builder.AddResizableButtonField("Edit Entity", delegate(object sender) { if (entity != null) { EditEntityForm.ShowDialogue(Parent, entity); } }); var addByClicksCheckBox = builder.AddCheckBoxField("Add by clicks: "); var amountField = builder.AddIntegerField("Amount to add: "); amountField.MinValue = 1; builder.AddResizableButtonField("OK", delegate(object sender) { Editor.GetEntityFunctionDelegate getEntityFunc = delegate() { var clone = (IEntity)entity.Clone(); return(clone); }; if (!addByClicksCheckBox.Checked) { for (int i = 0; i < amountField.Value; i++) { var clone = getEntityFunc(); world.AddEntity(clone); clone.Position = new EntityPosition(Globals.Random.Next(world.Width), Globals.Random.Next(world.Height)); } } else { Globals.Editor.Mode = Editor.Modes.AddEntity; Globals.Editor.Set_GetEntityFunction(getEntityFunc); } Close(); }); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); CanResizeFormVertically = false; }
public override void AddedToContainer() { base.AddedToContainer(); var builder = new FieldBuilder(); builder.BuildSessionStart(this); var genomeTemplatesComboBox = builder.AddComboBoxField("Genome: "); genomeTemplatesComboBox.Items.AddRange(EditorData.GenomeTemplates.Select(s => s.TemplateName)); genomeTemplatesComboBox.Index = 0; var annTemplatesComboBox = builder.AddComboBoxField("ANN: "); annTemplatesComboBox.Items.AddRange(EditorData.ANNTemplates.Select(s => s.TemplateName)); annTemplatesComboBox.Index = 0; var creatureTemplatesComboBox = builder.AddComboBoxField("Creature: "); creatureTemplatesComboBox.Items.AddRange(EditorData.CreatureTemplates.Select(s => s.TemplateName)); creatureTemplatesComboBox.Index = 0; var mutateCheckBox = builder.AddCheckBoxField("Mutate the genome: "); var amountField = builder.AddIntegerField("Amount to add: "); amountField.MinValue = 1; builder.AddResizableButtonField("OK", delegate(object sender) { string name = genomeTemplatesComboBox.Items[genomeTemplatesComboBox.Index]; Genome genome = null; foreach (var g in EditorData.GenomeTemplates) { if (g.TemplateName == name) { genome = g.Genome; } } name = annTemplatesComboBox.Items[annTemplatesComboBox.Index]; INeuralNetChromosome ann = null; foreach (var a in EditorData.ANNTemplates) { if (a.TemplateName == name) { ann = a.ANN; } } name = creatureTemplatesComboBox.Items[creatureTemplatesComboBox.Index]; ICreature creature = null; foreach (var c in EditorData.CreatureTemplates) { if (c.TemplateName == name) { creature = c.Creature; } } for (int i = 0; i < amountField.Value; i++) { var clone = (ICreature)creature.Clone(); var cloneGenome = genome.Clone(); cloneGenome.SetNetChromosome(ann.Clone()); if (mutateCheckBox.Checked) { cloneGenome.Mutate(); } clone.ImprintGenome(cloneGenome); world.AddEntity(clone); clone.Position = new EntityPosition(Globals.Random.Next(world.Width), Globals.Random.Next(world.Height)); } }); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); CanResizeFormVertically = false; }
public override void AddedToContainer() { base.AddedToContainer(); var builder = new FieldBuilder(); builder.BuildSessionStart(this); var nameField = builder.AddTextField("Name: "); nameField.Text = spawnPoint.Name; var posX = builder.AddDoubleField("Position X: "); posX.Value = spawnPoint.SpawnArea.X; var posY = builder.AddDoubleField("Position Y: "); posY.Value = spawnPoint.SpawnArea.Y; var width = builder.AddIntegerField("Width: "); width.Value = spawnPoint.SpawnArea.Width; var height = builder.AddIntegerField("Height: "); height.Value = spawnPoint.SpawnArea.Height; var timeInterval = builder.AddDoubleField("Time Interval: "); timeInterval.Value = spawnPoint.TimeInterval; reloadValues = delegate() { nameField.Text = spawnPoint.Name; posX.Value = spawnPoint.SpawnArea.X; posY.Value = spawnPoint.SpawnArea.Y; width.Value = spawnPoint.SpawnArea.Width; height.Value = spawnPoint.SpawnArea.Height; timeInterval.Value = spawnPoint.TimeInterval; }; reloadValues(); Action setValues = delegate() { spawnPoint.Name = nameField.Text; spawnPoint.SpawnArea.X = (int)posX.Value; spawnPoint.SpawnArea.Y = (int)posY.Value; spawnPoint.SpawnArea.Width = (int)width.Value; spawnPoint.SpawnArea.Height = (int)height.Value; spawnPoint.SetTimeInterval(timeInterval.Value); }; builder.AddVerticalMargin(5); builder.AddResizableButtonField("Set Spawn-Area with mouse", delegate(object sender) { setValues(); Parent.DialoguesAreHidden = true; Globals.Editor.Mode = Editor.Modes.SetPeremiter; Globals.Editor.Set_SendPeremiterFunction(sendPeremiter); }, FieldBuilder.ResizableButtonOrientation.FillWidth); builder.AlignTop = true; builder.AlignBottom = true; spawnEntitiesList = builder.AddColumnListBox("Spawn-entities", 300, 2); spawnEntitiesList.SetIntOrStringSort(false, true); spawnEntitiesList.SetColumnName(0, "Entity-Type"); spawnEntitiesList.SetColumnName(1, "Amount"); builder.AlignTop = false; builder.AlignBottom = true; builder.AddResizableButtonField("Add Entity", delegate(object sender) { AddSpawnEntityForm.ShowDialogue(Parent, spawnPoint, delegate(object _sender) { reloadList(); }); }, FieldBuilder.ResizableButtonOrientation.Right); builder.AddResizableButtonField("Remove Entity", delegate(object sender) { if (spawnEntitiesList.SelectedRowIndex == -1) { return; } spawnPoint.SpawnClones.Remove((IEntity)spawnEntitiesList.Values[spawnEntitiesList.SelectedRowIndex].ExtraValues[0]); reloadValues(); }, FieldBuilder.ResizableButtonOrientation.Right); builder.AddResizableButtonField("OK", delegate(object sender) { setValues(); Close(); }, FieldBuilder.ResizableButtonOrientation.Right); builder.BuildSessionEnd(); X = (Parent.Width / 2) - (Width / 2); Y = (Parent.Height / 2) - (Height / 2); CanResizeFormVertically = false; }