Пример #1
0
    /// <summary>
    /// Adds an attack command to the player's units via the
    /// party manager when an input is pressed.
    /// </summary>
    public override IEnumerator ExecuteAction()
    {
        Ray        r         = Camera.main.ScreenPointToRay(Input.mousePosition);
        int        layerMask = 1 << _enemyLayer;
        RaycastHit hit;

        Debug.DrawRay(r.origin, r.direction * RAYCAST_LENGTH, Color.red, 5f);

        if (Physics.Raycast(r, out hit, RAYCAST_LENGTH, layerMask))
        {
            //Get targetted unit
            Unit enemy = hit.transform.GetComponent <Unit>();
            for (int i = 0; i < GameManager.Instance.PlayerParty.ActiveUnits.Count; i++)
            {
                //Queue attack command from unit to target
                Unit          unit          = GameManager.Instance.PlayerParty.ActiveUnits[i];
                AttackHandler attackHandler = unit.GetComponent <AttackHandler>();
                if (attackHandler && !attackHandler.isAttacking)
                {
                    GameManager.Instance.PlayerParty.AddCommand(new AttackCmd(unit, enemy));
                }
            }

            yield return(new WaitForEndOfFrame());
        }

        yield return(null);
    }
Пример #2
0
        internal void AttackMobs()
        {
            if (MobsPanel.CheckedIndices.Count < 1)
            {
                LogPanel.Log("E: Choose at least 1 mob to attack");
                return;
            }

            // sort by value - ie., sort by room number
            List <AttackHandler.MobArg> mobs = new List <AttackHandler.MobArg>();

            foreach (int i in MobsPanel.CheckedIndices)
            {
                int    id   = int.Parse(MobsPanel.Mobs[i].SubItems[1].Text);
                int    room = int.Parse(MobsPanel.Mobs[i].SubItems[2].Text);
                string name = MobsPanel.Mobs[i].SubItems[0].Text;
                AttackHandler.MobArg arg = new AttackHandler.MobArg(id, room, name);
                if (!mobs.Contains(arg))
                {
                    mobs.Add(arg);
                }
            }
            mobs.Sort(
                delegate(
                    AttackHandler.MobArg first,
                    AttackHandler.MobArg second)
            {
                return(second.RoomId.CompareTo(first.RoomId));
            }
                );

            SetUpHandler();
            AttackHandler.BeginMobs(mobs);
        }
Пример #3
0
    public RangedAttacks RangedAttack(AttackHandler handler, ref RangedAttacks prefab, RangedAttacks currentAttack, InputAction.CallbackContext ctx)
    {
        if (handler.playerManager.energy.currentEnergy - energyCost > 0 && !prefab.coolingdown)
        {
            if (ctx.started)
            {
                GameObject attack = ObjectPooler.SharedInstance.GetPooledObject(tag);
                attack.transform.position = handler.transform.position;
                attack.transform.rotation = handler.transform.rotation;
                attack.SetActive(true);

                currentAttack           = attack.GetComponent <RangedAttacks>();
                currentAttack.performer = handler.caster;
                return(currentAttack);
            }


            if (currentAttack != null)
            {
                if (ctx.performed)
                {
                    currentAttack.OnTriggered(handler.caster);
                    return(currentAttack);
                }
                if (ctx.canceled)
                {
                    currentAttack.OnReleased();
                }
            }
            return(currentAttack);
        }
        return(null);
    }
Пример #4
0
        // Callback function invoked when the cooldown timer is finished.
        private void CooldownFinished(float secondsOverflow)
        {
            // Choose a random attack.
            AttackHandler attack = UtilRandom.GetRandomElement(attacks);

            // Execute the attack.
            attack(boss);
        }
Пример #5
0
        private void Awake()
        {
            _attackHandler = GetComponent <AttackHandler>();

            _stats = GetComponent <StatsBehaviour>();

            Item.OnPickUp += AddItem;
        }
