Exemplo n.º 1
0
    void Start()
    {
        _worldPlane      = WorldPlane.Get();
        _block           = GetComponent <BlockRelative>().block;
        _audioSource     = GetComponent <AudioSource>();
        _cityWoodcutters = CityWoodcutters.Get();

        var rotation = new Vector3(0, Random.value * 360, 0);

        var woodcutterTemplate = woodcutterTemplates[Random.Range(0, woodcutterTemplates.Length)];
        var woodcutter         = Instantiate(woodcutterTemplate);

        woodcutter.transform.SetParent(transform, false);
        woodcutter.transform.Rotate(rotation);
    }
Exemplo n.º 2
0
    private void TrySpawnBoat()
    {
        if (_boatCount == 1 && Random.value > .1f)
        {
            return;
        }
        if (_boatCount == 2 && Random.value > .05f)
        {
            return;
        }
        if (_boatCount == 3 && Random.value > .01f)
        {
            return;
        }
        if (_boatCount == 4 && Random.value > .001f)
        {
            return;
        }
        if (_boatCount == 5 && Random.value > .0001f)
        {
            return;
        }
        if (_boatCount == 6 && Random.value > .00001f)
        {
            return;
        }
        if (_boatCount == 7 && Random.value > .000001f)
        {
            return;
        }
        if (_boatCount == 8 && Random.value > .0000001f)
        {
            return;
        }
        if (_boatCount == 9 && Random.value > .00000001f)
        {
            return;
        }

        if (FeatureToggles.Get().woodcutters)
        {
            var cityWood = CityWoodcutters.Get();
            if (!cityWood.RequireWood(BoatCost))
            {
                return;
            }
            cityWood.ConsumeWood(BoatCost);
        }

        var waterBlock = _worldPlane.GetWaterBlocks()
                         .Where(block =>
        {
            var blockPosition = block.GetGridPosition();

            return(block.IsGroundLevel() &&
                   _worldPlane.GetBlocksWithDocks()
                   .Any(dock => Vector3.Distance(dock.GetGridPosition(), blockPosition) < 3f));
        })
                         .OrderBy(_ => Random.value)
                         .First();

        var boat         = Instantiate(boatTemplate);
        var boatPosition = _worldPlane.ToRealCoordinates(waterBlock.GetGridPosition());

        boatPosition.y          = 1.164f;
        boat.transform.position = boatPosition;

        _boatCount += 1;
    }