mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Planner deco stops are at 10ft increments when measured in feet
When using feet as depth unit, deco stop levels should be at 10 ft rather than 3 m increments. For shallow stops, rounding means the difference is not apparent. However, with stops deeper than 30 feet, using 3 m increments leads stops at 39ft, 49ft, ..., 98ft, etc. Apart from making plans look messy, the old behaviour makes it harder to benchmark the planner against published profiles in imperial units. This revised patch uses the help macro M_OR_FT(6, 20) to set the last stop at the correct depth. Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									8c4e1e6bfa
								
							
						
					
					
						commit
						17ef6774e0
					
				
					 1 changed files with 15 additions and 4 deletions
				
			
		
							
								
								
									
										19
									
								
								planner.c
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								planner.c
									
										
									
									
									
								
							|  | @ -17,12 +17,20 @@ | |||
| #define TIMESTEP 2 /* second */ | ||||
| #define DECOTIMESTEP 60 /* seconds. Unit of deco stop times */ | ||||
| 
 | ||||
| int decostoplevels[] = { 0, 3000, 6000, 9000, 12000, 15000, 18000, 21000, 24000, 27000, | ||||
| int decostoplevels_metric[] = { 0, 3000, 6000, 9000, 12000, 15000, 18000, 21000, 24000, 27000, | ||||
| 				  30000, 33000, 36000, 39000, 42000, 45000, 48000, 51000, 54000, 57000, | ||||
| 				  60000, 63000, 66000, 69000, 72000, 75000, 78000, 81000, 84000, 87000, | ||||
| 				  90000, 100000, 110000, 120000, 130000, 140000, 150000, 160000, 170000, | ||||
| 				  180000, 190000, 200000, 220000, 240000, 260000, 280000, 300000, | ||||
| 				  320000, 340000, 360000, 380000 }; | ||||
| int decostoplevels_imperial[] = { 0, 3048, 6096, 9144, 12192, 15240, 18288, 21336, 24384, 27432, | ||||
| 				30480, 33528, 36576, 39624, 42672, 45720, 48768, 51816, 54864, 57912, | ||||
| 				60960, 64008, 67056, 70104, 73152, 76200, 79248, 82296, 85344, 88392, | ||||
| 				91440, 101600, 111760, 121920, 132080, 142240, 152400, 162560, 172720, | ||||
| 				182880, 193040, 203200, 223520, 243840, 264160, 284480, 304800, | ||||
| 				325120, 345440, 365760, 386080 }; | ||||
| int decostoplevels[sizeof(decostoplevels_metric) / sizeof(int)]; | ||||
| 
 | ||||
| double plangflow, plangfhigh; | ||||
| bool plan_verbatim, plan_display_runtime, plan_display_duration, plan_display_transitions; | ||||
| 
 | ||||
|  | @ -883,12 +891,15 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool | |||
| 		diveplan->surface_pressure = SURFACE_PRESSURE; | ||||
| 	create_dive_from_plan(diveplan, is_planner); | ||||
| 
 | ||||
| 	if (prefs.last_stop) { | ||||
| 		decostoplevels[1] = 6000; | ||||
| 	if (prefs.units.length == METERS ) { | ||||
| 		memcpy(decostoplevels, decostoplevels_metric, sizeof(decostoplevels_metric)); | ||||
| 	} else { | ||||
| 		decostoplevels[1] = 3000; | ||||
| 		memcpy(decostoplevels, decostoplevels_imperial, sizeof(decostoplevels_imperial)); | ||||
| 	} | ||||
| 
 | ||||
| 	if (prefs.last_stop) | ||||
| 		decostoplevels[1] = M_OR_FT(6,20); | ||||
| 
 | ||||
| 	/* Let's start at the last 'sample', i.e. the last manually entered waypoint. */ | ||||
| 	sample = &displayed_dive.dc.sample[displayed_dive.dc.samples - 1]; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue