//作物データセット 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; } } }
//畑描画用タイルマップの書き換え public void ReWritePlantTile(PlantType type, PlantTileData tile, Vector3Int pos) { tiles[MapLayer.PlantData].SetTile(pos, PlantTiles[type][tile]); }
//作物の成長 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; } } }