Added Crop, Farming&Harvesting functionality (no graphics yet!)

This commit is contained in:
j-weissen 2022-05-20 08:57:46 +02:00
parent b9030174b6
commit a3a81eeb2a
3 changed files with 101 additions and 3 deletions

44
Assets/Scripts/Crop.cs Normal file
View file

@ -0,0 +1,44 @@
namespace DefaultNamespace
{
public class Crop
{
private const int DaysUntilFinished = 4;
private bool _fullyGrown;
public bool FullyGrown => _fullyGrown;
private bool _markedForDeletion;
public bool MarkedForDeletion => _markedForDeletion;
private int _daysGrown;
public Crop()
{
_fullyGrown = false;
_markedForDeletion = false;
_daysGrown = 0;
}
private void Grow()
{
_daysGrown++;
}
public void DayLightStep(bool hydrated)
{
if (_daysGrown >= DaysUntilFinished)
{
_fullyGrown = true;
}
if (!hydrated)
{
_markedForDeletion = true;
}
else if (!_fullyGrown)
{
Grow();
}
}
}
}

View file

@ -37,7 +37,5 @@ namespace Tiles
Debug.Log(usable.ToString() + " used on " + this.ToString());
return null;
}
}
}

View file

@ -1,12 +1,68 @@
using UnityEngine;
using System;
using System.Threading;
using DefaultNamespace;
using Items;
using UnityEngine;
namespace Tiles
{
public class FarmlandTile : BaseTile
{
private Crop _crop;
private bool _hydrated;
public FarmlandTile() : base(Color.black)
{
_crop = null;
_hydrated = false;
}
public new void DayLightStep()
{
if (_crop != null)
{
_crop.DayLightStep(_hydrated);
if (_crop.MarkedForDeletion)
{
_crop = null;
}
}
}
public new BaseTile Clicked(UsableItem usable)
{
base.Clicked(usable);
ItemContainer ic = ItemContainer.Instance;
if (usable.id == ic.GetItemIdByName("Hoe"))
{
_hydrated = true;
}
if (usable.id == ic.GetItemIdByName("Wheat Seed") && _crop == null)
{
Plant();
}
if (usable.id == ic.GetItemIdByName("Scythe") && _crop != null && _crop.FullyGrown)
{
Harvest();
}
return null;
}
private void Harvest()
{
// add wheat to inventory
_crop = null;
}
private void Plant()
{
// wheatSeeds-- in inventory
_crop = new Crop();
}
}
}