Esempio n. 1
0
    public void SetReaction(EReaction pReaction, float pDuration = -1)
    {
        spriteRend.enabled = pReaction != EReaction.None;
        content.sprite     = GetSprite(pReaction);
        if (CurrentReaction == pReaction)
        {
            return;
        }
        CurrentReaction = pReaction;

        if (pDuration > 0)
        {
            DoInTime(() => SetReaction(EReaction.None), pDuration);
        }
    }
Esempio n. 2
0
    private Sprite GetSprite(EReaction pReaction)
    {
        switch (pReaction)
        {
        case EReaction.None:
            return(null);

        case EReaction.Trigger:
            return(spriteTrigger);

        case EReaction.What:
            return(spriteWhat);

        case EReaction.Coffee:
            return(spriteCoffee);

        case EReaction.Build:
            return(spriteBuild);
        }
        return(null);
    }
Esempio n. 3
0
    private void Evaluate()
    {
        //Debug.Log("Evaluate ");

        attackTarget = null;
        targetPos    = null;
        attack       = false;
        idle         = false;

        if (debug_idle)
        {
            Idle();
        }


        var playerHit = Physics2D.CircleCast(transform.position, sightRange, Vector2.zero, 0, game.Layers.Player);
        //todo: only if he has G

        EReaction reaction = EReaction.None;

        if (CheckTrueNews())
        {
            reaction = EReaction.What;
        }
        else if (CheckPlayer())
        {
            reaction = EReaction.Trigger;
        }
        else if (WasBrodcastedRecently())
        {
            attackTarget = lastTowerNoticed;
            reaction     = EReaction.Trigger;
            attack       = true;
        }
        else
        {
            if (Random.Range(0, 1f) > 0.5f)
            {
                Idle();
                //todo: he doesnt stop
                //Debug.Log("Idle");
            }
            else
            {
                float ranomX = Random.Range(-attackRange * 2, attackRange * 2);
                float ranomY = Random.Range(-attackRange * 2, attackRange * 2);
                targetPos = transform.position + new Vector3(ranomX, ranomY, 0);
                //Debug.Log("Mingle");
            }
        }

        if (attack && attackTarget != null && GetDistanceTo(attackTarget.GetPosition()) < attackRange)
        {
            Attack(attackTarget);
        }

        bubble.SetReaction(reaction);

        if (reaction == EReaction.Trigger)
        {
            game.SoundManager.PlaySound(SoundManager.ESound.eAgro);
        }


        DoInTime(Evaluate, evaluateFrequency);
    }