From 62f30bb40e503b90e4c2fc894d9ec3e843085284 Mon Sep 17 00:00:00 2001 From: Taka Date: Sat, 23 Feb 2019 09:36:50 +0000 Subject: [PATCH] Updated the Russian Lend-Lease vehicles. --- chapter-h/chapter-h-placeholders.zip | Bin 162072 -> 160606 bytes .../tools/make_chapter_h_placeholders.py | 4 + .../tests/fixtures/chapter-h-placeholders.txt | 12 - .../webapp/data/vehicles/russian.json | 95 -------- .../data/vehicles/russian.lend-lease.json | 167 +++++++++++++ vasl_templates/webapp/static/snippets.js | 63 +++-- vasl_templates/webapp/static/vo.js | 14 +- .../webapp/templates/vo-notes-report.html | 3 +- .../webapp/tests/fixtures/vasl-pieces.txt | 17 +- .../vo-reports/vehicles/russian/1940.txt | 223 +++++++++--------- .../vo-reports/vehicles/russian/1941.txt | 223 +++++++++--------- .../vo-reports/vehicles/russian/1942.txt | 223 +++++++++--------- .../vo-reports/vehicles/russian/1943.txt | 223 +++++++++--------- .../vo-reports/vehicles/russian/1944.txt | 223 +++++++++--------- .../vo-reports/vehicles/russian/1945.txt | 223 +++++++++--------- vasl_templates/webapp/vasl_mod.py | 9 +- vasl_templates/webapp/vo.py | 95 ++++++-- 17 files changed, 1025 insertions(+), 792 deletions(-) create mode 100644 vasl_templates/webapp/data/vehicles/russian.lend-lease.json diff --git a/chapter-h/chapter-h-placeholders.zip b/chapter-h/chapter-h-placeholders.zip index e802ce7b2e65649320179b02a0992d38662b06d4..10e359a1d7770a690bef4cfd25e2b520c0699a03 100644 GIT binary patch literal 160606 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 fRA13Vj8hg!&k literal 162072 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 diff --git a/vasl_templates/tools/make_chapter_h_placeholders.py b/vasl_templates/tools/make_chapter_h_placeholders.py index bc955f8..789cccd 100755 --- a/vasl_templates/tools/make_chapter_h_placeholders.py +++ b/vasl_templates/tools/make_chapter_h_placeholders.py @@ -51,6 +51,10 @@ def make_chapter_h_placeholders( output_fname, log=None \ fname = os.path.join( root, fname ) if os.path.splitext( fname )[1] != ".json": continue + if os.path.splitext( fname )[0].endswith( ".lend-lease" ): + # NOTE: Doing this means we will miss any pieces explicitly defined in a lend-lease file + # (instead of being copied from an existing piece), but we can live with that... :-/ + continue dname2, fname2 = os.path.split( fname ) nat = os.path.splitext( fname2 )[0] if nat == "common": diff --git a/vasl_templates/tools/tests/fixtures/chapter-h-placeholders.txt b/vasl_templates/tools/tests/fixtures/chapter-h-placeholders.txt index 57f4b76..60e7488 100644 --- a/vasl_templates/tools/tests/fixtures/chapter-h-placeholders.txt +++ b/vasl_templates/tools/tests/fixtures/chapter-h-placeholders.txt @@ -1213,17 +1213,8 @@ russian/vehicles/44.png russian/vehicles/45.png russian/vehicles/46.png russian/vehicles/47.png -russian/vehicles/48.png -russian/vehicles/49.png russian/vehicles/5.png -russian/vehicles/50.png -russian/vehicles/51.png -russian/vehicles/52.png -russian/vehicles/53.png -russian/vehicles/54.png -russian/vehicles/59.png russian/vehicles/6.png -russian/vehicles/60.png russian/vehicles/7.png russian/vehicles/8.png russian/vehicles/9.png @@ -1258,13 +1249,10 @@ russian/vehicles/i.html russian/vehicles/j.html russian/vehicles/k.html russian/vehicles/l.html -russian/vehicles/ll.html russian/vehicles/m.html russian/vehicles/n.html -russian/vehicles/o.html russian/vehicles/p.html russian/vehicles/q.html -russian/vehicles/r.html russian/vehicles/s.html russian/vehicles/t.html slovakian/ordnance/28.png diff --git a/vasl_templates/webapp/data/vehicles/russian.json b/vasl_templates/webapp/data/vehicles/russian.json index 2e2836e..5c72626 100644 --- a/vasl_templates/webapp/data/vehicles/russian.json +++ b/vasl_templates/webapp/data/vehicles/russian.json @@ -644,101 +644,6 @@ "notes": [ "S\u20201" ], "id": "ru/v:073", "gpid": 7089 -}, -{ "name": "Stuart III(a)", - "type": "LT", - "CS#": 4, - "capabilities2": { "C": 6 }, - "note_number": "48", - "notes": [ "N", "O", "LL" ], - "id": "ru/v:074", - "gpid": [ 6362, 6364 ] -}, -{ "name": "Lee(a)", - "type": "MT", - "CS#": 7, - "capabilities2": { "C": "4\u2020", "s": "8\u2020" }, - "note_number": "49\u2020", - "notes": [ "B\u20201", "N", "O", "LL" ], - "id": "ru/v:075", - "gpid": [ 704, 706, 7423 ] -}, -{ "name": "Sherman III(a)", - "type": "MT", - "CS#": "5:brewup", - "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] }, - "note_number": "50\u2020", - "notes": [ "N", "O", "R\u20201", "LL" ], - "id": "ru/v:076", - "gpid": [ 708, 710, 7091 ] -}, -{ "name": "Sherman III(L)(a)", - "type": "MT", - "CS#": "6:brewup", - "capabilities2": { "s": 5, "WP": 7, "sM": 8 }, - "note_number": "50.1", - "notes": [ "N", "O", "R\u2020", "LL" ], - "id": "ru/v:077", - "gpid": [ 712, 714 ] -}, -{ "name": "Matilda II(b)", - "type": "HT", - "CS#": 5, - "capabilities2": { "sD": 6 }, - "note_number": "51\u2020", - "notes": [ "M\u20201", "N", "LL" ], - "id": "ru/v:078", - "gpid": null -}, -{ "name": "Valentine V(b)", - "type": "HT", - "CS#": 4, - "capabilities2": { "sM": 8 }, - "note_number": "52.1", - "notes": [ "N", "LL" ], - "id": "ru/v:079", - "gpid": null -}, -{ "name": "Valentine VIII(b)", - "type": "HT", - "CS#": 4, - "capabilities2": { "HE": 7, "sD": 6 }, - "note_number": "52.2", - "notes": [ "N", "LL" ], - "id": "ru/v:080", - "gpid": null -}, -{ "name": "Churchill III(b)", - "type": "HT", - "CS#": 7, - "capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" }, - "note_number": "53\u2020", - "notes": [ "N", "LL" ], - "id": "ru/v:081", - "gpid": null -}, -{ "name": "M3A1 Scout Car(a)", - "type": "APC", - "CS#": 4, - "note_number": "54\u2020", - "notes": [ "N", "LL" ], - "id": "ru/v:082", - "gpid": null -}, -{ "name": "Jeep GPA(a)", - "type": "atr", - "cs#": 2, - "note_number": "59", - "notes": [ "H\u2020", "L\u20201" ], - "id": "ru/v:083", - "gpid": 7119 -}, -{ "name": "DUKW(a)", - "type": "atr", - "cs#": 7, - "note_number": "60\u2020", - "id": "ru/v:084", - "gpid": 7120 } ] diff --git a/vasl_templates/webapp/data/vehicles/russian.lend-lease.json b/vasl_templates/webapp/data/vehicles/russian.lend-lease.json new file mode 100644 index 0000000..958b36a --- /dev/null +++ b/vasl_templates/webapp/data/vehicles/russian.lend-lease.json @@ -0,0 +1,167 @@ +[ + +{ "name": "Stuart III(a)", + "type": "LT", + "CS#": 4, + "capabilities2": { "C": 6 }, + "note_number": "48", + "notes": [ "N", "O", "LL" ], + "id": "ru/v:074", + "gpid": [ 6364 ], + "_comment_": "VASL also has GPID 6362 (British), but it has extra capabilities." +}, +{ "name": "Lee(a)", + "type": "MT", + "CS#": 7, + "capabilities2": { "C": "4\u2020", "s": "8\u2020" }, + "note_number": "49\u2020", + "notes": [ "B\u20201", "N", "O", "LL" ], + "id": "ru/v:075", + "gpid": [ 704, 7423 ], + "_comment_": "VASL has 2 other GPID's, with different capabilities." +}, +{ "name": "Sherman III(a)", + "type": "MT", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] }, + "note_number": "50\u2020", + "notes": [ "N", "O", "R\u20201", "LL" ], + "id": "ru/v:076", + "gpid": [ 708, 710, 7091 ], + "_comment_": "VASL also has sD6 (wrong?) and Red TH #'s[< 44] (why?) for all 3 variants." +}, +{ "name": "Sherman III(L)(a)", + "type": "MT", + "CS#": "6:brewup", + "capabilities2": { "s": 5, "WP": 7, "sM": 8 }, + "note_number": "50.1", + "notes": [ "N", "O", "R\u2020", "LL" ], + "id": "ru/v:077", + "gpid": [ 712, 7093 ] +}, +{ "name": "Matilda II(b)", + "type": "HT", + "CS#": 5, + "capabilities2": { "sD": 6 }, + "note_number": "51\u2020", + "notes": [ "M\u20201", "N", "LL" ], + "id": "ru/v:078", + "gpid": null, + "_comment_": "VASL has a Russian variant with CS 4." +}, +{ "id": "ru/v:085", + "copy_from": "br/v:041", + "name": "Valentine II(b)", + "note_number": "52", + "extra_notes": [ "LL" ], + "gpid": [ 724 ] +}, +{ "id": "ru/v:079", + "copy_from": "br/v:042", + "name": "Valentine V(b)", + "note_number": "52\u2020", + "extra_notes": [ "LL" ], + "gpid": [ 726, 728, 7432, 7434 ] +}, +{ "id": "ru/v:080", + "copy_from": "br/v:043", + "name": "Valentine VIII(b)", + "note_number": "52\u2020", + "extra_notes": [ "LL" ], + "gpid": [ 730, 7111 ] +}, +{ "name": "Churchill III(b)", + "type": "HT", + "CS#": 7, + "capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" }, + "note_number": "53\u2020", + "notes": [ "N", "LL" ], + "id": "ru/v:081", + "gpid": [ 732, 7115 ] +}, + +{ "id": "ru/v:082", + "copy_from": "am/v:041", + "name": "M3A1 Scout Car(a)", + "note_number": "54", + "extra_notes": [ "LL" ], + "gpid": [ 7426, 7428 ] +}, +{ "id": "ru/v:086", + "copy_from": "br/v:090", + "note_number": "55", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:087", + "copy_from": "br/v:091", + "note_number": "55", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:088", + "copy_from": "br/v:087", + "note_number": "56", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:089", + "copy_from": "br/v:094", + "note_number": "57", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:090", + "copy_from": "br/v:095", + "note_number": "57", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:091", + "copy_from": "br/v:096", + "note_number": "57", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:092", + "copy_from": "br/v:097", + "note_number": "57", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:093", + "copy_from": "br/v:098", + "note_number": "57", + "extra_notes": [ "LL" ] +}, + +{ "name": "Jeep(a)", + "type": "atr", + "cs#": 2, + "note_number": "58", + "notes": [ "H\u2020", "L\u20201", "LL" ], + "id": "ru/v:083", + "gpid": [ 758, 759, 7119 ] +}, +{ "id": "ru/v:094", + "copy_from": "br/v:123", + "note_number": "Br 85", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:095", + "copy_from": "br/v:124", + "note_number": "Br 85", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:096", + "copy_from": "br/v:125", + "note_number": "Br 85", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:097", + "copy_from": "br/v:126", + "note_number": "Br 85", + "extra_notes": [ "LL" ] +}, +{ "id": "ru/v:084", + "copy_from": "am/v:056", + "note_number": "US 52\u2020", + "extra_notes": [ "LL" ], + "gpid": 7120 +} + +] + diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js index 0f9d037..178e8a2 100644 --- a/vasl_templates/webapp/static/snippets.js +++ b/vasl_templates/webapp/static/snippets.js @@ -16,7 +16,8 @@ var _DAY_OF_MONTH_POSTFIXES = { // nb: we assume English :-/ // NOTE: Blood & Jungle has a lot of multi-applicable notes that simply refer to other // multi-applicable notes e.g. "Fr C" = "French Multi-Applicable Note C". -var BFP_MA_NOTE_REDIRECTS = { +// NOTE: These are also used for Lend-Lease vehicles. +var MA_NOTE_REDIRECTS = { "Br": "british", "Ch": "chinese", "Fr": "french", @@ -28,6 +29,12 @@ var BFP_MA_NOTE_REDIRECTS = { "AxM": "axis-minor", } ; +// NOTE: There are BFP references like "Jp 5", but we ignore these since they are referring to +// a vehicle/ordnance *note*, not a multi-applicable note. +MA_NOTE_REDIRECT_REGEX = new RegExp( + "^((Br|Ch|Fr|Ge|Jp|Ru|US|AllM|AxM) [A-Z]{1,2})(\\u2020(\\d)?|T)?$" +) ; + var gDefaultScenario = null ; var gLastSavedScenario = null ; var gLastSavedScenarioFilename = null ; @@ -384,22 +391,38 @@ function get_vo_note_key( vo_entry ) // get the note number for the specified vehicle/ordnance if ( ! vo_entry.note_number ) return null ; - // nb: there are some note numbers of the form "1.2" :-/ - var match = vo_entry.note_number.match( new RegExp( "^([0-9.]+)" ) ) ; + // NOTE: There are some note numbers of the form "1.2" :-/ We also need to handle redirects. + var match = vo_entry.note_number.match( new RegExp( "^((Br|US) )?([0-9]+(.\\d)?)" ) ) ; if ( ! match ) return null ; - var key = match[1] ; + var key = match[0] ; if ( vo_entry.extn_id ) key = vo_entry.extn_id + ":" + key ; return key ; } -function is_known_vo_note_key( vo_type, nat, key ) +function make_vo_note_key_url( vo_type, nat, key ) { + if ( ! key ) + return null ; + + // check for redirects + var match = key.match( /^(Br|US) (.+)$/ ) ; + if ( match ) { + nat = MA_NOTE_REDIRECTS[ match[1] ] ; + key = match[2] ; + } + // check if the vehicle/ordnance note key is known to us - return vo_type in gVehicleOrdnanceNotes && - nat in gVehicleOrdnanceNotes[ vo_type ] && - key in gVehicleOrdnanceNotes[ vo_type ][ nat ] ; + if ( !( vo_type in gVehicleOrdnanceNotes ) ) + return null ; + if ( !( nat in gVehicleOrdnanceNotes[ vo_type ] ) ) + return null ; + if ( !( key in gVehicleOrdnanceNotes[ vo_type ][ nat ] ) ) + return null ; + + // generate the URL + return APP_URL_BASE + "/" + vo_type + "/" + nat + "/note/" + key ; } function get_ma_notes_keys( nat, vo_entries, vo_type ) @@ -419,9 +442,7 @@ function get_ma_notes_keys( nat, vo_entries, vo_type ) new RegExp( "^([A-Z][a-z])$" ), new RegExp( "^([A-Za-z])" ), new RegExp( "^([A-Za-z])$" ), - // NOTE: There are BFP references like "Jp 5", but we ignore these since they are referring to - // a vehicle/ordnance *note*, not a multi-applicable note. - new RegExp( "^((Br|Ch|Fr|Ge|Jp|Ru|US|AllM|AxM) [A-Z]{1,2})(\\u2020(\\d)?)?$" ), + MA_NOTE_REDIRECT_REGEX, ] ; var EXTRA_NOTES_INFO = { "sh/v": [ "landing-craft", "Landing Craft" ], @@ -484,7 +505,7 @@ function get_ma_notes_keys( nat, vo_entries, vo_type ) if ( pos > 0 ) { var val = keys0[i].substr( pos+1 ) ; pos = val.indexOf( " " ) ; - if ( BFP_MA_NOTE_REDIRECTS[ val.substr(0,pos) ] == nat && val.substr(pos+1) in std_keys ) + if ( MA_NOTE_REDIRECTS[ val.substr(0,pos) ] == nat && val.substr(pos+1) in std_keys ) continue ; } keys0a.push( keys0[i] ) ; @@ -545,11 +566,17 @@ function get_ma_note( nat, vo_type, key ) { var ma_notes ; function redirect_ma_note( target, vo_type ) { - pos = target.indexOf( " " ) ; - var nat_redirect = BFP_MA_NOTE_REDIRECTS[ target.substring( 0, pos ) ] ; - if ( nat_redirect ) { - ma_notes = get_ma_notes_for_nat( nat_redirect, vo_type ) ; - return ma_notes[ target.substring( pos+1 ) ] ; + // extract the multi-applicable note ID + var match = target.match( MA_NOTE_REDIRECT_REGEX ) ; + if ( match ) { + // check if it's a valid redirect + pos = match[0].indexOf( " " ) ; + var nat_redirect = MA_NOTE_REDIRECTS[ match[0].substring( 0, pos ) ] ; + if ( nat_redirect ) { + // yup - get the referenced multi-applicable note + ma_notes = get_ma_notes_for_nat( nat_redirect, vo_type ) ; + return ma_notes[ match[0].substring( pos+1 ) ] ; + } } return null ; } @@ -559,6 +586,8 @@ function get_ma_note( nat, vo_type, key ) var pos = key.indexOf( ":" ) ; if ( pos !== -1 ) ma_note = redirect_ma_note( key.substring(pos+1), vo_type ) ; + else + ma_note = redirect_ma_note( key, vo_type ) ; if ( ! ma_note ) { // look for a normal note diff --git a/vasl_templates/webapp/static/vo.js b/vasl_templates/webapp/static/vo.js index 8ee9809..e34e91d 100644 --- a/vasl_templates/webapp/static/vo.js +++ b/vasl_templates/webapp/static/vo.js @@ -165,20 +165,17 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, elite, custom_cap "" ] ; var vo_note_key = get_vo_note_key( vo_entry ) ; - var vo_nat ; - if ( is_known_vo_note_key( vo_type, nat, vo_note_key ) ) - vo_nat = nat ; - else { + var vo_note_url = make_vo_note_key_url( vo_type, nat, vo_note_key ) ; + if ( ! vo_note_url ) { // NOTE: Note numbers seem to be distinct across all Allied Minor or all Axis Minor vehicles/ordnance, // so if we don't find a note in a given nationality's normal vehicles/ordnance, we can get away with // just checking their corresponding common vehicles/ordnance. var nat_type = gTemplatePack.nationalities[ nat ].type ; if ( ["allied-minor","axis-minor"].indexOf( nat_type ) !== -1 ) { - if ( is_known_vo_note_key( vo_type, nat_type, vo_note_key ) ) - vo_nat = nat_type ; + vo_note_url = make_vo_note_key_url( vo_type, nat_type, vo_note_key ) ; } } - if ( vo_nat ) { + if ( vo_note_url ) { var template_id = (vo_type === "vehicles") ? "ob_vehicle_note" : "ob_ordnance_note" ; if ( is_template_available( template_id ) ) { buf.push( @@ -186,8 +183,7 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, elite, custom_cap " class='snippet' data-id='" + template_id + "' title='" + GENERATE_SNIPPET_HINT + "'>" ) ; } - var url = APP_URL_BASE + "/" + vo_type + "/" + vo_nat + "/note/" ; - data.vo_note_url = url + vo_note_key ; + data.vo_note_url = vo_note_url ; } buf.push( "" ) ; var $content = $( buf.join("") ) ; diff --git a/vasl_templates/webapp/templates/vo-notes-report.html b/vasl_templates/webapp/templates/vo-notes-report.html index a680e7c..c743fc8 100644 --- a/vasl_templates/webapp/templates/vo-notes-report.html +++ b/vasl_templates/webapp/templates/vo-notes-report.html @@ -2,6 +2,7 @@