25 lines
		
	
	
		
			805 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			805 B
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from dataclasses import dataclass | ||
|  | from random import Random | ||
|  | from typing import List | ||
|  | 
 | ||
|  | from .bundle import Bundle, BundleTemplate | ||
|  | from ..options import BundlePrice, StardewValleyOptions | ||
|  | 
 | ||
|  | 
 | ||
|  | @dataclass | ||
|  | class BundleRoom: | ||
|  |     name: str | ||
|  |     bundles: List[Bundle] | ||
|  | 
 | ||
|  | 
 | ||
|  | @dataclass | ||
|  | class BundleRoomTemplate: | ||
|  |     name: str | ||
|  |     bundles: List[BundleTemplate] | ||
|  |     number_bundles: int | ||
|  | 
 | ||
|  |     def create_bundle_room(self, bundle_price_option: BundlePrice, random: Random, options: StardewValleyOptions): | ||
|  |         filtered_bundles = [bundle for bundle in self.bundles if bundle.can_appear(options)] | ||
|  |         chosen_bundles = random.sample(filtered_bundles, self.number_bundles) | ||
|  |         return BundleRoom(self.name, [bundle.create_bundle(bundle_price_option, random, options) for bundle in chosen_bundles]) |