de client bestaat uit 3 modules

 -het eigenlijke programma (module 1)

 - de interface, bestaande uit
      a) een textconsole (module 2)
      b) het speelveld   (module 3)

 - de interconnecties tussen die 3 stukken moeten zoveel mogelijk
 beperkt worden, in ieder geval moet 1 miet meer dan een paar
 interfacefuncties van 2 en 3 gebruiken, 2 en 3 kunnen evt wel 1 aanroepen

implementatie:
 - het initialiseren van 2 en 3 is te afhankelijk van het gekozen systeem
 (opengl, 2d overhead map, etc.) om te standaardiseren,
  dus dat moet maar met #ifdefs

 - de console heeft de volgende functies :
  printf(color, fmt,...);  kleuren zijn per regel
  backspace();
  clear();
  render(....); argumenten hangen af van de implementatie. (#ifdef s)

 - het speelveld heeft de volgende functies

 -is_dirty(linked_list *dirty_list); waarin dirty_list een list is van
  dirty_info structs, met daarin een electron *, en from/to coordinaten met
  een tijd in (client)frames waarin het gebeurt moet zijn.

 -render(...);  /* tekent het plaatje */
 -advance_logic(int curframe);
 -init()
 -start(w,h);
 -stop();
 -shutdown();
 -decorate_map(); build the rendering map from the lattice

  -de display functie moet zelf interpoleren met tekenen over de opgegeven tijd
  -de coordinaten zijn in tiles.

--------------------------------------------------------------

PPE DISPLAYFUNCTIES

enige ppe-specifieke notities

ppe heeft in elke tile een serie 'bins' , je kan gemakkelijk een bin
leeggooien, maar losse objecten verwijderen is langzaam.

om deze reden wordt het level gesplitst in
statische objecten (kamers etc.) en dynamische objecten
de statische objecten worden 1 keer in de kaart gezet,
voor de dynamische worden 2 lysten bijgehouden.

een lijst met alle dynamische objecten voor het tekenen,
om te beginnen worden alle dynamische objecten elk tekenframe opnieuw
in de ppe kaart gezet , (en na het tekenen die bins weer leeggegooid)

en een lijst met actieve dynamische objecten, die elk logic-frame moeten
 worden bijgewerkt



