#---------- 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
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
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} {
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 {
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]/[ \