eolLevelLayer *eol_level_build_layer_from_key(eolKeychain *key,eolLevel *level)
{
  eolLevelLayer *layer = NULL;
  eolKeychain *bkey = NULL;
  if (!key)return NULL;
  layer = eol_level_layer_new();
  if (!layer)return NULL;
  if (!level)return NULL;
  
  eol_keychain_get_hash_value_as_line(layer->idName,key,"idName");
  eol_keychain_get_hash_value_as_orientation(&layer->ori,key,"ori");
  eol_keychain_get_hash_value_as_rectfloat(&layer->bounds,key,"bounds");
  eol_keychain_get_hash_value_as_bool(&layer->usesClipMesh,key,"usesClipMesh");
  eol_keychain_get_hash_value_as_bool(&layer->usesTileMap,key,"usesTileMap");

  layer->keys = eol_keychain_clone(eol_keychain_get_hash_value(key,"keys"));
  
  bkey = eol_keychain_get_hash_value(key,"backgrounds");
  if (bkey)
  {
    eol_level_build_backgrounds_from_keychain(layer,bkey);
  }
  bkey = eol_keychain_get_hash_value(key,"tileMap");
  if (bkey)
  {
    layer->tileMap = 
      eol_tile_map_build_from_definition(bkey,level->tileSet);
  }
    /*
  GList       * spawnList;
*/
  return layer;
}
eolBool eol_config_get_orientation_by_tag(
  eolOrientation  * output,
  eolConfig       * conf,
  eolLine           tag
)
{
  g_return_val_if_fail(conf, eolFalse);
  g_return_val_if_fail(output, eolFalse);
  return eol_keychain_get_hash_value_as_orientation(output, conf->_node, tag);
}
Beispiel #3
0
eolSpawn *eol_spawn_create_from_keychain(eolKeychain *conf)
{
  eolSpawn *spawn;
  if (!conf)return NULL;
  spawn = eol_spawn_new();
  if (!spawn)return NULL;
  spawn->keys = eol_keychain_get_hash_value(conf,"keys");
  eol_keychain_get_hash_value_as_orientation(&spawn->ori, conf, "ori");
  eol_keychain_get_hash_value_as_uint(&spawn->id, conf, "id");
  eol_keychain_get_hash_value_as_line(spawn->type, conf, "type");
  return spawn;
}
void eol_level_build_backgrounds_from_keychain(eolLevelLayer *layer,eolKeychain *keychain)
{
  eolBackground backTemp, *newBack;
  int i,count;
  eolKeychain *key;
  if ((!layer)||(!keychain))return;
  count = eol_keychain_get_list_count(keychain);
  for (i = 0;i < count;i++)
  {
    key = eol_keychain_get_list_nth(keychain, i);
    if (!key)continue;
    if ((eol_keychain_get_hash_value_as_orientation(&backTemp.ori,key,"ori")) &&
        (eol_keychain_get_hash_value_as_line(backTemp.modelFile,key,"modelFile")) &&
        (eol_keychain_get_hash_value_as_float(&backTemp.followCam,key,"followCam")))
    {
      newBack = eol_level_add_background_to_layer(layer);
      eol_orientation_copy(&newBack->ori,backTemp.ori);
      eol_line_cpy(newBack->modelFile,backTemp.modelFile);
      newBack->followCam = backTemp.followCam;
      eol_keychain_get_hash_value_as_bool(&newBack->useAsClip,key,"useAsClip");
      eol_keychain_get_hash_value_as_bool(&newBack->hidden,key,"hidden");
    }
  }
}