private CBMSParser parseXMLResource(Tag tagCurrent) { CBMSParser BMSParser = new CBMSParser(); String csName = tagCurrent.getName(); if (csName.equals("MapSet")) { CMapSetElement e = new CMapSetElement("", 0); BMSParser.setRoot(e); e.loadTagParameters(tagCurrent); } return BMSParser; }
@Override protected CParser<CMapSetElement> doParsing(CTokenList lst) { CBMSParser parser = new CBMSParser(); if (parser.StartParsing(lst)) { CGlobalEntityCounter.GetInstance().CountBMSFile(); return parser; } else { Transcoder.logError("BMS parsing failed"); return null; } }
private CBMSParser parseRESResource(Tag tagForm) { Hashtable<String, CMapElement> hashMapsByLanguage = new Hashtable<String, CMapElement>(); Hashtable<String, PosLineCol> hashPosLineColByLanguage = new Hashtable<String, PosLineCol>(); CBMSParser BMSParser = new CBMSParser(); CMapSetElement eMapSet = new CMapSetElement("", 0); BMSParser.setRoot(eMapSet); String csName = tagForm.getVal("name"); csName = csName.toUpperCase(); eMapSet.loadFromRES(csName); csName = csName.substring(0, 4) + csName.substring(5); String csLanguages = tagForm.getVal("allLanguages"); StringRef rcsLanguages = new StringRef(csLanguages); String csLanguage = StringUtil.extractCurrentWord(rcsLanguages, false, ";"); while (csLanguage != null) { CMapElement eMap = new CMapElement("", 0); eMap.loadFromRES(0, csName, csLanguage); eMapSet.AddElement(eMap); hashMapsByLanguage.put(csLanguage, eMap); PosLineCol posLineCol = new PosLineCol(); hashPosLineColByLanguage.put(csLanguage, posLineCol); if (rcsLanguages == null) { csLanguage = null; continue; } csLanguage = StringUtil.extractCurrentWord(rcsLanguages, false, ";"); if (csLanguage == null) { csLanguage = rcsLanguages.get(); rcsLanguages = null; } csLanguage = StringUtil.trimLeft(csLanguage, ';'); } // Skip <pfkeydefine> // Skip <pfkeyaction> Tag tagFormBody = tagForm.getChild("formbody"); if (tagFormBody != null) { Tag tagVBox = tagFormBody.getChild("vbox"); if (tagVBox != null) { // Enum all tag hbox TagCursor curHBox = new TagCursor(); Tag tagHBox = tagVBox.getFirstChild(curHBox, "hbox"); while (tagHBox != null) { // Enum all edits TagCursor curEdit = new TagCursor(); Tag tagEditTitle = tagHBox.getFirstChild(curEdit); while (tagEditTitle != null) { // Enum all Maps in every language and add the item into the map Set<Entry<String, CMapElement>> set = hashMapsByLanguage.entrySet(); Iterator<Entry<String, CMapElement>> iter = set.iterator(); while (iter.hasNext()) { Entry<String, CMapElement> entry = iter.next(); String csLg = entry.getKey(); CMapElement eMap = entry.getValue(); PosLineCol posLineCol = hashPosLineColByLanguage.get(csLg); CFieldElement eField = new CFieldElement("", 0); boolean bToAdd = eField.loadTagParameters(posLineCol, tagEditTitle, csLg); if (bToAdd) eMap.AddElement(eField); } tagEditTitle = tagHBox.getNextChild(curEdit); } // Found </hbox> addTagForClosingHBox(hashPosLineColByLanguage, hashMapsByLanguage); tagHBox = tagVBox.getNextChild(curHBox); } } } return BMSParser; }