Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
    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;
    }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
    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;
        }
    }