Esempio n. 1
0
  // Загрузка локализации из файла
  public boolean LoadFromInternalXML(String locale, String internalPath) {
    strings.clear();
    boolean result = false;
    XmlReader reader = new XmlReader();
    try {
      XmlReader.Element root = reader.parse(Gdx.files.internal(internalPath));
      if (root != null) {
        // Проверка на правильность формата файла локализации
        if (root.getName().equalsIgnoreCase("localization")) {
          int load_count = 0;
          // Перебор всех дочерних элементов
          for (int i = 0; i < root.getChildCount(); i++) {
            XmlReader.Element item = root.getChild(i);
            if (item != null) {
              if (item.getName().equalsIgnoreCase("string")) {
                String key = item.getAttribute("key").trim();
                String default_string;
                String value;
                if (key.length() > 0) {
                  Array<XmlReader.Element> find = item.getChildrenByName("default");
                  if (find.size > 0) default_string = find.get(0).getText();
                  else default_string = item.getAttribute("default", "");

                  find = item.getChildrenByName(locale);
                  if (find.size > 0) value = find.get(0).getText();
                  else value = default_string;

                  find.clear();
                  if (value.length() > 0) {
                    strings.put(key, value);

                    if (default_string.length() > 0) translates.put(default_string, value);

                    load_count++;
                  } else {
                    if (default_string.length() > 0) {
                      strings.put(key, default_string);
                      load_count++;
                    }
                  }
                }
              }
            }
          }
          if (load_count > 0) result = true;
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
      strings.clear();
      result = false;
    }
    return result;
  }
  public Actor CreateActorFromElement(XmlReader.Element e) {
    String name = e.getName();
    Actor a = null;

    for (String namespaceName : importedNamespaceNames) {
      Namespace importedNamespace = rootNamespace.namespace(namespaceName);

      if (!importedNamespace.isElementListEmpty()) {
        ArrayList<ElementDirective> DirectiveElements = importedNamespace.getElements();

        for (ElementDirective d : DirectiveElements) {

          if (name.equalsIgnoreCase(d.getName())) {
            a = d.processDirective(null, e);

            if (a != null) {

              if (d.isApplyCommonAttribute()) {
                if (!importedNamespace.isAttributeListEmpty()) {

                  ArrayList<AttributeDirective> CommonAttributes =
                      importedNamespace.getAttributes();
                  for (AttributeDirective ad : CommonAttributes) {
                    a = ad.processDirective(a, e);
                  }
                }
              }
            }

            return a;
          }
        }
      }
    }

    return a;
  }