Beispiel #1
0
    public void updateWeedStateInTile(int i, int j, TypeWeed weed)
    {
        uint row = chunkTilesPos [i] [j].First;
        uint col = chunkTilesPos [i] [j].Second;

        riceTerrains [row, col].changeWeedState(weed);
    }
Beispiel #2
0
 public Weed(RiceTerrainTile theParent)
 {
     type            = TypeWeed.NONE;
     instance        = null;
     day             = 1;
     PenalizationDay = 0;
     _parent         = theParent;
 }
Beispiel #3
0
 public void delete()
 {
     type = TypeWeed.NONE;
     if (instance != null)
     {
         GameObject.Destroy(instance);
         instance = null;
     }
     day             = 1;
     PenalizationDay = 0;
 }
Beispiel #4
0
    public void changeWeedState(TypeWeed weed)
    {
        _weed.type = weed;
        WorldTerrain worldTerrain  = WorldTerrain.GetInstance();
        Vector3      worldPosition = worldTerrain.getTileWorldPosition((uint)this.getRow(), (uint)this.getCol());

        worldPosition.z = WorldTerrain.PLANTS_Z_LAYER;
        if (_weed.instance != null)
        {
            GameObject.Destroy(_weed.instance);
        }
        Debug.Assert(_weed != null);
        Debug.Assert(_resourcesWeed.ContainsKey(weed));
        worldPosition += _resourcesWeed [weed].transform.position;
        _weed.instance = (GameObject)GameObject.Instantiate(_resourcesWeed[weed], worldPosition, Quaternion.identity);

        if (!Tutorial_Plagas.init && !isDisabled())
        {
            _tutMan.startTuto(new Tutorial_Plagas());
        }
    }
Beispiel #5
0
    public void produceWeeds()
    {
        //return;
        foreach (int i in _currentWeed.Keys)
        {
            // --- PRODUCE NEW WEED ---- //
            if (ActionManager.GetInstance().isActionInProgressInAChunk(i))
            {
                continue;
            }

            //--GROW WEED --//
            foreach (int tile in _currentWeed[i])
            {
                _parent.growWeedOnTile(i, tile);
            }

            if (_currentWeed[i].Count < _tilesPerChunk)
            {
                float randomNumber = UnityEngine.Random.value;
                float probability  = WEED_PROBABILITY_CHUNK;
                if (_parent.hasChunkAppliedHerbicide(i))
                {
                    probability *= WEED_HERBICIDE_MODIFIER;
                }
                if (_parent.hasChunkAppliedFangueig(i))
                {
                    probability *= WEED_FANGUEJAR_MODIFIER;
                }
                probability *= (1 - ((float)InvestigationManager.GetInstance().getBadWeedDecreaseBonus() / 100.0f));
                if (randomNumber <= probability)
                {
                    uint randomTile = (uint)((UnityEngine.Random.value) * (float)(_tilesPerChunk));
                    while (_currentWeed[i].Contains(randomTile))
                    {
                        randomTile = (uint)((UnityEngine.Random.value) * (float)(_tilesPerChunk));
                        foreach (uint tile in _currentWeed[i])
                        {
                            Debug.Log("tiles::" + tile);
                        }
                    }
                    int      randomWeed = (int)((UnityEngine.Random.value) * (float)(TYPES_OF_WEED - 1));
                    TypeWeed weed       = TypeWeed.NONE;
                    switch (randomWeed)
                    {
                    case 0:
                        weed = TypeWeed.WILD_RICE_PHASE_1;
                        break;

                    case 1:
                        weed = TypeWeed.CIPERACEA;
                        break;
                    }
                    _parent.updateWeedStateInTile(i, (int)randomTile, weed);
                    _currentWeed[i].Add(randomTile);
                }
            }
            // --- EXPAND WEED ---- //
            if (_currentWeed[i].Count < _tilesPerChunk)
            {
                float randomNumber = UnityEngine.Random.value;
                float probability  = WEED_PROBABILITY_EXPANSION;
                if (_parent.hasChunkAppliedHerbicide(i))
                {
                    probability *= WEED_HERBICIDE_MODIFIER;
                }
                if (_parent.hasChunkAppliedFangueig(i))
                {
                    probability *= WEED_FANGUEJAR_MODIFIER;
                }
                probability *= (1 - ((float)InvestigationManager.GetInstance().getBadWeedDecreaseBonus() / 100.0f));
                if (randomNumber <= probability)
                {
                    uint randomTile = (uint)((UnityEngine.Random.value) * (float)(_tilesPerChunk));
                    while (_currentWeed[i].Contains(randomTile))
                    {
                        randomTile = (uint)((UnityEngine.Random.value) * (float)(_tilesPerChunk));
                    }
                    int      randomWeed = (int)((UnityEngine.Random.value) * (float)(TYPES_OF_WEED - 1));
                    TypeWeed weed       = TypeWeed.NONE;
                    switch (randomWeed)
                    {
                    case 0:
                        weed = TypeWeed.WILD_RICE_PHASE_1;
                        break;

                    case 1:
                        weed = TypeWeed.CIPERACEA;
                        break;
                    }
                    _parent.updateWeedStateInTile(i, (int)randomTile, weed);
                    _currentWeed[i].Add(randomTile);
                }
            }
        }
    }
 public WeedData(TypeWeed type, int day, int penalizationDay)
 {
     Type            = type;
     Day             = day;
     PenalizationDay = penalizationDay;
 }
Beispiel #7
0
 //this one is for loading
 public void changeWeedState(TypeWeed weed, int day, int penalizationDay)
 {
     _weed.day             = day;
     _weed.PenalizationDay = penalizationDay;
     changeWeedState(weed);
 }