Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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"));
    }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
 public virtual void CustomizeLevel(ClassCompilationUnit level, LDtkWorld ldtkJson, LdtkGeneratorContext ctx)
 {
 }