From 46618d1dccfe80ac3a3d64e2f6259dad6bcdcffa Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 21 Jul 2010 22:25:05 +0100 Subject: [PATCH] parameterise vessel class and subclass info ready for remote fetching; no behavioural change in this commit --- yarrg/where-vessels | 60 ++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/yarrg/where-vessels b/yarrg/where-vessels index af77cba..c5ec9b0 100755 --- a/yarrg/where-vessels +++ b/yarrg/where-vessels @@ -246,9 +246,7 @@ proc display-note-infos {} { #---------- vessel properties ---------- -proc vesselclasses-init {} { - global vc_game2code vc_code2abbrev vc_code2full vc_codes - set vcl { +set vessel_class_info { smsloop am sl Sloop lgsloop bm ct Cutter dhow cm dh Dhow @@ -261,9 +259,23 @@ proc vesselclasses-init {} { merchgal jm mg {Merchant Galleon} warfrig im wf {War Frigate} grandfrig km gf {Grand Frigate} - } +} + +set vessel_subclass_info { + celtic E {Emerald class} + icy F {Frost class} + rogue R {Rogue class} + verdant V {Verdant class} + inferno I {Inferno class} +} + +proc vesselclasses-init {} { + global vc_game2code vc_code2abbrev vc_code2full vc_codes + global vessel_class_info vessel_subclass_info set vc_codes {} - foreach {game code abbrev full} $vcl { + foreach {game code abbrev full} $vessel_class_info { + if {![regexp {^[a-z][a-z]$} $code code]} { error "bad code" } + if {![regexp {^[a-z][a-z]$} $abbrev abbrev]} { error "bad abbrev" } lappend vc_codes $code set vc_game2code($game) $code set vc_code2abbrev($code) $abbrev @@ -271,6 +283,16 @@ proc vesselclasses-init {} { load-icon $abbrev } + global vsc_code2report + global vsc_game2code + set vsc_game2code(null) {} + set vsc_code2report() Ordinary + foreach {game code full} $vessel_subclass_info { + if {![regexp {^[A-Z]$} $code code]} { error "bad code" } + set vsc_game2code($game) $code + set vsc_code2report($code) $full + } + load-icon atsea foreach a {battle borrow dot} { foreach b {ours dot query} { @@ -378,14 +400,11 @@ proc show-report-decode {code} { report-set inport [lindex {{At Sea} {In port}} $inport] report-set class $vc_code2full($classcode) - switch -exact $subclass { - {} { report-set subclass {Ordinary} } - E { report-set subclass {Emerald class} } - F { report-set subclass {Frost class} } - R { report-set subclass {Rogue class} } - V { report-set subclass {Verdant class} } - I { report-set subclass {Inferno class} } - default { report-set subclass "Subclass \"$subclass\"" } + upvar #0 vsc_code2report($subclass) subclass_report + if {[info exists subclass_report]} { + report-set subclass $subclass_report + } else { + report-set subclass "Subclass \"$subclass\"" } report-set lock [lindex { @@ -584,15 +603,12 @@ proc vessel {vin} { if {![info exists class]} { errexpect-error "unexpected vesselClass"} lappend codel $class - set subclass [errexpect-arrayget vi vesselSubclass] - switch -exact $subclass { - null { lappend codel {} } - celtic { lappend codel E } - icy { lappend codel F } - rogue { lappend codel R } - verdant { lappend codel V } - inferno { lappend codel I } - default { lappend codel ($subclass) } + set gamesubclass [errexpect-arrayget vi vesselSubclass] + upvar #0 vsc_game2code($gamesubclass) subclass + if {[info exists subclass]} { + lappend codel $subclass + } else { + lappend codel ($gamesubclass) } switch -exact [errexpect-arrayget vi isLocked]/[ \ -- 2.30.2