package tk.captainsplexx.Resource.ITEXTURE; import tk.captainsplexx.Game.Core; import tk.captainsplexx.Resource.FileHandler; import tk.captainsplexx.Resource.FileSeeker; import tk.captainsplexx.Resource.CAS.CasDataReader; import tk.captainsplexx.Resource.DDS.DDS_HEADER; import tk.captainsplexx.Resource.TOC.ConvertedTocFile; import tk.captainsplexx.Resource.TOC.TocSBLink; public class ITextureHandler { public static byte[] getDSS(byte[] itextureData) { if (itextureData==null){return null;} FileSeeker seeker = new FileSeeker(); ITexture itexture = new ITexture(itextureData, seeker); String itextureChunkID = FileHandler.bytesToHex(itexture.getChunkID()).toLowerCase(); String sha1 = Core.getGame().getChunkGUIDSHA1().get(itextureChunkID); /* for (ResourceLink currentChunk : Core.getGame().getCurrentSB().getChunks()){ if (currentChunk.getId().equalsIgnoreCase(itextureChunkID)){ System.out.println("DEBUG -> ITEXTURE HANDLER!"); } }*/ if (sha1 == null) { for (ConvertedTocFile commonChunk : Core.getGame() .getCommonChunks()) { for (TocSBLink chunk : commonChunk.getChunks()) { if (chunk.getGuid().equalsIgnoreCase(itextureChunkID)) { sha1 = chunk.getSha1(); System.out.println("Chunk successfully found!"); break; } } if (sha1 != null) { break; } } } if (sha1 == null) { System.err.println("DDS not created from ITexture because BlockData could't be found!\n" + "ChunkID: "+itextureChunkID); return null; } byte[] data = CasDataReader.readCas(null, null, sha1, 666); if (data != null) { /*BlockData found :)*/ DDS_HEADER newDDSHeader = ITextureConverter.getDDSHeader(itexture); byte[] ddsHeaderArray = newDDSHeader.toBytes(); byte[] ddsFileData = new byte[ddsHeaderArray.length + data.length]; FileSeeker ddsTargetSeeker = new FileSeeker(); FileHandler.addBytes(ddsHeaderArray, ddsFileData, ddsTargetSeeker); FileHandler.addBytes(data, ddsFileData, ddsTargetSeeker); data = null; ddsHeaderArray = null; return ddsFileData; } else { System.err.println("Could not get data from cas for SHA1: "+sha1+"\nITexture to DDS conv. failed!"); return null; } } }