ListWZFile.java
Upload User: gwt600
Upload Date: 2021-06-03
Package Size: 704k
Code Size: 2k
Category:

Games

Development Platform:

Java

  1. package net.sf.odinms.provider.wz;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.util.ArrayList;
  7. import java.util.Collection;
  8. import java.util.Collections;
  9. import java.util.HashSet;
  10. import java.util.List;
  11. import net.sf.odinms.provider.MapleDataProviderFactory;
  12. import net.sf.odinms.tools.data.input.GenericLittleEndianAccessor;
  13. import net.sf.odinms.tools.data.input.InputStreamByteStream;
  14. import net.sf.odinms.tools.data.input.LittleEndianAccessor;
  15. public class ListWZFile {
  16. private LittleEndianAccessor lea;
  17. // will be decorated as Unmodifiable after loading is done
  18. private List<String> entries = new ArrayList<String>();
  19. private static Collection<String> modernImgs = new HashSet<String>();
  20. private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ListWZFile.class);
  21. public static byte[] xorBytes(byte[] a, byte[] b) {
  22. byte[] wusched = new byte[a.length];
  23. for (int i = 0; i < a.length; i++) {
  24. wusched[i] = (byte) (a[i] ^ b[i]);
  25. }
  26. return wusched;
  27. }
  28. public ListWZFile(File listwz) throws FileNotFoundException {
  29. lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(listwz))));
  30. while (lea.available() > 0) {
  31. int l = lea.readInt();
  32. char[] chunk = new char[l];
  33. for (int i = 0; i < chunk.length; i++) {
  34. chunk[i] = lea.readChar();
  35. }
  36. lea.readChar();
  37. char[] lolabc = new char[3];
  38. lolabc[0] = 'a';
  39. lolabc[1] = 'b';
  40. lolabc[2] = 'c';
  41. final String value = String.valueOf(WZTool.xorCharArray(chunk, lolabc));
  42. entries.add(value);
  43. }
  44. entries = Collections.unmodifiableList(entries);
  45. }
  46. public List<String> getEntries() {
  47. return entries;
  48. }
  49. public static void init() {
  50. final String listWz = System.getProperty("net.sf.odinms.listwz");
  51. if (listWz != null) {
  52. ListWZFile listwz;
  53. try {
  54. listwz = new ListWZFile(MapleDataProviderFactory.fileInWZPath("List.wz"));
  55. modernImgs = new HashSet<String>(listwz.getEntries());
  56. } catch (FileNotFoundException e) {
  57. log.info("net.sf.odinms.listwz is set but the List.wz could not be found", e);
  58. }
  59. }
  60. }
  61. public static boolean isModernImgFile(String path) {
  62. return modernImgs.contains(path);
  63. }
  64. }