private void OnStackInspected(object sender, EventArgs args) { UnitStackView view = (UnitStackView)sender; _unitTypeView.SetModel(view.GetModel().GetUnitType()); _unitTypeView.gameObject.SetActive(true); }
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(); } }
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; } }
/// <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(); } }