Пример #1
0
        /// <summary>
        /// Get called whenever an OnHighlightClick is fired. If it is possible it will attack an enemy unit.
        /// </summary>
        /// <param Name="evt"></param>
        public void BattlePreparation(OnHighlightClick evt)
        {
            if (evt.highlight != null)
            {
                HighlightObject highlightObj = evt.highlight;
                if (highlight.IsHighlightOn && !movement.NeedsMoving &&
                    highlightObj.highlightTypeActive == HighlightTypes.highlight_attack)
                {
                    UnitGameObject attackingUnit = highlight.UnitSelected;
                    UnitGameObject defendingUnit = highlightObj.Tile.unitGameObject;


                    if (!attackingUnit.UnitGame.HasAttacked)
                    {
                        if (!attackingUnit.UnitGame.HasMoved ||
                            (attackingUnit.UnitGame.HasMoved && attackingUnit.UnitGame.CanAttackAfterMove))
                        {
                            if (TileHelper.IsTileWithinRange(attackingUnit.transform.position,
                                                             defendingUnit.transform.position, attackingUnit.UnitGame.AttackRange))
                            {
                                attackingUnit.UnitGame.HasAttacked = true;
                                attackingUnit.UnitGame.HasMoved    = true;
                                attackingUnit.UnitGame.PlaySound(UnitSoundType.Attack);

                                highlight.ClearHighlights();

                                // Check if units are faces the wrong way
                                FacingDirectionUnits(attackingUnit, defendingUnit);

                                // Dispatch the animation fight event. But set the needsanimating to true.
                                OnAnimFight fight = new OnAnimFight();
                                fight.attacker       = attackingUnit;
                                fight.defender       = defendingUnit;
                                fight.needsAnimating = true;
                                EventHandler.dispatch(fight);
                            }
                            else
                            {
                                Notificator.Notify("Move to this unit to attack!", 1f);
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Gets called whenever an OnHighlightClick event is fired.
        /// </summary>
        /// <param Name="evt"></param>
        public void ClickedOnHightLight(OnHighlightClick evt)
        {
            if (evt.highlight != null && IsHighlightOn)
            {
                HighlightObject highlight = evt.highlight;

                if (highlight.highlightTypeActive == HighlightTypes.highlight_move)
                {
                    UnitSelected.UnitGame.HasMoved = true;
                    movement.nodeList = movement.CalculateShortestPath(UnitSelected.Tile,
                                                                       highlight.Tile, false);
                    movement.StartTimeMoving = Time.time;
                    movement.NeedsMoving     = true;
                    movement.FacingDirectionMovement(UnitSelected, movement.nodeList[0].Tile);
                    UnitSelected.UnitGame.PlaySound(UnitSoundType.Move);
                    ClearHighlights();
                }
            }
        }