Prioritize explicit garage spawn lanes

- Reduce lane discovery radius to 25
- Separate explicit marker matches from fallback lanes so named lanes win
This commit is contained in:
Jacob Schmidt 2026-05-23 08:54:31 -05:00
parent e688d9426b
commit 32a0baf697

View File

@ -62,7 +62,7 @@ GVAR(GarageContextServiceBaseClass) = compileFinal createHashMapFromArray [
["spawnLanes", createHashMap], ["spawnLanes", createHashMap],
["spawnRadius", 6], ["spawnRadius", 6],
["nearbyRadius", 30], ["nearbyRadius", 30],
["laneRadius", 150] ["laneRadius", 25]
] ]
}], }],
["findNearbyGarageObject", compileFinal { ["findNearbyGarageObject", compileFinal {
@ -106,27 +106,25 @@ GVAR(GarageContextServiceBaseClass) = compileFinal createHashMapFromArray [
private _markerDistance = if (isNull _garageObject) then { player distance2D _spawnPosition } else { _garageObject distance2D _spawnPosition }; private _markerDistance = if (isNull _garageObject) then { player distance2D _spawnPosition } else { _garageObject distance2D _spawnPosition };
private _garageVarName = if (isNull _garageObject) then { "" } else { toLowerANSI (vehicleVarName _garageObject) }; private _garageVarName = if (isNull _garageObject) then { "" } else { toLowerANSI (vehicleVarName _garageObject) };
private _markerKey = toLowerANSI _markerName; private _markerKey = toLowerANSI _markerName;
private _nameScore = 0; private _isExplicitMatch = _garageVarName isNotEqualTo "" && { (_markerKey find _garageVarName) >= 0 };
if (_garageVarName isNotEqualTo "" && { (_markerKey find _garageVarName) >= 0 }) then {
_nameScore = -50;
};
createHashMapFromArray [ createHashMapFromArray [
["name", _markerName], ["name", _markerName],
["isExplicitMatch", _isExplicitMatch],
["interactionPosition", _interactionPosition], ["interactionPosition", _interactionPosition],
["sourceObject", _garageObject], ["sourceObject", _garageObject],
["spawnCategory", _spawnCategory], ["spawnCategory", _spawnCategory],
["spawnHeading", markerDir _markerName], ["spawnHeading", markerDir _markerName],
["spawnPosition", _spawnPosition], ["spawnPosition", _spawnPosition],
["score", _markerDistance + _nameScore] ["score", _markerDistance]
] ]
}], }],
["discoverSpawnLanes", compileFinal { ["discoverSpawnLanes", compileFinal {
params [["_garageObject", objNull, [objNull]]]; params [["_garageObject", objNull, [objNull]]];
private _laneRadius = (_self call ["createDefaultContext", []]) getOrDefault ["laneRadius", 150]; private _laneRadius = (_self call ["createDefaultContext", []]) getOrDefault ["laneRadius", 25];
private _lanes = createHashMap; private _explicitLanes = createHashMap;
private _fallbackLanes = createHashMap;
{ {
private _markerName = _x; private _markerName = _x;
@ -142,13 +140,21 @@ GVAR(GarageContextServiceBaseClass) = compileFinal createHashMapFromArray [
if (_distance > _laneRadius) then { continue; }; if (_distance > _laneRadius) then { continue; };
private _spawnCategory = _entry getOrDefault ["spawnCategory", ""]; private _spawnCategory = _entry getOrDefault ["spawnCategory", ""];
private _currentEntry = _lanes getOrDefault [_spawnCategory, createHashMap]; private _laneSet = _fallbackLanes;
if (_entry getOrDefault ["isExplicitMatch", false]) then {
_laneSet = _explicitLanes;
};
private _currentEntry = _laneSet getOrDefault [_spawnCategory, createHashMap];
if (_currentEntry isEqualTo createHashMap || { (_entry getOrDefault ["score", 1e10]) < (_currentEntry getOrDefault ["score", 1e10]) }) then { if (_currentEntry isEqualTo createHashMap || { (_entry getOrDefault ["score", 1e10]) < (_currentEntry getOrDefault ["score", 1e10]) }) then {
_lanes set [_spawnCategory, _entry]; _laneSet set [_spawnCategory, _entry];
}; };
} forEach allMapMarkers; } forEach allMapMarkers;
private _lanes = createHashMap;
{ _lanes set [_x, _y]; } forEach _fallbackLanes;
{ _lanes set [_x, _y]; } forEach _explicitLanes;
_lanes _lanes
}], }],
["selectSpawnLane", compileFinal { ["selectSpawnLane", compileFinal {