Exemple #1
0
    protected override void OnRabitHit(RabbitController rabit)
    {
        animateController = rabit.gameObject.GetComponent <AnimateController>();
        RabbitStats stats = rabit.gameObject.GetComponent <RabbitStats>();

        if (stats.isDead)
        {
            return;
        }

        if (rabit.isVulnerable)
        {
            CollectedHide();
            if (stats.rabbitSize == 0)
            {
                stats.isDead = true;
                die();
            }
            else
            {
                stats.rabbitSize = 0;
                makeRabbitSmaller(rabit);
                rabit.isVulnerable = false;
                rabit.gameObject.GetComponent <FlashObject>().startBlinking();
            }
        }
    }
Exemple #2
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        //Намагаємося отримати компонент кролика
        RabbitController rabit = collider.GetComponent <RabbitController>();

        //Впасти міг не тільки кролик
        if (rabit == null)
        {
            return;
        }

        animateController = rabit.gameObject.GetComponent <AnimateController>();
        RabbitStats stats = rabit.gameObject.GetComponent <RabbitStats>();

        if (rabit.isVulnerable)
        {
            if (stats.rabbitSize == 0)
            {
                die();
            }
            else
            {
                stats.rabbitSize = 0;
                makeRabbitSmaller(rabit);
                rabit.isVulnerable = false;
                rabit.gameObject.GetComponent <FlashObject>().startBlinking();
            }
        }
    }
Exemple #3
0
 public void onRabitDeath(RabbitController rabit)
 {
     current.cameraWhichLooksForRabbit.followRabbit = false;
     rabit.enabled = false;
     cameraWhichLooksForRabbit.playSoundRabbitDies();
     StartCoroutine(MoveAtTheBeginningLater(rabit));
 }
Exemple #4
0
 private void Awake()
 {
     Hungry     = false;
     WantToMate = false;
     TargetFood = null;
     TargetMate = null;
 }
Exemple #5
0
    System.Collections.IEnumerator MoveAtTheBeginningLater(RabbitController rabit)
    {
        yield return(new WaitForSeconds(4f));

        LevelController.current.cameraWhichLooksForRabbit.followRabbit = true;
        rabit.enabled = true;
        rabit.gameObject.GetComponent <AnimateController>().animate("die", false);


        if (SceneManager.GetActiveScene().name == "chooseLevel")
        {
            moveRabbitToTheStartingPosition(rabit);
            yield break;
        }
        else
        {
            if (lives == 0)
            {
                GameObject parent = UICamera.first.transform.parent.gameObject;
                NGUITools.AddChild(parent, lostPrefab);
            }
            else
            {
                decrementLives();
                moveRabbitToTheStartingPosition(rabit);

                RabbitStats rabbitStats = rabit.gameObject.GetComponent <RabbitStats>();
                rabbitStats.isDead = false;
            }
        }
    }
Exemple #6
0
    void OnTriggerEnter2D(Collider2D coll)
    {
        GameObject rabbit = coll.gameObject;

        //Намагаємося отримати компонент кролика
        RabbitController rabbitController = rabbit.GetComponent <RabbitController>();

        //Впасти міг не тільки кролик
        if (rabbitController == null)
        {
            return;
        }

        if (rabbit.GetComponent <RabbitStats>().isDead)
        {
            return;
        }


        if (rabbit.GetComponent <Rigidbody2D>().velocity.y >= 0)
        {
            return;
        }

        this.gameObject.transform.parent.gameObject.GetComponent <Enemy>().DieFromRabbit();
        LevelController.current.cameraWhichLooksForRabbit.stopSoundEnemyAttacks();
        rabbit.GetComponent <Rigidbody2D>().AddForce(Vector3.up * 12, ForceMode2D.Impulse);
    }
Exemple #7
0
 private void initEverythingBeforehand()
 {
     rabbitStats       = LevelController.getRabbit().GetComponent <RabbitStats>();
     animateController = LevelController.getRabbit().GetComponent <AnimateController>();
     rabbitController  = LevelController.getRabbit().GetComponent <RabbitController>();
     base.attacking    = false;
     base.running      = false;
 }
    public IEnumerator RunAway(MovementController ctr)
    {
        RabbitController rtr = ctr as RabbitController;

        Transform from = this.danger ?? this.snake;

        yield return(rtr.RunAway(from));
    }
Exemple #9
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        RabbitController rabit = collider.GetComponent <RabbitController>();

        if (rabit != null)
        {
            SceneManager.LoadScene("level1");
        }
    }
