public void SetStage(BattleType type) { _stageCategory = StageCategory.BATTLE; SetIcon(_battleIcon); switch (type) { case BattleType.EASY_BATTLE: _background.sprite = _easyNode; break; case BattleType.MEDIUM_BATTLE: _background.sprite = _mediumNode; break; case BattleType.HARD_BATTLE: _background.sprite = _hardNode; break; case BattleType.BOSS: _background.sprite = _hardNode; break; default: Debug.LogWarning("BattleType " + type + " unrecognized"); break; } }
internal static void EnsureIsCompatibleWith <T>(this T component, StageCategory containingStageCategory) where T : IBaseComponent, IPersistPropertyBag { var componentCategories = component.GetStageCategories(); if (!containingStageCategory.IsCompatibleWith(componentCategories)) { throw new ArgumentException( $"{component.Name} is made for any of the {componentCategories.Aggregate(string.Empty, (names, sc) => names + ", " + sc.Name, names => names.Substring(2))} stages and is not compatible with a {containingStageCategory.Name} stage.", nameof(component)); } }
public void SetStage(EventType type) { _stageCategory = StageCategory.EVENT; _eventType = type; EventStage eventStage = GameManager.Instance.eventManager.GetEvent(type); SetIcon(eventStage.icon); // TODO: temporary info display, beautify later _infoText.gameObject.SetActive(true); _infoText.text = eventStage.eventName; _background.sprite = _eventNode; }
internal static StageCategory[] GetStageCategories <T>(this T component) where T : IBaseComponent, IPersistPropertyBag { component.EnsureIsPipelineComponent(); var stageCategories = component.GetType().GetCustomAttributes(typeof(ComponentCategoryAttribute), false) .Cast <ComponentCategoryAttribute>() .Where(a => StageCategory.IsKnownCategoryId(a.Category)) .Select(a => StageCategory.FromKnownCategoryId(a.Category)) .ToArray(); if (!stageCategories.Any()) { throw new ArgumentException( $"{component.GetType().Name} has not been associated with a pipeline stage category. Apply the ComponentCategoryAttribute with one of the stage categories available through {typeof(CategoryTypes).FullName}."); } return(stageCategories); }
private void InitializeStage(ZoneProperties properties, int stageCol, StageNode stage, StageCategory category) { switch (category) { case StageCategory.BATTLE: BattleType battleType = (BattleType)Random.Range(0, System.Enum.GetValues(typeof(BattleType)).Length - 1); stage.SetStage(battleType); InitializeCombatStage(properties, stageCol, stage, battleType); break; case StageCategory.BOSS: stage.SetStage(BattleType.BOSS); InitializeCombatStage(properties, stageCol, stage, BattleType.BOSS); break; case StageCategory.EVENT: EventType eventType = (EventType)Random.Range(0, System.Enum.GetValues(typeof(EventType)).Length); stage.SetStage(eventType); break; default: Debug.LogWarning("No category found when initializing stage."); break; } }