public virtual void GenerateCode(LDtkWorld ldtkJson, LdtkGeneratorContext ctx, ICodeOutput output) { List <CompilationUnitFragment> fragments = new List <CompilationUnitFragment>(); foreach (EnumDefinition ed in ldtkJson.Defs.Enums) { fragments.Add(GenerateEnum(ed, ctx)); } foreach (EntityDefinition ed in ldtkJson.Defs.Entities) { ClassCompilationUnit entity = GenerateEntity(ed, ctx); fragments.Add(entity); if (ctx.CodeCustomizer != null) { ctx.CodeCustomizer.CustomizeEntity(entity, ed, ctx); } } ClassCompilationUnit level = GenerateLevel(ldtkJson, ctx); fragments.Add(level); if (ctx.CodeCustomizer != null) { ctx.CodeCustomizer.CustomizeLevel(level, ldtkJson, ctx); } output.OutputCode(fragments, ctx); }
public virtual void CustomizeEntity(ClassCompilationUnit entity, EntityDefinition ed, LdtkGeneratorContext ctx) { entity.BaseClass = "ILDtkEntity"; entity.Fields.Add(new CompilationUnitField("Uid", "long")); entity.Fields.Add(new CompilationUnitField("Identifier", "string")); entity.Fields.Add(new CompilationUnitField("Size", "Vector2")); entity.Fields.Add(new CompilationUnitField("Position", "Vector2")); entity.Fields.Add(new CompilationUnitField("Pivot", "Vector2")); entity.Fields.Add(new CompilationUnitField("Tile", "Rectangle")); entity.Fields.Add(new CompilationUnitField("EditorVisualColor", "Color")); }
public virtual ClassCompilationUnit GenerateLevel(LDtkWorld ldtkJson, LdtkGeneratorContext ctx) { ClassCompilationUnit levelClass = new ClassCompilationUnit() { Name = ctx.LevelClassName }; foreach (FieldDefinition fd in ldtkJson.Defs.LevelFields) { levelClass.Fields.Add(ctx.TypeConverter.ToCompilationUnitField(fd, ctx)); } return(levelClass); }
public virtual ClassCompilationUnit GenerateEntity(EntityDefinition ed, LdtkGeneratorContext ctx) { ClassCompilationUnit classFragment = new ClassCompilationUnit() { Name = ed.Identifier }; foreach (FieldDefinition fd in ed.FieldDefs) { classFragment.Fields.Add(ctx.TypeConverter.ToCompilationUnitField(fd, ctx)); } return(classFragment); }
public virtual void CustomizeLevel(ClassCompilationUnit level, LDtkWorld ldtkJson, LdtkGeneratorContext ctx) { }