Exemple #10
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        RabbitController rabit = collider.GetComponent <RabbitController>();

        if (rabit != null)
        {
            this.OnRabitHit(rabit);
        }
    }
    public IEnumerator Wander(MovementController ctr, UtilityAction act)
    {
        RabbitController rtr = ctr as RabbitController;

        yield return(rtr.Wander());

        act.isStoppable = true;
        yield return(rtr.Rest());
    }
Exemple #12
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        RabbitController rabit = collider.GetComponent <RabbitController>();

        if (rabit != null)
        {
            showWonPanel();
        }
    }
Exemple #13
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        if (!secondLvlIsAvailable)
        {
            return;
        }

        RabbitController rabit = collider.GetComponent <RabbitController>();

        if (rabit != null)
        {
            SceneManager.LoadScene("level2");
        }
    }
Exemple #14
0
    protected override void OnRabitHit(RabbitController rabit)
    {
        CollectedHide();

        RabbitStats stats = rabit.gameObject.GetComponent <RabbitStats>();

        if (stats.rabbitSize == 1)
        {
            return;
        }
        else
        {
            stats.rabbitSize = 1;
            makeRabbitBigger(rabit);
        }
    }
    public override Brain.Action TakeDecision(Brain brain)
    {
        if (brain.Hungry)         // Find food is the priority
        {
            return(Brain.Action.SearchFood);
        }
        else if (brain.TargetMate != null)         // If another mate found while searching
        {
            return(Brain.Action.WaitMate);
        }

        if (brain.Movement.PositionReached() && !brain.HasCheckedArea)
        {
            brain.HasCheckedArea = true;
            List <RabbitController> potentialPartners = brain.Eyes.GetRabbitsInSight();

            RabbitController closestValidMate = null;
            float            minDistance      = float.MaxValue;
            foreach (RabbitController rabbit in potentialPartners)
            {
                if (rabbit.Grabbable.Grabbed)
                {
                    continue;
                }

                if (!rabbit.ReadyToMate || !rabbit.FreeToMate)
                {
                    continue;
                }

                float distance = (brain.transform.position - rabbit.transform.position).sqrMagnitude;
                if (distance < minDistance && brain.Movement.CanReachPosition(rabbit.transform.position))
                {
                    closestValidMate = rabbit;
                    minDistance      = distance;
                }
            }

            if (closestValidMate)
            {
                brain.TargetMate = closestValidMate;
                closestValidMate.Brain.TargetMate = brain.GetComponent <RabbitController>();
                return(Brain.Action.JoinMate);
            }
        }
        return(brain.CurrentAction);
    }
Exemple #16
0
    /**
     * Initializes the island by instancing a certain amount of
     * rabbits in the center of the island
     */
    public void Init(int count, int radius)
    {
        Clear();
        ColonySurviveTime = 0.0f;
        List <Vector2Int> cells = _grid.GetCellsInRadius(radius);

        for (int i = 0; i < count && cells.Count > 0; i++)
        {
            int        index = Random.Range(0, cells.Count);
            Vector2Int cell  = cells[index];

            RabbitController rabbit = SpawnRabbit(cell);
            rabbit.SetAge(Random.Range(0.0f, InitialMaxAge));
            cells.Remove(cell);
        }

        onRabbitCountChange?.Invoke(this, EventArgs.Empty);
    }
Exemple #17
0
    //Стандартна функція, яка викличеться,
    //коли поточний об’єкт зіштовхнеться із іншим
    void OnTriggerEnter2D(Collider2D collider)
    {
        //Намагаємося отримати компонент кролика
        RabbitController rabit = collider.GetComponent <RabbitController>();

        //Впасти міг не тільки кролик
        if (rabit != null)
        {
            RabbitStats stats = rabit.gameObject.GetComponent <RabbitStats>();
            if (stats.rabbitSize == 1)
            {
                stats.rabbitSize = 0;
                makeRabbitSmaller(rabit);
            }

            LevelController.current.onRabitDeath(rabit);
        }
    }
Exemple #18
0
    /*
     * Executed when a rabbit is dropped
     */
    private void OnRabbitDrop(object sender, Grabbable.DropData data)
    {
        if (sender is Grabbable gb)
        {
            RabbitController rabbit = gb.GetComponent <RabbitController>();
            if (!rabbit)
            {
                return;
            }

            Vector2Int cell = data.Cell;

            if (!_grid.IsValidCell(cell))
            {
                rabbit.Kill();
            }
        }
    }
