Esempio n. 1
0
    private void OnStackInspected(object sender, EventArgs args)
    {
        UnitStackView view = (UnitStackView)sender;

        _unitTypeView.SetModel(view.GetModel().GetUnitType());
        _unitTypeView.gameObject.SetActive(true);
    }
Esempio n. 2
0
    private void ProcessDivinePhase()
    {
        UnitStackView        signalView = null;
        List <UnitStackView> views      = new List <UnitStackView>(_attackerStackViews.Values);

        for (int i = 0; i < views.Count; i++)
        {
            if (views[i].GetModel().IsAffectedBy("Heal"))
            {
                signalView = views[i];
                views[i].PlayHealAnimation();
            }
        }
        views = new List <UnitStackView>(_defenderStackViews.Values);
        for (int i = 0; i < views.Count; i++)
        {
            if (views[i].GetModel().IsAffectedBy("Heal"))
            {
                signalView = views[i];
                views[i].PlayHealAnimation();
            }
        }
        if (signalView != null)
        {
            signalView.HealAnimationCompleted += OnHealAnimationPlayedOut;
        }
        else
        {
            ProcessCombatTurn();
        }
    }
Esempio n. 3
0
    private void CreateUnitStackViewsForSide(GameObject[] spawnPoints)
    {
        bool             areProcessingAttackers = spawnPoints == _attackersSpawnPoints;
        List <UnitStack> stacks = _model.GetUnitStacks(areProcessingAttackers);
        Dictionary <UnitStack, UnitStackView> stackViews = areProcessingAttackers ? _attackerStackViews : _defenderStackViews;
        int offset = areProcessingAttackers ? _attackerStackViewsOffset : _defenderStackViewsOffset;

        int count = Mathf.Min(stacks.Count - offset, spawnPoints.Length);

        for (int i = 0; i < count; i++)
        {
            UnitStack currentStack = stacks[i + offset];

            UnitStackView view = (UnitStackView)Instantiate(_unitStackViewPrefab, spawnPoints[i].transform.position, Quaternion.identity);
            view.transform.parent = spawnPoints[i].transform;
            view.SetModel(currentStack);
            if (currentStack.GetProvinceToRetreat().GetOwnersFaction().IsPC())
            {
                view.StackSelected += OnPlayerSelectedDefendingUnitStack;
            }
            view.ExplosionAnimationCompleted += OnExplosionAnimationCompleted;
            view.StackInspected       += OnStackInspected;
            view.StackInspectionEnded += OnUnitTypeInspectionEnded;
            stackViews[currentStack]   = view;
        }
    }
Esempio n. 4
0
    /// <summary>
    /// Updates stack views after heling animation(s) played out
    /// </summary>
    private void OnHealAnimationPlayedOut(object sender, EventArgs args)
    {
        UnitStackView view = (UnitStackView)sender;

        view.HealAnimationCompleted -= OnHealAnimationPlayedOut;
        UpdateUnitStackViews();
        _model.PerformEndOfCombatCheck();
        if (!_model.IsCombatOver())
        {
            ProcessCombatTurn();
        }
    }