Пример #6
0
    void Awake()
    {
        Player player = FindObjectOfType <Player>();

        _attackHandler = player.GetComponent <AttackHandler>();

        _attackHandler.OnProjectileFired += ShakeCamera;
    }
Пример #7
0
    protected virtual void raiseOnAttack()
    {
        AttackHandler handler = onAttack;

        if (handler != null)
        {
            handler();
        }
    }
Пример #8
0
        public void StartHandler(Handlers Handler, out IBotHandler HandlerOut, params object[] Params)
        {
            HandlerOut = null;

            #region Null checks
            if (this == null)
            {
                return;
            }
            if (this.DRoomUser == null)
            {
                return;
            }

            Room Room = this.DRoom;

            if (Room == null)
            {
                return;
            }
            #endregion

            if (this.ActiveHandlers.ContainsKey(Handler))
            {
                IBotHandler I;
                this.ActiveHandlers.TryRemove(Handler, out I);
            }


            switch (Handler)
            {
            case Handlers.TELEPORT:
                HandlerOut       = new TeleportHandler(this, (Item)Params[0]);
                this.Teleporting = true;
                break;

            case Handlers.ATTACK:
                HandlerOut     = new AttackHandler(this, (GameClient)Params[0]);
                this.Attacking = true;
                break;

            case Handlers.DELIVERY:
                HandlerOut = new DeliveryHandler(this);
                break;

            case Handlers.FOODSERVE:
                HandlerOut = new FoodServeHandler(this, (GameClient)Params[0], (Food.Food)Params[1], (Point)Params[2], (Point)Params[3]);
                break;

            default:

                break;
            }

            this.ActiveHandlers.TryAdd(Handler, HandlerOut);
        }
Пример #9
0
    public override void OnGroundClick(Vector3 target)
    {
        AttackHandler attackHandler = GetComponent <AttackHandler>();

        if (attackHandler != null)
        {
            GetComponent <AttackHandler>().AbortAttack();
        }

        Walk(target);
    }
Пример #10
0
 public static AttackHandler getAttackHandler()
 {
     try {
         AttackHandler attackHandler = GameObject.Find("Event Handler").GetComponent <AttackHandler>();
         return(attackHandler);
     }
     catch (Exception e) {
         GameObject eventHandler = new GameObject("Event Handler");
         eventHandler.transform.SetParent(GameObject.Find("MapGenerator").transform);
         return(eventHandler.AddComponent <AttackHandler>());
     }
 }
Пример #11
0
        internal void AttackRooms()
        {
            List <int> rooms = new List <int>();

            foreach (int i in RoomsPanel.CheckedIndices)
            {
                rooms.Add(int.Parse(RoomsPanel.Rooms[i].SubItems[1].Text));
            }
            rooms.Sort();

            SetUpHandler();
            AttackHandler.BeginRooms(rooms);
        }
Пример #12
0
    void Start()
    {
        Transform transform = GetComponent <Transform>();

        tankTurretTransform = GetChildTransform(transform, "UpperBody");
        if (tankTurretTransform == null)
        {
            tankTurretTransform = GetChildTransform(transform, "Turret_Body");
        }
        defaultRotation = tankTurretTransform.eulerAngles;


        attackHandler = gameObject.GetComponent <AttackHandler>();
        SetTargetRotation(transform.root.eulerAngles.y);
    }
Пример #13
0
    public void attack(BaseUnit defender)
    {
        if (defender.ownerID == this.ownerID)
        {
            return;
        }
        int dist = System.Math.Abs(defender.xPos - this.xPos) + System.Math.Abs(defender.yPos - this.yPos);

        if (dist <= this.RNG && this.currAP >= this.attackCost)
        {
            AttackHandler.Instance().attackEvent.raise(0, this, new Dictionary <string, object> {
                { "Attacker", this },
                { "Defender", defender }
            });
            this.currAP -= attackCost;
        }
    }
