45 lines
		
	
	
		
			No EOL
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			No EOL
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const path = GetResourcePath(GetCurrentResourceName());
 | |
| const Jimp = require('jimp');
 | |
| 
 | |
| let originalTexture = null;
 | |
| 
 | |
| async function beginSpritesReplacement() {
 | |
| 	try {
 | |
| 		originalTexture = await Jimp.read(`${path}/utils/miscellaneous/imgs/blips_texturesheet_ng.png`);
 | |
| 		return true;
 | |
| 	} catch (error) {
 | |
| 		return false;
 | |
| 	}
 | |
| }
 | |
| exports('beginSpritesReplacement', beginSpritesReplacement);
 | |
| 
 | |
| async function replaceSprite(imageName, x, y) {
 | |
| 	try {
 | |
| 		let newSprite = await Jimp.read(`${path}/_sprites/REPLACEABLE/${imageName}`);
 | |
| 		newSprite = newSprite.resize(64, 64, Jimp.RESIZE_NEAREST_NEIGHBOR);
 | |
| 		
 | |
| 		const spriteWidth = newSprite.getWidth();
 | |
| 		const spriteHeight = newSprite.getHeight();
 | |
| 
 | |
| 		const mask = new Jimp(spriteWidth, spriteHeight, 0x00000000);
 | |
| 
 | |
| 		originalTexture.mask(mask, x, y);
 | |
| 
 | |
| 		originalTexture.blit(newSprite, x, y, 0, 0, spriteWidth, spriteHeight);
 | |
| 
 | |
| 		return true;
 | |
| 	} catch (error) {
 | |
| 		return false;
 | |
| 	}
 | |
| }
 | |
| exports('replaceSprite', replaceSprite);
 | |
| 
 | |
| async function endSpritesReplacement() {
 | |
| 	try {
 | |
| 		await originalTexture.writeAsync(`${path}/utils/miscellaneous/imgs/blips_texturesheet_ng_custom.png`);
 | |
| 		return true;
 | |
| 	} catch (error) {
 | |
| 		return false;
 | |
| 	}
 | |
| }
 | |
| exports('endSpritesReplacement', endSpritesReplacement); | 
