// Add a theme to the repo if it's valid public void RegisterThemeSprites(Theme_SO sprites) { if (_themeSprites.ContainsKey(sprites.Name)) { DialogueLogger.LogWarning($"Theme sprites for {sprites.Name} already exist, overwritting"); } if (validateSprites(sprites)) { _themeSprites[sprites.Name] = sprites; } }
// Check all the values are valid private bool validateSprites(Theme_SO sprites) { var names = new List <string>(); if (sprites.ThemeSprites.Count == 0) { DialogueLogger.LogWarning($"Trying to register theme sprites for {sprites.Name} but the sprite list is empty"); } foreach (var spritePair in sprites.ThemeSprites) { // Check name if (string.IsNullOrEmpty(spritePair.Name) || string.IsNullOrWhiteSpace(spritePair.Name)) { DialogueLogger.LogError($"Error registering theme sprites for {sprites.Name}, one or more of the names is empty"); return(false); } // Check for duplicate names if (names.Contains(spritePair.Name)) { DialogueLogger.LogError($"Error registering theme sprites for {sprites.Name}, there is already a sprite with the name {spritePair.Name}. Each sprite must have a unique name"); return(false); } names.Add(spritePair.Name); // Check sprites if (spritePair.Sprite == null) { DialogueLogger.LogError($"Error registering theme sprites for {sprites.Name} with the sprite name {spritePair.Name}, but the sprite is empty"); return(false); } } return(true); }