set segsasgot {xx yy}
set pq {} ;# unset: cdu charged and waiting
set speeddirn ff7f
+#unset askspeedix
+set askspeeds {10 30 50 80 100 126}
#set speeddirn ffff80c3fbcced7f
#set speeddirn_fixed {speed126 2 80 0}
set speeddirn_fixed {}
#----------
# for keyboard control
-proc ask_speed_now {l} {
- global speeddirn_fixed
- set speeddirn_fixed $l
+proc ask_speed {updown} {
+ global speeddirn_fixed askspeeds askspeedix
+ set ll [llength $askspeeds]
+ if {![info exists askspeedix]} {
+ set askspeedix [expr {
+ int($ll * 0.5 - 0.5 + 0.5 * $updown)
+ }]
+ } else {
+ incr askspeedix $updown
+ if {$askspeedix < 0} { set askspeedix 0 }
+ if {$askspeedix >= $ll} { set askspeedix [expr {$ll - 1}] }
+ }
+ set speed [lindex $askspeeds $askspeedix]
+ set speeddirn_fixed [list speed126 2 $speed 0]
maybechange speeddirn 1
}
-proc ask_fast {} { ask_speed_now {speed126 2 126 0} }
-proc ask_slow {} { ask_speed_now {speed126 2 10 0} }
proc ask_randspeed {} {
- global speeddirn_fixed; catch { unset speeddirn_fixed }
+ global speeddirn_fixed askspeedix
+ catch { unset speeddirn_fixed }
+ catch { unset askspeedix }
maybechange speeddirn 1
}