Create attractive VASL scenarios, with loads of useful information embedded to assist with game play. https://vasl-templates.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
vasl-templates/vasl_templates/webapp/file_server/utils.py

49 lines
1.6 KiB

""" Miscellaneous utilities. """
import os
import json
# ---------------------------------------------------------------------
def get_vo_gpids( data_dir ):
"""Get the GPID's for the vehicles/ordnance."""
gpids = set()
for vo_type in ("vehicles","ordnance"):
dname = os.path.join( data_dir, vo_type )
# process each file
for root,_,fnames in os.walk(dname):
for fname in fnames:
if os.path.splitext(fname)[1] != ".json":
continue
# load the GPID's from the next file
entries = json.load( open( os.path.join(root,fname), "r" ) )
for entry in entries:
if isinstance( entry["gpid"], list):
gpids.update( get_effective_gpid(gpid) for gpid in entry["gpid"] )
else:
gpids.add( entry["gpid"] )
gpids.remove( None )
return gpids
# ---------------------------------------------------------------------
# VASL 6.4.3 removed several PieceSlot's. There's no comment for the commmit (0a27c24)
# but I suspect it's because they're duplicates. Our data files have the following mappings:
# SdKfz 10/5: 7140, 2775
# SdKfz 10/4: 7146, 2772
# but we can't just remove the now-missing GPID's, since any scenarios that use them
# will break. This kind of thing is going to happen again, so we provide a generic mechanism
# for dealing with this kind of thing...
GPID_REMAPPINGS = {
7140: 2775, # SdKfz 10/5
7146: 2772, # SdKfz 10/4
}
def get_effective_gpid( gpid ):
"""Return the effective GPID."""
return GPID_REMAPPINGS.get( gpid, gpid )