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