var OBJECTS = new Object();

function addobj(name,ref){
  ref.name=name;
  // TODO disponibilité du nom à vérifier (libre, ou à libérer)
  OBJECTS[name]=ref;
}

function removeobj(ref){
  if (typeof(ref)!="object") return;
  OBJECTS[ref.name]=void 0;
}


var DIRKEYS=[0,2,1,3];
var DIRS=[{dx:-1,dy:0},{dx:1,dy:0},{dx:0,dy:-1},{dx:0,dy:1}];

function key_event_manager(e,way){
  // il y a de l'action: annuler le mode auto et reset compteur
  if (auto == 'on'){
    sprite_ctrl.key_action(0,0);
    sprite_ctrl.key_action(1,0);
    sprite_ctrl.key_action(2,0);
    sprite_ctrl.key_action(3,0);            
    auto="off"
  }
  inactsec=0;
  
  // adapter directions pavé numérique même en mode numérique
  if (e==100) e=37;
  if (e==104) e=38;
  if (e==102) e=39;
  if (e==98) e=40;
  
  // si on est en train de changer de carte laisser tomber
  if (typeof(jumping)!="undefined") return;
  if (e>=KEY_LEFT && e<=KEY_DOWN){
    var d=DIRKEYS[e-KEY_LEFT];
    if (typeof(sprite_ctrl)=="undefined") return;
    sprite_ctrl.key_action(d,way);
  }
}

// z-index de départ pour la map (dans le div main_frame)
var zbase=32;
// espacement de z-index entre chaque plan successif (épaisseur)
var zdepth=8;
// z-index à partir duquel on considère qu'on affiche au dessus des éléments de carte
var ztop=196;

function grid_layout(x,y,scr){
  scr.x=wtile*x;
  scr.y=htile*y;
  scr.z=zbase+zdepth*y;
}