Пример #14
0
        internal void AttackAreas()
        {
            if (RoomsPanel.CheckedRooms.Count < 1)
            {
                LogPanel.Log("E: Choose at least 1 area to cover");
                return;
            }

            Dictionary <int, string> rooms = new Dictionary <int, string>();

            foreach (int i in RoomsPanel.CheckedIndices)
            {
                rooms.Add(int.Parse(RoomsPanel.Rooms[i].SubItems[1].Text), RoomsPanel.Rooms[i].Text);
            }

            SetUpHandler();
            AttackHandler.BeginMultiArea(rooms);
        }
Пример #15
0
    public void ExecuteAction(AIUnit u)
    {
        AttackHandler attackHandler = u.GetComponent <AttackHandler>();

        if (attackHandler && attackHandler.isAttacking)
        {
        }
        else
        {
            float performActionValue = Random.Range(0f, 1f);
            if (performActionValue >= dontPerformActionRange)
            {
                if (u.Movement != null)
                {
                    Vector2 newMovePoint = Random.insideUnitCircle * u.Character.lineOfSight;
                    Vector3 newPosition  = transform.position + new Vector3(newMovePoint.x, transform.position.y, newMovePoint.y);
                    u.Movement.Move(newPosition);
                    u.IsIdle = false;
                }
            }
        }
    }
Пример #16
0
        private void SetUpHandler()
        {
            List <Account> accounts = new List <Account>();

            if (AccountsPanel.CheckedIndices.Count > 0)
            {
                foreach (int i in AccountsPanel.CheckedIndices)
                {
                    accounts.Add(AccountsPanel.Engine[i]);
                }
            }
            else if (AccountsPanel.FocusedAccount != null)
            {
                accounts.Add(AccountsPanel.Engine[AccountsPanel.FocusedAccount.Index]);
            }
            else if (AccountsPanel.Engine.Count > 0)
            {
                accounts.Add(AccountsPanel.Engine[0]);
            }

            AttackHandler.Set(accounts, Settings.AttackMode);
        }
Пример #17
0
    private static void OnAttackMissed(Unit attacker, Unit attackedEnemy, bool ranged = false, bool overClockedAttack = false)
    {
        AttackHandler attackHandler = getAttackHandler();

        attackHandler.OnAttackMissed(attacker, attackedEnemy, ranged, overClockedAttack);
    }
Пример #18
0
 private void Start()
 {
     attackHandler = transform.parent.GetComponent <AttackHandler>();
 }
Пример #19
0
 public void AddAttack(AttackBase attack)
 {
     _skillList.Add(attack);
     _AddTime += attack.AddElapsedTime;
 }
Пример #20
0
    private static void OnAttackHit(Unit attacker, Unit attackedEnemy, int damage, bool ranged = false, bool crit = false, bool overClockedAttack = false)
    {
        AttackHandler attackHandler = getAttackHandler();

        attackHandler.OnAttackHit(attacker, attackedEnemy, damage, ranged, crit, overClockedAttack);
    }
Пример #21
0
 internal void AttackArea()
 {
     SetUpHandler();
     AttackHandler.BeginArea();
 }
Пример #22
0
 public void Attack()
 {
     AttackHandler?.Invoke();
 }
Пример #23
0
 private void Awake()
 {
     health     = GetComponent <Health> ();
     controller = GetComponent <CharacterMovement> ();
     attacks    = GetComponent <AttackHandler> ();
 }
Пример #24
0
 public void Attack(Warrior warrior)
 {
     AttackHandler.Execute(this, warrior);
 }
Пример #25
0
 void Awake()
 {
     instance = this;
 }
Пример #26
0
 public void ResetAttackHandler()
 {
     p1 = BossAttackP1;
     p2 = BossAttackP2;
 }
Пример #27
0
 // Use this for initialization
 void Start()
 {
     attackHandler = GetComponent <AttackHandler>();
 }
Пример #28
0
 public void AddAttack(AttackHandler attack)
 {
     attacks.Add(attack);
 }