17 lines
		
	
	
		
			424 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			17 lines
		
	
	
		
			424 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from dataclasses import dataclass, field
							 | 
						||
| 
								 | 
							
								from functools import cached_property
							 | 
						||
| 
								 | 
							
								from typing import Optional, Tuple
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from .game_item import Source
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@dataclass(frozen=True)
							 | 
						||
| 
								 | 
							
								class Building:
							 | 
						||
| 
								 | 
							
								    name: str
							 | 
						||
| 
								 | 
							
								    sources: Tuple[Source, ...] = field(kw_only=True)
							 | 
						||
| 
								 | 
							
								    upgrade_from: Optional[str] = field(default=None, kw_only=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @cached_property
							 | 
						||
| 
								 | 
							
								    def is_upgrade(self) -> bool:
							 | 
						||
| 
								 | 
							
								        return self.upgrade_from is not None
							 |