| 
									
										
										
										
											2022-03-18 04:53:09 +01:00
										 |  |  | from __future__ import annotations | 
					
						
							| 
									
										
										
										
											2021-11-13 20:52:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 00:48:23 +01:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2020-04-15 10:11:47 +02:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  | from typing import Tuple, Optional, TypedDict | 
					
						
							| 
									
										
										
										
											2020-03-06 00:48:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     import ModuleUpdate | 
					
						
							|  |  |  |     ModuleUpdate.update() | 
					
						
							| 
									
										
										
										
											2022-03-18 04:53:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-14 15:23:05 -08:00
										 |  |  | from worlds.Files import AutoPatchRegister, APPatch | 
					
						
							| 
									
										
										
										
											2022-03-18 04:53:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  | class RomMeta(TypedDict): | 
					
						
							|  |  |  |     server: str | 
					
						
							|  |  |  |     player: Optional[int] | 
					
						
							|  |  |  |     player_name: str | 
					
						
							| 
									
										
										
										
											2021-11-14 21:03:17 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  | def create_rom_file(patch_file: str) -> Tuple[RomMeta, str]: | 
					
						
							| 
									
										
										
										
											2022-03-18 04:53:09 +01:00
										 |  |  |     auto_handler = AutoPatchRegister.get_handler(patch_file) | 
					
						
							|  |  |  |     if auto_handler: | 
					
						
							| 
									
										
										
										
											2024-02-14 15:23:05 -08:00
										 |  |  |         handler: APPatch = auto_handler(patch_file) | 
					
						
							| 
									
										
										
										
											2022-03-18 04:53:09 +01:00
										 |  |  |         target = os.path.splitext(patch_file)[0]+handler.result_file_ending | 
					
						
							|  |  |  |         handler.patch(target) | 
					
						
							|  |  |  |         return {"server": handler.server, | 
					
						
							|  |  |  |                 "player": handler.player, | 
					
						
							|  |  |  |                 "player_name": handler.player_name}, target | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  |     raise NotImplementedError(f"No Handler for {patch_file} found.") | 
					
						
							| 
									
										
										
										
											2021-11-12 14:36:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-17 19:16:11 +01:00
										 |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
										
										
											2022-09-30 00:36:30 +02:00
										 |  |  |     for file in sys.argv[1:]: | 
					
						
							|  |  |  |         meta_data, result_file = create_rom_file(file) | 
					
						
							|  |  |  |         print(f"Patch with meta-data {meta_data} was written to {result_file}") |