Skip to content

Reads files from a DSL in order to generate C code and header files for some game project in C (Warning: shitty code)

License

Notifications You must be signed in to change notification settings

ReyAnthony/DQloneStatsDSL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DQloneStatsDSL

Reads files from a DSL in order to generate C code and header files for some game project in C (Warning: shitty code)

Uses ANTLR4 to generate the parser

usage : java -jar DQloneStatsDSL.jar DSLfile [destination]

DSL syntax :

FIGHTER {
   -- init is the initial status (level 1)
   init { HP 10 ATK 20 DEF 10 AGI 20 MAG 0} 
   -- Inside the parens we have the needed XP to get to this level
   2 (200) { HP 10 ATK 20 DEF 10 AGI 20 MAG 0}
   3 (300) { HP 10 ATK 20 DEF 10 AGI 20 MAG 0}
}

THIEF {
   init { HP 10 ATK 20 DEF 10 AGI 20 MAG 0} 
   2 (200) { HP 10 ATK 20 DEF 10 AGI 20 MAG 0}
   3 (300) { HP 10 ATK 20 DEF 10 AGI 20 MAG 0}
}

Generated code for stats_engine_codegen.c

//Code generated by DQloneStatsDSL on 2018-10-04T14:09:09.958
#include "stats_engine_codegen.h"
static void set_stats(stats_t* stats, uint_16 hp, uint_16 agi, uint_16 atk, uint_16 def, uint_16 mag);
static void set_stats(stats_t* stats, uint_16 hp, uint_16 agi, uint_16 atk, uint_16 def, uint_16 mag){
    stats->hp = hp;
    stats->agi = agi;
    stats->atk = atk;
    stats->def = def;
    stats->mag = mag;
}
uint_32 get_nb_points_for_level(class_t class, uint_8 level) {
    assert(level > 0);
    if (class == THIEF){
        if (level == 1) { return 0; }
        if (level == 2) { return 200; }
        if (level == 3) { return 300; }
    }
    if (class == FIGHTER){
        if (level == 1) { return 0; }
        if (level == 2) { return 200; }
        if (level == 3) { return 300; }
    }
    return -1;
}
void increase_stats(stats_t* stats) {
    if (stats->class == THIEF){
        if (stats->level == 1) { set_stats(stats,10,20,20,10,0); return; }
        if (stats->level == 2) { set_stats(stats,10,20,20,10,0); return; }
        if (stats->level == 3) { set_stats(stats,10,20,20,10,0); return; }
    }
    if (stats->class == FIGHTER){
        if (stats->level == 1) { set_stats(stats,10,20,20,10,0); return; }
        if (stats->level == 2) { set_stats(stats,10,20,20,10,0); return; }
        if (stats->level == 3) { set_stats(stats,10,20,20,10,0); return; }
    }
}

Generated code for stats_engine_codegen.h

//Code generated by DQloneStatsDSL on 2018-10-04T14:09:09.955
#ifndef STATS_ENGINE_CODEGEN_H
#define STATS_ENGINE_CODEGEN_H
#include "types.h"
#include "assert.h"
typedef enum {THIEF,FIGHTER} class_t;
typedef struct {
     class_t class;
     
     uint_16 hp;
     uint_16 agi;
     uint_16 atk;
     uint_16 def;
     uint_16 mag;
     
     uint_32 xp;   
     uint_8 level;
     
} stats_t;
uint_32 get_nb_points_for_level(class_t class, uint_8 level);
void increase_stats(stats_t* stats);
#endif

About

Reads files from a DSL in order to generate C code and header files for some game project in C (Warning: shitty code)

Resources

License

Stars

Watchers

Forks

Packages

No packages published