#!/usr/bin/env python3 import shutil, sys, glob, os, math from pathlib import Path from PIL import Image class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKCYAN = '\033[96m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' UNDERLINE = '\033[4m' overWrite=False params = sys.argv print(params) if(len(params) < 4): print("Missing params") sys.exit() inputDir = params[1] outputDir = params[2] itemPrefix = params[3] def printHelp(): print ('./generate-items -i -o -p ') def generateItem(inputFile): baseName = itemPrefix + "_" + Path(inputFile).resolve().stem print(f"Generating: {bcolors.BOLD}{baseName}{bcolors.ENDC}") generateImage(inputFile, baseName) generateESCScript(baseName) generateScene(baseName) def generateImage(inputFile, baseName): originalImage = Image.open(inputFile) scale = 0.15 newImage = originalImage.resize((math.ceil(originalImage.width * scale),math.ceil(originalImage.height * scale))) newImageOutputPath = outputDir + "assets/" + baseName + ".png" print(f"{bcolors.OKCYAN}Image:{bcolors.ENDC} {newImageOutputPath} {bcolors.OKGREEN}generated.{bcolors.ENDC}") newImage.save(newImageOutputPath) def generateESCScript(baseName): scriptName = baseName + ".esc" scriptOutputPath = outputDir + scriptName if(os.path.isfile(scriptOutputPath) and not(overWrite)): print(f"{bcolors.OKCYAN}Script:{bcolors.ENDC} {scriptOutputPath} {bcolors.WARNING}already exists.{bcolors.ENDC}") return print(f"{bcolors.OKCYAN}Script:{bcolors.ENDC} {scriptOutputPath} {bcolors.OKGREEN}generated.{bcolors.ENDC}") shutil.copy('item-template.esc', scriptOutputPath) def generateScene(baseName): esceneName = baseName + ".tscn" esceneOutputPath = outputDir + esceneName if(os.path.isfile(esceneOutputPath) and not(overWrite)): print(f"{bcolors.OKCYAN}Scene:{bcolors.ENDC} {esceneOutputPath} {bcolors.WARNING}already exists.{bcolors.ENDC}") return newScene = open(esceneOutputPath, mode='wt', encoding='utf-8') newSceneTemplate = esceneTemplate newSceneTemplate = newSceneTemplate.replace("BASENAME", baseName) newScene.write(newSceneTemplate) newScene.close() print(f"{bcolors.OKCYAN}Scene:{bcolors.ENDC} {esceneOutputPath} {bcolors.OKGREEN}generated.{bcolors.ENDC}") if inputDir == "": print ('Input directory is required') printHelp() sys.exit() if outputDir == "": print ('Output directory is required') printHelp() sys.exit() if itemPrefix == "": print ('Item prefix is required') printHelp() sys.exit() if(outputDir[-1] != "/"): outputDir += "/" esceneFile = open('./item-template.tscn') esceneTemplate = esceneFile.read() files = glob.glob(inputDir + "*.png") for file in files: generateItem(file) esceneFile.close()