示例#1
0
    void Synth(DNA cell)
    {
        cell.energy += (int)Mathf.Round(cell.transform.position.y * LevelManager.Instance.SynthMultipler);
        cell.controller++;

        cell.ChangeColor(-0.1f, 0.1f, -0.1f);
    }
示例#2
0
    void Move(DNA cell)
    {
        if (!cell.Obstacle && Field.Instance.IsFree(cell.Pos + cell.sensor))                                                  // Пусто
        {
            cell.Pos = cell.Pos + cell.sensor;
            cell.controller++;
            return;
        }
        if (!cell.Obstacle)
        {
            cell.controller += 2;
            return;
        }
        else if (cell.Obstacle.gameObject.layer == LayerMask.NameToLayer("side"))         // Край
        {
            var newx = cell.Pos.x + cell.sensor.x;
            if (newx < 0)
            {
                newx = 99;
            }
            if (newx > 99)
            {
                newx = 0;
            }
            cell.Pos = new Vector2i(newx, cell.sensor.y);
            cell.controller++;
            return;
        }
        else if (cell.Obstacle.gameObject.layer == LayerMask.NameToLayer("bot"))     // бот
        {
            var targetCalories = Registry.Instance.Get(cell.Obstacle).energy;
            if (Registry.Instance.Get(cell.Obstacle.gameObject).Dead)
            {
                cell.energy     += targetCalories;
                cell.controller += 3;
            }
            else
            {
                if (CheckRelations(cell))
                {
                    cell.controller += 4;
                    cell.energy     += targetCalories / 2;
                }
                else
                {
                    cell.controller += 5;
                    cell.energy     += targetCalories;
                }
            }

            Registry.Instance.Remove(cell.Obstacle.gameObject);
            cell.Pos = cell.Pos + cell.sensor;
            cell.ChangeColor(1, -1, -1);
            return;
        }
    }
示例#3
0
    void Eat(DNA cell)
    {
        if (!cell.Obstacle)                                                  // Пусто
        {
            cell.controller++;
            return;
        }

        if (cell.Obstacle.layer == LayerMask.NameToLayer("bot"))     // бот
        {
            var targetCalories = Registry.Instance.Get(cell.Obstacle).energy;

            if (Registry.Instance.Get(cell.Obstacle).Dead)
            {
                cell.energy     += targetCalories;
                cell.controller += 3;
            }
            else
            {
                if (CheckRelations(cell))
                {
                    cell.controller += 4;
                    cell.energy     += targetCalories / 2;
                }
                else
                {
                    cell.controller += 5;
                    cell.energy     += targetCalories;
                }
            }

            Registry.Instance.Remove(cell.Obstacle.gameObject);
            cell.ChangeColor(1, -1, -1);

            return;
        }
    }