Game.EndFrameBarrier
Assembly: Game
Namespace: Game.Modding.Toolchain.Dependencies
Type: class IDEDependency
Base: CombinedDependency
Summary: IDEDependency is a CombinedDependency implementation that aggregates several IDE-specific dependencies (Visual Studio, Rider, VS Code) and exposes them as a single OR-combined toolchain dependency. It is used by the toolchain/modding system to detect which supported IDEs are present (and whether they meet minimum version requirements) and to present a localized state string describing detected IDEs. This dependency is asynchronous (isAsync = true) and cannot be installed or uninstalled via the toolchain (canBeInstalled/canBeUninstalled are false).
Fields
private BaseIDEDependency[] ides = new BaseIDEDependency[3] { new VisualStudioDependency(), new RiderDependency(), new VSCodeDependency() }This array holds the concrete IDE dependency implementations that IDEDependency combines. Each element represents detection logic for a specific IDE and can indicate whether the detected IDE meets the minimum required version (via isMinVersion) and provides a localizedName used when building user-facing messages.
Properties
-
public override IEnumerable<IToolchainDependency> dependencies => idesReturns the underlying dependencies (the ides array) that are combined by this CombinedDependency. -
public override CombineType type => CombineType.ORSpecifies that the combined dependency uses logical OR: the combined dependency is satisfied if any of the contained IDE dependencies is satisfied. -
protected override bool isAsync => trueIndicates that this dependency performs asynchronous detection (presumably it may run checks that complete later). -
public override bool canBeInstalled => falseThis dependency cannot be installed via the toolchain; it only reports detection state. -
public override bool canBeUninstalled => falseThis dependency cannot be uninstalled via the toolchain.
Constructors
public IDEDependency()No explicit constructor is declared in source; the default constructor initializes the ides array with VisualStudioDependency, RiderDependency and VSCodeDependency instances as shown in the field initializer.
Methods
public override LocalizedString GetLocalizedState(bool includeProgress)Overrides the base implementation to provide a more descriptive localized status for the combined IDE dependency. Behavior:- If base.state.m_State == DependencyState.Installed:
- Builds a dictionary of localization elements where "STATE" maps to a localized "Detected" label.
- Iterates the ides array and for each BaseIDEDependency with isMinVersion == true, adds an item entry that references that dependency's localizedName.
- Returns a LocalizedString combining the "STATE" token and a parenthesized, comma-separated list of the detected IDE names (using the dictionary tokens).
- If the state is DependencyState.NotInstalled:
- Returns a localized "NotDetected" string.
- For other states:
- Falls back to base.GetLocalizedState(includeProgress).
This method is responsible for producing the user-facing, localized description that may read like: "Detected (Visual Studio 2022, Rider, VS Code)" depending on which IDEs meet the minimum version requirement.
Usage Example
// Create the combined IDE dependency and get a localized status string.
IDEDependency ideDep = new IDEDependency();
LocalizedString status = ideDep.GetLocalizedState(includeProgress: false);
// Example of enumerating the underlying dependencies:
foreach (var dep in ideDep.dependencies)
{
// dep is an IToolchainDependency (e.g., VisualStudioDependency, RiderDependency, VSCodeDependency)
// You can inspect dep.state, dep.localizedName, etc., depending on the interface/implementation.
}