Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
@@ -5,7 +5,7 @@ from policy_harness import ROOT,body,run
|
||||
spec=importlib.util.spec_from_file_location('import_settings',BASE/'tools/import_settings.py')
|
||||
m=importlib.util.module_from_spec(spec);spec.loader.exec_module(m)
|
||||
result,deferred=m.merge({'configVersion':1,'reportIntervalSeconds':20.0,'supportSquadLimit':2,'responseRadiusMetres':1500,'convoyCount':3},{'aiIntelChancePercent':0,'intelRevealChancePercent':100})
|
||||
assert result==dict(keepWeaponOnUnconscious=1,reportIntervalSeconds=20,supportSquadLimit=2,responseRadiusMetres=1500,aiIntelChancePercent=0,intelRevealChancePercent=100,radioDefenceSeconds=180,startTimeMinutes=840,timeMultiplier=1,startDateCode=0,weatherProfile=0,antiAirChancePercent=7,antiPersonnelMineChancePercent=60,automaticConvoyEnabled=1,convoyCount=3,heliTimerMinutes=15)
|
||||
assert result==dict(aiDoctrine=0,aiShadow=0,planeAltitudeMetres=250,planeReplacementSeconds=60,planeSectorSeconds=120,planeReconEnabled=1,roadblockCount=4,civilianTrafficCount=3,startMode=0,keepWeaponOnUnconscious=1,reportIntervalSeconds=20,supportSquadLimit=2,responseRadiusMetres=1500,aiIntelChancePercent=0,intelRevealChancePercent=100,radioDefenceSeconds=180,startTimeMinutes=840,timeMultiplier=1,startDateCode=0,weatherProfile=0,viewDistanceMetres=0,automaticEquipmentChancePercent=25,antiAirChancePercent=7,antiPersonnelMineChancePercent=60,automaticConvoyEnabled=1,convoyCount=3,heliTimerMinutes=15)
|
||||
assert deferred==[]
|
||||
for count in (0,1,3,20):
|
||||
values,notes=m.merge(ai={'convoyCount':count})
|
||||
@@ -60,7 +60,7 @@ print('PASS: legacy values preserved, unsupported fields reported, invalid data
|
||||
source = Path(os.environ.get('ERR_SETTINGS_SOURCE', ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_Settings.c'))
|
||||
method = body(source, 'bool Set(')
|
||||
method = (method.replace('string ', 'std::string ').replace('Replication.', 'Replication::')
|
||||
.replace('FileIO.', 'FileIO::').replace('foreach (', 'for (')
|
||||
.replace('FileIO.', 'FileIO::').replace('ERR_ProfileConfig.', 'ERR_ProfileConfig::').replace('foreach (', 'for (')
|
||||
.replace('JsonSaveContext json = new JsonSaveContext();', 'JsonSaveContext json;')
|
||||
.replace('map<string, int> ', 'Values ').replace('map<std::string, int> ', 'Values '))
|
||||
run(r'''
|
||||
@@ -73,6 +73,7 @@ struct Values {
|
||||
std::map<string,int> data;
|
||||
int Get(string key){return data.at(key);}
|
||||
void Remove(string key){data.erase(key);}
|
||||
void Set(string key,int value){data[key]=value;}
|
||||
};
|
||||
struct File {bool valid=true;Values values;};
|
||||
std::map<string,File> disk;
|
||||
@@ -98,6 +99,12 @@ struct JsonSaveContext {
|
||||
void WriteValue(string key,int value){pending.values.data[key]=value;}
|
||||
bool SaveToFile(string path){disk[path]=pending;return true;}
|
||||
};
|
||||
// This fixture exercises the custom-path transaction; unified storage has its own fixture.
|
||||
const string PATH="$profile:rereintroduced.json";
|
||||
namespace ERR_ProfileConfig {
|
||||
bool Exists(string path){return FileIO::FileExists(path);}
|
||||
bool Save(string,JsonSaveContext&){assert(false);return false;}
|
||||
}
|
||||
struct Settings {
|
||||
bool m_ReadOnly=false;
|
||||
string m_Path="settings";
|
||||
|
||||
Reference in New Issue
Block a user