Strongly typed MapleStory2 m2d file parsing
usingvarreader=newM2dReader(EXPORTED_PATH);varindex=newFlatTypeIndex(reader);varparser=newXBlockParser(reader,index);parser.Include(typeof(ISpawnPoint));parser.Include(typeof(IMS2TriggerObject));parser.Include(typeof(IPortal));
...var results =newDictionary<string,MapEntityMetadata>();parser.Parse((xblock,entities)=>{varmetadata=newMapEntityMetadata();foreach(IMapEntityentityinentities){switch(entity){caseISpawnPointPCspawnPoint:
...
case ISpawnPointNPC npcSpawnPoint:
...default:
...}}results[xblock]=metadata;});usingvarreader=newM2dReader(EXPORTED_PATH);varindex=newFlatTypeIndex(reader);varparser=newXBlockParser(reader,index);varresults=newDictionary<string,MapEntityMetadata>();parser.Parallel().ForAll(map =>{varmetadata=newMapEntityMetadata();foreach(IMapEntityentityinmap.entities){switch(entity){caseISpawnPointPCspawnPoint:
...
case ISpawnPointNPC npcSpawnPoint:
...default:
...}}results[map.xblock]=metadata;});usingvarreader=newM2dReader(XML_PATH);// LOCALE: "TW", "TH", "NA", "CN", "JP", "KR"// ENV: "Dev", "Qa", "DevStage", "Stage", "Live"Filter.Load(reader,LOCALE,ENV);varparser=newItemParser(reader);foreach((intid,stringname,ItemDatadata)inparser.Parse()){// Extract fields from ItemData that are needed.}usingvarreader=newM2dReader(EXPORTED_PATH);varindex=newFlatTypeIndex(reader);index.CliExplorer();