X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.main.git;a=blobdiff_plain;f=yarrg%2Fwhere-vessels;h=a99917eecd451dd06f71e3fd2b5cc51b6d6a48c9;hp=ec4394b1e2aaef66b8b10c0fc1ecab1e6caa521e;hb=b7c56bf4481a41c5c762b0081f32b05858f0d52a;hpb=c0e46c32d792391156c62358f3d92e630ffcd9ed diff --git a/yarrg/where-vessels b/yarrg/where-vessels index ec4394b..a99917e 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -254,8 +254,8 @@ proc vesselclasses-init {} { merchbrig fm mb {Merchant Brig} warbrig gm wb {War Brig} xebec hm xe Xebec - warfrig im wf {War Frigate} merchgal jm mg {Merchant Galleon} + warfrig im wf {War Frigate} grandfrig km gf {Grand Frigate} } set vc_codes {} @@ -264,20 +264,53 @@ proc vesselclasses-init {} { set vc_game2code($game) $code set vc_code2abbrev($code) $abbrev set vc_code2full($code) $full - image create bitmap ship-icon/$abbrev -file icons/$abbrev.xbm + load-icon $abbrev } + + load-icon unlocked + load-icon locked + load-icon battle + load-icon atsea + load-icon borrow + load-icon query + load-icon ours + load-icon dot + foreach a {battle borrow dot} { + foreach b {ours dot query} { + load-icon-combine $a $b + } + } +} + +proc load-icon {icon} { + image create bitmap icon/$icon -file icons/$icon.xbm } -proc code2abbrev-lock {lockown} { +proc load-icon-combine {args} { + set cmd {} + set delim "pnmcat -lr " + foreach icon $args { + append cmd $delim " <(xbmtopbm icons/$icon.xbm)" + set delim " <(pbmmake -white 1 1)" + } + append cmd " | pbmtoxbm" + debug "load-icon-combine $cmd" + image create bitmap icon/[join $args +] -data [exec bash -c $cmd] +} + +proc code-lockown2icon {lockown} { manyset [split $lockown ""] lock notown - append abbrev [lindex {* + -} $lock] - append abbrev [lindex {= - ?} [regsub {\D} $notown 2]] -} + return icon/[ + lindex {battle borrow dot} $lock + ]+[ + lindex {ours dot query} $notown + ] +} -proc canvas-horiz-stack {xvar y bind type args} { +proc canvas-horiz-stack {xvar xoff y bind type args} { upvar 1 $xvar x upvar 1 canvas canvas - set id [eval $canvas create $type $x $y $args] + set id [eval $canvas create $type [expr {$x+$xoff}] $y $args] set bbox [$canvas bbox $id] set x [lindex $bbox 2] $canvas bind $id $bind @@ -292,22 +325,41 @@ proc code2canvas {code canvas x yvar qty qtylen bind} { set stackx $x incr stackx 2 + set imy [expr {$y+2}] - append qty [lindex {? {}} $inport] + if {!$inport} { incr qtylen -1 } + if {$qtylen<=0} { set qtylen {} } set qty [format "%${qtylen}s" $qty] - set qtyid [canvas-horiz-stack stackx $y $bind \ + set qtyid [canvas-horiz-stack stackx 0 $y $bind \ text -anchor nw -font fixed -text $qty] - incr stackx -1 - canvas-horiz-stack stackx [expr {$y+2}] $bind \ - image -anchor nw -image ship-icon/$vc_code2abbrev($class) - incr stackx + if {!$inport} { + canvas-horiz-stack stackx 0 $imy $bind \ + image -anchor nw -image icon/atsea + incr stackx + } + + canvas-horiz-stack stackx -1 $imy $bind \ + image -anchor nw -image icon/$vc_code2abbrev($class) - canvas-horiz-stack stackx $y $bind \ - text -anchor nw -font fixed -text \ - "$subclass[code2abbrev-lock $lockown]$xabbrev" + if {[string length $subclass]} { + canvas-horiz-stack stackx 0 $y $bind \ + text -anchor nw -font fixed -text \ + $subclass + } + incr stackx + canvas-horiz-stack stackx 0 $imy $bind \ + image -anchor nw -image [code-lockown2icon $lockown] + incr stackx + + if {[string length $xabbrev]} { + canvas-horiz-stack stackx 0 $y $bind \ + text -anchor nw -font fixed -text \ + $xabbrev + } + set bbox [$canvas bbox $qtyid] set ny [lindex $bbox 3] set bid [$canvas create rectangle \ @@ -342,8 +394,7 @@ proc show-report-decode {code} { switch -exact $notown { 0 { report-set own "Yours" } 1 { report-set own "Other pirate's" } - U { report-set own "Owner not known" } - M { report-set own "Missing from notes" } + 2 { report-set own "Owner not specified in notes" } default { report-set own "?? $notown" } } @@ -361,7 +412,7 @@ set filters {} proc filter-values/size {} { global vc_codes; return $vc_codes } proc filter-icon/size {code} { upvar #0 vc_code2abbrev($code) abb - return ship-icon/$abb + return icon/$abb } proc filter-default/size {code} { return 1 } proc filter-says-yes/size {codel} { @@ -372,19 +423,18 @@ proc filter-says-yes/size {codel} { proc filter-values/lockown {} { foreach lv {0 1 2} { - foreach ov {0 1 X} { + foreach ov {0 1 2} { lappend vals "$lv$ov" } } return $vals } -proc filter-map/lockown {lockown} { return [code2abbrev-lock $lockown] } +proc filter-icon/lockown {lockown} { return [code-lockown2icon $lockown] } proc filter-default/lockown {lockown} { return [regexp {^[01]|^2[^1]} $lockown] } proc filter-says-yes/lockown {codel} { set lockown [lindex $codel 3] - regsub -all {\D} $lockown X lockown upvar #0 filter_lockown($lockown) yes return $yes } @@ -552,13 +602,13 @@ proc vessel {vin} { set notown 1 } } else { - set notown U + set notown 2 } append abbrev $xabbrev set notes_used($vid) 1 } else { - set notown M + set notown 2 lappend note_missings [list $island $realname $vid] } @@ -1025,9 +1075,8 @@ proc invoke_notes {} { #---------- main program ---------- -vesselclasses-init - parseargs +vesselclasses-init argdefaults httpclientsetup where-vessels load-chart