53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import shutil
							 | 
						||
| 
								 | 
							
								from pathlib import Path
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from scripts.task import Task
							 | 
						||
| 
								 | 
							
								from utils import FileUtils
							 | 
						||
| 
								 | 
							
								from utils.logger_utils import app_logger
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ProjectUpdateImage(Task):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def update_image(self):
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								        更新游戏的资源
							 | 
						||
| 
								 | 
							
								        :return:
							 | 
						||
| 
								 | 
							
								        """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if not self.context.update_res_img:
							 | 
						||
| 
								 | 
							
								            app_logger().info("No update image found")
							 | 
						||
| 
								 | 
							
								            return
							 | 
						||
| 
								 | 
							
								        dst = os.path.join(self.context.temp_project_path, "drawable_res")
							 | 
						||
| 
								 | 
							
								        if os.path.exists(dst):
							 | 
						||
| 
								 | 
							
								            shutil.rmtree(dst)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        FileUtils.decompress(self.context.res_img_path, dst)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if os.path.join(dst, "drawable-xxhdpi"):
							 | 
						||
| 
								 | 
							
								            dst = os.path.join(dst, "drawable-xxhdpi")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        target_root_path = os.path.join(self.context.temp_project_path,
							 | 
						||
| 
								 | 
							
								                                        f"launcher-game{os.sep}res{os.sep}drawable-xxhdpi")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        image_list = list(map(lambda f: Path(f).stem, os.listdir(target_root_path)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for file in os.listdir(dst):
							 | 
						||
| 
								 | 
							
								            if file == ".DS_Store":
							 | 
						||
| 
								 | 
							
								                continue
							 | 
						||
| 
								 | 
							
								            res_name = Path(file).stem
							 | 
						||
| 
								 | 
							
								            file_name = self.context.get_map_from_key(res_name)
							 | 
						||
| 
								 | 
							
								            temp_tar = os.path.join(dst, file)
							 | 
						||
| 
								 | 
							
								            temp_dst = os.path.join(target_root_path, file).replace(file_name, self.context.get_map_from_key(res_name))
							 | 
						||
| 
								 | 
							
								            if file_name in image_list:
							 | 
						||
| 
								 | 
							
								                FileUtils.delete(os.path.join(target_root_path, file_name + ".png"))
							 | 
						||
| 
								 | 
							
								                FileUtils.delete(os.path.join(target_root_path, file_name + ".jpg"))
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            app_logger().info(f"copy {temp_tar} => {temp_dst}")
							 | 
						||
| 
								 | 
							
								            FileUtils.copy(temp_tar, temp_dst, True)
							 | 
						||
| 
								 | 
							
								            pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def execute(self):
							 | 
						||
| 
								 | 
							
								        self.update_image()
							 | 
						||
| 
								 | 
							
								        self.context.save_cache_config("res_img", self.context.config_res_img_md5)
							 |