Exemple #19
0
    public List <RabbitController> GetRabbitsInSight()
    {
        RabbitController        self     = GetComponent <RabbitController>();
        float                   distance = Data.PerceptionMaxDistance;
        List <RabbitController> results  = new List <RabbitController>();

        Collider[] colliders = Physics.OverlapSphere(transform.position, distance);

        foreach (Collider collider in colliders)
        {
            RabbitController rabbit = collider.GetComponent <RabbitController>();
            if (rabbit && rabbit != self)
            {
                results.Add(rabbit);
            }
        }

        return(results);
    }
Exemple #20
0
    public void Grab(object sender, HandController.GrabData data)
    {
        if (_grabbed)
        {
            return;
        }
        if (!data.Valid)
        {
            return;
        }

        // TODO : Later, take in account rabbit targets
        CarrotController carrot;
        RabbitController rabbit = data.Rabbit;

        Grabbable grabbed;

        if (!rabbit)
        {
            carrot = _carrots.GetCarrotAt(data.Cell);
            if (!carrot)
            {
                return;
            }
            grabbed = carrot.Grabbable;
        }
        else
        {
            grabbed = rabbit.Grabbable;
        }

        if (!grabbed)
        {
            return;
        }

        grabbed.Grab(data.Cell);

        _grabbed = grabbed;

        _grabHandle.connectedBody   = grabbed.Rigidbody;
        _grabHandle.connectedAnchor = grabbed.GrabHandle.localPosition;
    }
Exemple #21
0
    /*
     * Spawns a rabbit on a cell position
     * Returns the new rabbit or null if the cell is invalid
     */
    private RabbitController SpawnRabbit(Vector2Int cell)
    {
        if (!_grid.IsValidCell(cell))
        {
            return(null);
        }
        Vector3    position = _grid.GetRandomPosition(cell);
        GameObject obj      = Instantiate(RabbitPrefab, position, Quaternion.AngleAxis(Random.Range(0.0f, 360.0f), transform.up));

        RabbitController rabbit = obj.GetComponent <RabbitController>();

        _aliveRabbits.Add(rabbit);

        rabbit.onDead += OnRabbitDeath;
        rabbit.Reproduction.onGiveBirth += OnGiveBirth;
        rabbit.Grabbable.onDrop         += OnRabbitDrop;

        onRabbitCountChange?.Invoke(this, EventArgs.Empty);

        return(rabbit);
    }
Exemple #22
0
    private void UpdateTargetRabbit()
    {
        RabbitController newTarget = null;
        RaycastHit       hit;

        if (Physics.Raycast(_mouseRay, out hit, 100, RabbitsLayer))
        {
            newTarget = hit.collider.GetComponent <RabbitController>();
        }

        if (newTarget != TargetRabbit)
        {
            TargetRabbit = newTarget;

            onTargetRabbitChange?.Invoke(this, new GrabData
            {
                Cell     = TargetCell,
                Position = _grid.GetPosition(TargetCell),
                Valid    = TargetValid,
                Rabbit   = TargetRabbit
            });
        }
    }
 // Use this for initialization
 void Start()
 {
     player = gameObject.GetComponentInParent<RabbitController> ();
 }
Exemple #24
0
 protected override void OnRabitHit(RabbitController rabit)
 {
     CollectedHide();
     LevelController.current.crystalWasCollected(type);
 }
Exemple #25
0
 private void moveRabbitToTheStartingPosition(RabbitController rabit)
 {
     rabit.transform.position = this.startingPosition;
 }
 // Use this for initialization
 void Start()
 {
     player = gameObject.GetComponentInParent <RabbitController> ();
 }
Exemple #27
0
 protected override void OnRabitHit(RabbitController rabit)
 {
     LevelController.current.addALife();
     CollectedHide();
 }
 private void Awake()
 {
     m_Character = GetComponent<RabbitController>();
     InputAggregator.Instance.OnMoveEvent += OnMoveEvent;
     InputAggregator.Instance.OnJumpEvent += OnJumpEvent;
 }
Exemple #29
0
 protected override void OnRabitHit(RabbitController rabit)
 {
     collected = true;
     LevelController.current.fruitWasCollected();
     CollectedHide();
 }
Exemple #30
0
 protected override void OnRabitHit(RabbitController rabit)
 {
     CollectedHide();
     LevelController.current.coinCollected();
 }
Exemple #31
0
    private void makeRabbitSmaller(RabbitController rabit)
    {
        Transform transgormToChange = rabit.gameObject.GetComponent <Transform>();

        transgormToChange.localScale = new Vector3(transgormToChange.localScale.x / 2, transgormToChange.localScale.y / 2, transgormToChange.localScale.z);
    }
Exemple #32
0
    public void OnClick()
    {
        RabbitController rabbit = FindObjectOfType <RabbitController>();

        rabbit.JumpTo(this);
    }