moved input controls to addressables
This commit is contained in:
@@ -99,22 +99,48 @@ namespace RebootKit.Engine.Main {
|
||||
}
|
||||
|
||||
// Assets API
|
||||
static readonly List<GameModeAsset> s_gameModesAssets = new List<GameModeAsset>();
|
||||
static readonly List<WorldConfigAsset> s_worldConfigsAssets = new List<WorldConfigAsset>();
|
||||
static readonly List<GameModeAsset> s_GameModesAssets = new List<GameModeAsset>();
|
||||
static readonly List<WorldConfigAsset> s_WorldConfigsAssets = new List<WorldConfigAsset>();
|
||||
|
||||
public static IReadOnlyList<GameModeAsset> GameModesAssets => s_gameModesAssets;
|
||||
public static IReadOnlyList<WorldConfigAsset> WorldConfigsAssets => s_worldConfigsAssets;
|
||||
public static IReadOnlyList<GameModeAsset> GameModesAssets => s_GameModesAssets;
|
||||
public static IReadOnlyList<WorldConfigAsset> WorldConfigsAssets => s_WorldConfigsAssets;
|
||||
|
||||
public static async UniTask InitializeAssetsAsync(CancellationToken cancellationToken) {
|
||||
s_gameModesAssets.Clear();
|
||||
s_worldConfigsAssets.Clear();
|
||||
s_GameModesAssets.Clear();
|
||||
s_WorldConfigsAssets.Clear();
|
||||
|
||||
s_Logger.Info("Loading game assets");
|
||||
|
||||
await Addressables.LoadAssetsAsync<GameModeAsset>("game_mode", asset => { s_gameModesAssets.Add(asset); }).ToUniTask(cancellationToken: cancellationToken);
|
||||
s_Logger.Info($"Loaded {s_gameModesAssets.Count} game modes");
|
||||
await Addressables.LoadAssetsAsync<GameModeAsset>("game_mode", asset => { s_GameModesAssets.Add(asset); }).ToUniTask(cancellationToken: cancellationToken);
|
||||
s_Logger.Info($"Loaded {s_GameModesAssets.Count} game modes");
|
||||
|
||||
await Addressables.LoadAssetsAsync<WorldConfigAsset>("world", asset => { s_worldConfigsAssets.Add(asset); }).ToUniTask(cancellationToken: cancellationToken);
|
||||
await Addressables.LoadAssetsAsync<WorldConfigAsset>("world", asset => { s_WorldConfigsAssets.Add(asset); }).ToUniTask(cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
public static GameModeAsset GetGameMode(string name) {
|
||||
if (string.IsNullOrEmpty(name)) {
|
||||
throw new ArgumentException("Game mode name cannot be null or empty", nameof(name));
|
||||
}
|
||||
|
||||
GameModeAsset gameMode = s_GameModesAssets.Find(asset => asset.name.Equals(name, StringComparison.Ordinal));
|
||||
if (!gameMode) {
|
||||
throw new KeyNotFoundException($"Game mode '{name}' not found");
|
||||
}
|
||||
|
||||
return gameMode;
|
||||
}
|
||||
|
||||
public static WorldConfigAsset GetWorldConfigAsset(string name) {
|
||||
if (string.IsNullOrEmpty(name)) {
|
||||
throw new ArgumentException("World config name cannot be null or empty", nameof(name));
|
||||
}
|
||||
|
||||
WorldConfigAsset worldConfig = s_WorldConfigsAssets.Find(asset => asset.Config.name.Equals(name, StringComparison.Ordinal));
|
||||
if (!worldConfig) {
|
||||
throw new KeyNotFoundException($"World config '{name}' not found");
|
||||
}
|
||||
|
||||
return worldConfig;
|
||||
}
|
||||
|
||||
// Game API
|
||||
|
||||
Reference in New Issue
Block a user