#! /usr/bin/wish
+#
+# $Id: elite-editor,v 1.4 2003/02/26 00:02:15 mdw Exp $
package require "elite" "1.0.0"
array set default {scale 15 colourby off connect 0}
proc set-scale {seq sc} {
- if {![regexp {^[0-9]+$} $sc]} {
+ if {![regexp {^\d+$} $sc]} {
moan "bad scale factor `$sc'"
return 1
}
return 0
}
+proc set-hyperspace-range {seq f} {
+ if {![regexp {^\d+(\.\d+)?$} $f]} {
+ moan "bad hyperspace range `$f'"
+ return 1
+ }
+ map-set-fuel $seq [expr {$f * 10}]
+ return 0
+}
+
# --- Colour-coding planets ---
proc colour-by {seq} {
proc show-connectivity {seq} {
upvar \#0 map-$seq map
- upvar \#0 adj-$map(galaxy) adj
+ upvar \#0 adj-$map(galaxy)-$map(fuel) adj
upvar \#0 ww-$map(galaxy) ww
set tl .map-$seq
$tl.map delete conn
if {!$map(connect)} {
return
}
- if {![info exists adj]} { adjacency $ww adj }
+ if {![info exists adj]} { adjacency $ww adj $map(fuel) }
foreach {s x y} $ww {
set done($s) 1
foreach {ss xx yy} $adj($s) {
}
}
$tl.map lower conn sep
+ show-path $seq
}
proc set-connectivity {seq} {
$tl.map lower path sep
}
+proc hide-path {seq} {
+ upvar \#0 map-$seq map
+ set tl .map-$seq
+ $tl.map delete path
+ unset map(path)
+ $tl.menu.path entryconfigure 7 -state disabled
+}
+
proc show-shortest-path {seq weight} {
upvar \#0 map-$seq map
- upvar \#0 adj-$map(galaxy) adj
+ upvar \#0 adj-$map(galaxy)-$map(fuel) adj
upvar \#0 ww-$map(galaxy) ww
set tl .map-$seq
$tl.map delete path
moan "no source or destination set"
return
}
- if {![info exists adj]} { adjacency $ww adj }
+ if {![info exists adj]} { adjacency $ww adj $map(fuel) }
destructure {path weight} \
[shortest-path adj $map(select) $map(dest) $weight]
if {![llength $path]} {
return
}
set map(path) $path
+ $tl.menu.path entryconfigure 7 -state normal
show-path $seq
}
colour-by $seq
show-connectivity $seq
- show-path $seq
show-names $seq
select-world $seq
destination-world $seq
upvar \#0 map-$seq map
set map(cmdr) $cmdr
map-set-title $seq
+ .map-$seq.menu.view entryconfigure 3 -state disabled
}
proc map-set-title {seq} {
proc map-set-fuel {seq qty} {
upvar \#0 map-$seq map
- set map(fuel) $qty
+ set map(fuel) [expr {int($qty)}]
select-world $seq
+ show-connectivity $seq
}
# --- Making a new map window ---
$tl.menu add cascade -label "File" -menu $tl.menu.file
menu $tl.menu.view
$tl.menu.view add command -label "New map..." \
- -command [list get-line .new-view "New view" "Galaxy" $ng new-view]
+ -command [list get-line .new-view "New map" "Galaxy" $ng new-view]
$tl.menu.view add command -label "Set scale..." \
-command [concat get-line .set-scale-$seq {"Set scale"} "Scale" \
\[set map-${seq}(scale)\] [list [list set-scale $seq]]]
+ $tl.menu.view add command -label "Set hyperspace range..." \
+ -command [concat get-line .set-fuel-$seq {"Set hyperspace range"} \
+ {"Hyperspace range"} \[expr \[set map-${seq}(fuel)\]/10.0\] \
+ [list [list set-hyperspace-range $seq]]]
$tl.menu.view add separator
$tl.menu.view add radiobutton -label "Off" \
-variable map-${seq}(colourby) -value off \
-command [list show-shortest-path $seq weight-encounters]
$tl.menu.path add command -label "Maximize trading" \
-command [list show-shortest-path $seq weight-trading]
+ $tl.menu.path add separator
+ $tl.menu.path add command -label "Hide path" -state disabled \
+ -command [list hide-path $seq]
$tl.menu add cascade -label "Compute path" -menu $tl.menu.path
$tl configure -menu $tl.menu