using System; using System.Collections.Generic; using System.Reflection.Emit; using System.Text; namespace Sunweaver.DataPrototypes { public class Chromosome { public List Codules; public DNA Parent; public Chromosome(List codules, DNA parent) : this(parent) { Codules = codules; } public Chromosome(DNA parent) { Parent = parent; if (Codules == null) { Codules = new List(); Codules.Add(new Codule()); } } public void Excecute(Memory baseMemory) { VirtualMachine VM = new VirtualMachine(baseMemory); Codules[0].Execute(VM); } internal void Compile(ILGenerator il, Locals locals) { il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Newobj, typeof(VirtualMachine).GetConstructor(new Type[] { typeof(Memory) })); il.Emit(OpCodes.Stloc, locals[typeof(VirtualMachine)]); Codules[0].Compile(il, locals); } } }