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/tools/check_connect_roar.py

64 lines
2.1 KiB

#!/usr/bin/env python3
""" Check how scenarios at the ASL Scenario Archive are connected to those at ROAR. """
import sys
import json
from vasl_templates.webapp.scenarios import _match_roar_scenario, \
_asa_scenarios, _build_asa_scenario_index, _roar_scenarios, _build_roar_scenario_index
# ---------------------------------------------------------------------
def asa_string( s ):
"""Return an ASL Scenario Archive scenario as a string."""
return "[{}] {} ({})".format(
s["scenario_id"], s.get("title"), s.get("sc_id")
)
def roar_string( s ):
"""Return ROAR scenario as a string."""
return "[{}] {} ({})".format(
s["roar_id"], s.get("name"), s.get("scenario_id")
)
# ---------------------------------------------------------------------
# load the ASL Scenario Archive scenarios
fname = sys.argv[1]
with open( fname, "r", encoding="utf-8" ) as fp:
asa_data = json.load( fp )
_build_asa_scenario_index( _asa_scenarios, asa_data, None )
# load the ROAR scenarios
fname = sys.argv[2]
with open( fname, "r", encoding="utf-8" ) as fp:
roar_data = json.load( fp )
_build_roar_scenario_index( _roar_scenarios, roar_data, None )
# try to connect each ASA scenario to ROAR
exact_matches, multiple_matches, unmatched = [], [], []
for scenario in asa_data["scenarios"]:
matches = _match_roar_scenario( scenario )
if not matches:
unmatched.append( scenario )
elif len(matches) == 1:
exact_matches.append( scenario )
else:
multiple_matches.append( [ scenario, matches ] )
# output the results
print( "ASL Scenario Archive scenarios: {}".format( len(asa_data["scenarios"]) ) )
print()
print( "Exact matches: {}".format( len(exact_matches) ) )
print()
print( "Multiple matches: {}".format( len(multiple_matches) ) )
if multiple_matches:
for scenario,matches in multiple_matches:
print( " {}:".format( asa_string(scenario) ) )
for match in matches:
print( " - {}".format( roar_string( match ) ) )
print()
print( "Unmatched: {}".format( len(unmatched) ) )
if unmatched:
for scenario in unmatched:
print( " {}".format( asa_string(scenario) ) )