47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from BaseClasses import MultiWorld
 | |
| 
 | |
| 
 | |
| class AutoWorldRegister(type):
 | |
|     world_types = {}
 | |
| 
 | |
|     def __new__(cls, name, bases, dct):
 | |
|         new_class = super().__new__(cls, name, bases, dct)
 | |
|         if "game" in dct:
 | |
|             AutoWorldRegister.world_types[dct["game"]] = new_class
 | |
|         return new_class
 | |
| 
 | |
| 
 | |
| def call_single(world: MultiWorld, method_name: str, player: int):
 | |
|     method = getattr(world.worlds[player], method_name)
 | |
|     return method()
 | |
| 
 | |
| 
 | |
| def call_all(world: MultiWorld, method_name: str):
 | |
|     for player in world.player_ids:
 | |
|         call_single(world, method_name, player)
 | |
| 
 | |
| 
 | |
| class World(metaclass=AutoWorldRegister):
 | |
|     """A World object encompasses a game's Items, Locations, Rules and additional data or functionality required.
 | |
|     A Game should have its own subclass of World in which it defines the required data structures."""
 | |
| 
 | |
|     world: MultiWorld
 | |
|     player: int
 | |
| 
 | |
|     def __init__(self, world: MultiWorld, player: int):
 | |
|         self.world = world
 | |
|         self.player = player
 | |
| 
 | |
|     # overwritable methods that get called by Main.py
 | |
|     def generate_basic(self):
 | |
|         pass
 | |
| 
 | |
|     def set_rules(self):
 | |
|         pass
 | |
| 
 | |
|     def create_regions(self):
 | |
|         pass
 | |
| 
 | |
|     def generate_output(self):
 | |
|         pass
 | 
