public void Update(GameTime gameTime) { if (SpawnArea.X < 0) { SpawnArea.X = 0; } else if (SpawnArea.X >= world.Width) { SpawnArea.X = world.Width - 1; } if (SpawnArea.Y < 0) { SpawnArea.Y = 0; } else if (SpawnArea.Y >= world.Height) { SpawnArea.Y = world.Height - 1; } if (SpawnArea.Right > world.Width) { SpawnArea.Width = world.Width - SpawnArea.X; } if (SpawnArea.Bottom > world.Height) { SpawnArea.Height = world.Height - SpawnArea.Y; } timeLeft.Subtract(gameTime.ElapsedGameTime); if (timeLeft.CompareTo(TimeSpan.Zero) <= 0) { foreach (var e in SpawnClones) { var clone = e.Clone(); var pos = new EntityPosition(); pos.X = Pseudo.Random.Next(SpawnArea.Left, SpawnArea.Right); pos.Y = Pseudo.Random.Next(SpawnArea.Top, SpawnArea.Bottom); clone.Position = pos; world.AddEntity(clone); } timeLeft = TimeSpan.FromSeconds(TimeInterval); } }
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; }