예제 #1
0
    //作物データセット
    public void SetFieldData(Plant[] pls)
    {
        myField = pls;
        for (int i = 0; i < pls.Length; i++)
        {
            switch (pls[i].plantState)
            {
            case PlantState.None:
                TileManager.GetInstance().ReWritePlantTile(myField[i].plantType, PlantTileData.None, TileManager.GetInstance().TileFieldGet()[i]);
                break;

            case PlantState.Growth:
                PlantTileData tile = PlantTileData.Zero;
                if (pls[i].nowGrowth < 20)
                {
                    tile = PlantTileData.Zero
                    ;
                }
                else if (pls[i].nowGrowth < 50)
                {
                    tile = PlantTileData.Twenty;
                }
                else if (pls[i].nowGrowth < 70)
                {
                    tile = PlantTileData.Fifty;
                }
                else
                {
                    tile = PlantTileData.Seventy;
                }
                TileManager.GetInstance().ReWritePlantTile(myField[i].plantType, tile, TileManager.GetInstance().TileFieldGet()[i]);
                break;

            case PlantState.Harvest:
                TileManager.GetInstance().ReWritePlantTile(myField[i].plantType, PlantTileData.Hundred, TileManager.GetInstance().TileFieldGet()[i]);
                break;

            default:

                break;
            }
        }
    }
예제 #2
0
 //畑描画用タイルマップの書き換え
 public void ReWritePlantTile(PlantType type, PlantTileData tile, Vector3Int pos)
 {
     tiles[MapLayer.PlantData].SetTile(pos, PlantTiles[type][tile]);
 }
예제 #3
0
    //作物の成長
    public void PlantGrowth()
    {
        int   exQuality;
        int   upQuality;
        int   downQuality;
        float upSpeed;

        foreach (Plant p in myField)
        {
            exQuality   = 0;
            upQuality   = 0;
            downQuality = 0;
            upSpeed     = 0;
            switch (p.plantState)
            {
            case PlantState.Growth:
                foreach (FertilizerData f in p.fertilizers)
                {
                    exQuality   += f.quality;
                    upQuality   += f.upQuality;
                    downQuality += f.downQuality;
                    upSpeed     += f.growthSpeed;
                }
                float c = p.growthSpeed + upSpeed;
                if (c <= 0)
                {
                    c = 1;
                }
                p.nowGrowth += c;
                if (p.nowGrowth >= 100)
                {
                    p.nowGrowth  = 100;
                    p.quality   += exQuality;
                    p.plantState = PlantState.Harvest;
                }
                else if (p.soilState == Soil.VeryDry)
                {
                    p.quality -= (int)(p.downQuality * 1.5) - downQuality;
                }
                else if (p.soilState == Soil.Dry)
                {
                    p.quality -= p.downQuality - downQuality;
                }
                else
                {
                    p.quality += (TimeManager.GetInstance().Time.nowSeason == p.jastSeason ? 2:1) * p.upQuality + upQuality;
                }
                break;

            default:
                break;
            }
        }
        for (int i = 0; i < myField.Length; i++)
        {
            switch (myField[i].plantState)
            {
            case PlantState.Growth:
                PlantTileData tile = PlantTileData.Zero;
                if (myField[i].nowGrowth < 20)
                {
                    tile = PlantTileData.Zero;
                }
                else if (myField[i].nowGrowth < 50)
                {
                    tile = PlantTileData.Twenty;
                }
                else if (myField[i].nowGrowth < 70)
                {
                    tile = PlantTileData.Fifty;
                }
                else
                {
                    tile = PlantTileData.Seventy;
                }
                TileManager.GetInstance().ReWritePlantTile(myField[i].plantType, tile, TileManager.GetInstance().TileFieldGet()[i]);
                break;

            case PlantState.Harvest:
                TileManager.GetInstance().ReWritePlantTile(myField[i].plantType, PlantTileData.Hundred, TileManager.GetInstance().TileFieldGet()[i]);
                break;

            default:

                break;
            }
        }
    }