Skip to content

Coding Guidelines

Felix Queißner edited this page Jun 15, 2019 · 8 revisions
  • Jede Datei braucht sowohl Source(.c)- als auch Header-File(.h)
    • Der Header exponiert nur die externen Funktionen
  • Die C-Dateien werden am Ende der main.c inkludiert, Header nur dort, wo sie gebraucht werden
  • Header benötigen einen Include-Guard
  • #defines werden IN GROẞBUCHSTABEN geschrieben
  • Empfehlung: Funktionsnamen und Variablennamen in snake_case
  • KEINE relativen Pfade, funktionieren nicht mit WRS.
  • KEIN pan_create("bmap=..."), funktioniert nicht mit WRS.
  • alle Pfade müssen in der main.wdl definiert werden.
  • alles, was nicht in die WRS gepackt werden soll (z.B. alles was mit media_... oder Winapi genutzt wird) kommt in den Ordner "media". Und dort kommt auch nichts anderes rein
  • Module, die vom Framework geladen werden, benötigen folgende API:
    • void module_init(): Initialisiere das Modul
    • void module_open(): Modul wird hiermit gestartet (also auf "aktiv" geschaltet)
    • void module_update(): Wird pro Frame aufgerufen
    • bool module_is_done(): Wenn true zurückgegeben wird, wird das Modul beendet
    • void module_close(): Modul wird "entladen" und das Framework wechselt zu einem anderen Modul

Beispiel zum Loopen über Entities:

void rotary_update()
{
  ENTITY * ent;
  SUBSYSTEM_LOOP(ent, SUBSYSTEM_ROTARY)
  {
    ent->pan += time_step;
  }
}

Neue Entity anlegen und mit Subsystem registrieren

void rotary_make()
{
  ENTITY * ent = ent_create(…);
  framework_setup(ent, SUBSYSTEM_ROTARY); // registrieren
}

Entity löschen

void rotary_kill(ENTITY * ent)
{
  framework_remove(ent);
}
Clone this wiki locally