package com.aionemu.packetsamurai.utils; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.List; import java.util.SortedMap; import java.util.TreeMap; import java.util.Map.Entry; import com.aionemu.packetsamurai.PacketSamurai; import com.aionemu.packetsamurai.parser.datatree.ValuePart; import com.aionemu.packetsamurai.session.DataPacket; /** * @author ATracer */ public class NpcTitleExporter { private List<DataPacket> packets; private String sessionName; private SortedMap<String, String> npcIdTitleMap = new TreeMap<String, String>(); public NpcTitleExporter(List<DataPacket> packets, String sessionName) { super(); this.packets = packets; this.sessionName = sessionName; } public void parse() { String fileName = "npctitles_" + sessionName + ".txt"; try { BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); for(DataPacket packet : packets) { String name = packet.getName(); if("SM_NPC_INFO".equals(name)) { String npcId = ""; String titleId = ""; List<ValuePart> valuePartList = packet.getValuePartList(); for(ValuePart valuePart : valuePartList) { String partName = valuePart.getModelPart().getName(); if("npcId".equals(partName)){ npcId = valuePart.readValue(); }else if("titleId".equals(partName)){ titleId = valuePart.readValue(); } } if(!"0".equals(titleId)) { npcIdTitleMap.put(npcId, titleId); } } } out.write("NPC titles for session: " + sessionName); out.write("\n"); out.write("\n"); for(Entry<String, String> entry : npcIdTitleMap.entrySet()) { StringBuilder sb = new StringBuilder(); sb.append("<title npcid=\""); sb.append(entry.getKey()); sb.append("\" titleid=\""); sb.append(entry.getValue()); sb.append("\" />\n"); out.write(sb.toString()); } out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } PacketSamurai.getUserInterface().log("The npctitles data has been written"); } }