108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from dataclasses import dataclass | ||
|  | 
 | ||
|  | from Options import Range, PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Visibility | ||
|  | 
 | ||
|  | 
 | ||
|  | class LogicPercent(Range): | ||
|  |     """Sets the maximum percent similarity required for a check to be in logic.
 | ||
|  |     Higher values are more difficult and items/locations will not be generated beyond this number."""
 | ||
|  |     display_name = "Logic Percent" | ||
|  |     range_start = 50 | ||
|  |     range_end = 95 | ||
|  |     default = 80 | ||
|  | 
 | ||
|  | 
 | ||
|  | class GoalPercent(Range): | ||
|  |     """Sets the percent similarity required to achieve your goal.
 | ||
|  |     If this number is higher than the value for logic percent, | ||
|  |     reaching goal will be in logic upon obtaining all progression items."""
 | ||
|  |     display_name = "Goal Percent" | ||
|  |     range_start = 50 | ||
|  |     range_end = 95 | ||
|  |     default = 80 | ||
|  | 
 | ||
|  | 
 | ||
|  | class HalfPercentChecks(Range): | ||
|  |     """Sets the lowest percent at which locations will be created for each 0.5% of similarity.
 | ||
|  |     Below this number, there will be a check every 1%. | ||
|  |     Above this number, there will be a check every 0.5%."""
 | ||
|  |     display_name = "Half Percent Checks" | ||
|  |     range_start = 0 | ||
|  |     range_end = 95 | ||
|  |     default = 50 | ||
|  | 
 | ||
|  | 
 | ||
|  | class QuarterPercentChecks(Range): | ||
|  |     """Sets the lowest percent at which locations will be created for each 0.25% of similarity.
 | ||
|  |     This number will override Half Percent Checks if it is lower."""
 | ||
|  |     display_name = "Quarter Percent Checks" | ||
|  |     range_start = 0 | ||
|  |     range_end = 95 | ||
|  |     default = 70 | ||
|  | 
 | ||
|  | 
 | ||
|  | class CanvasSizeIncrement(Choice): | ||
|  |     """Sets the number of pixels the canvas will expand for each width/height item received.
 | ||
|  |     Ensure an adequate number of locations are generated if setting this below 50."""
 | ||
|  |     display_name = "Canvas Size Increment" | ||
|  |     # option_10 = 10 | ||
|  |     # option_20 = 20 | ||
|  |     option_25 = 25 | ||
|  |     option_50 = 50 | ||
|  |     option_100 = 100 | ||
|  |     default = 100 | ||
|  | 
 | ||
|  | 
 | ||
|  | class GoalImage(Range): | ||
|  |     """Sets the numbered image you will be required to match.
 | ||
|  |     See https://github.com/MarioManTAW/jspaint/tree/master/images/archipelago | ||
|  |     for a list of possible images or choose random. | ||
|  |     This can also be overwritten client-side by using File->Open."""
 | ||
|  |     display_name = "Goal Image" | ||
|  |     range_start = 1 | ||
|  |     range_end = 1 | ||
|  |     default = 1 | ||
|  |     visibility = Visibility.none | ||
|  | 
 | ||
|  | 
 | ||
|  | class StartingTool(Choice): | ||
|  |     """Sets which tool (other than Magnifier) you will be able to use from the start.""" | ||
|  |     option_brush = 0 | ||
|  |     option_pencil = 1 | ||
|  |     option_eraser = 2 | ||
|  |     option_airbrush = 3 | ||
|  |     option_line = 4 | ||
|  |     option_rectangle = 5 | ||
|  |     option_ellipse = 6 | ||
|  |     option_rounded_rectangle = 7 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class TrapCount(Range): | ||
|  |     """Sets the percentage of filler items to be replaced by random traps.""" | ||
|  |     display_name = "Trap Fill Percent" | ||
|  |     range_start = 0 | ||
|  |     range_end = 100 | ||
|  |     default = 0 | ||
|  | 
 | ||
|  | 
 | ||
|  | class DeathLink(Toggle): | ||
|  |     """If on, using the Undo or Clear Image functions will send a death to all other players with death link on.
 | ||
|  |     Receiving a death will clear the image and reset the history. | ||
|  |     This option also prevents Undo and Clear Image traps from being generated in the item pool."""
 | ||
|  |     display_name = "Death Link" | ||
|  | 
 | ||
|  | 
 | ||
|  | @dataclass | ||
|  | class PaintOptions(PerGameCommonOptions): | ||
|  |     logic_percent: LogicPercent | ||
|  |     goal_percent: GoalPercent | ||
|  |     half_percent_checks: HalfPercentChecks | ||
|  |     quarter_percent_checks: QuarterPercentChecks | ||
|  |     canvas_size_increment: CanvasSizeIncrement | ||
|  |     goal_image: GoalImage | ||
|  |     starting_tool: StartingTool | ||
|  |     trap_count: TrapCount | ||
|  |     death_link: DeathLink | ||
|  |     start_inventory_from_pool: StartInventoryPool |