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); } }
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); }
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); }