Esempio n. 1
0
    public bool CanBeHarvested(int x, int y)
    {
        int id = y * 80 + x;

        if (patches.ContainsKey(id))
        {
            FarmingPatch patch = patches[id];
            if (patch.PatchState == PlayerAction.Seed)
            {
                return(patch.DaysGrowing >= DataStore.ItemBalancingData[patch.Seed].DaysToGrow);
            }
        }

        return(false);
    }
Esempio n. 2
0
    public void UpdateFarmPatches()
    {
        List <int> keys = new List <int>(patches.Keys);

        foreach (int key in keys)
        {
            FarmingPatch patch = patches[key];

            if (patch.PatchState == PlayerAction.Seed)
            {
                if (patch.Watered)
                {
                    patch.DaysGrowing++;
                    patch.DryPatch();
                }

                if (patch.DaysGrowing == 1 && ReferenceEquals(patch.GameObject, null))
                {
                    patch.SpriteRenderer.sprite         = Sprites[0];
                    patch.GameObject                    = GetCrop(patch.Seed);
                    patch.GameObject.transform.position = new Vector3(patch.Coordinates.x + 20.5f, 0, patch.Coordinates.y + 20.5f);
                    patch.GameObject.transform.rotation = Quaternion.Euler(0, UnityEngine.Random.Range(0f, 180f), 0);
                }

                if (patch.DaysGrowing >= DataStore.ItemBalancingData[patch.Seed].DaysToGrow)
                {
                    if (patch.Seed != ItemName.Eggplant && patch.Seed != ItemName.Tomato)
                    {
                        patch.GameObject.transform.GetChild(0).gameObject.SetActive(false);
                    }

                    patch.GameObject.transform.GetChild(1).gameObject.SetActive(true);
                }
            }
            else
            {
                patch.DryPatch();
                GameObject farmingPatchGameObject = patch.SpriteRenderer.gameObject;
                farmingPatchGameObject.SetActive(false);
                farmingPatchesPool.Add(farmingPatchGameObject);
                patches.Remove(key);
            }
        }
    }
Esempio n. 3
0
    public void Action(PlayerAction type, int x, int y, ItemName item)
    {
        if (x < 0 || y < 0 || x > 78 || y > 78)
        {
            return;
        }

        if (x > 52 && y > 65)
        {
            return;
        }

        int id = y * 80 + x;

        FarmingPatch patch = null;

        if (patches.ContainsKey(id))
        {
            patch = patches[id];
        }
        else
        {
            if (type == PlayerAction.Plow)
            {
                patch = new FarmingPatch(x, y);
                GameObject go;

                if (farmingPatchesPool.Count > 0)
                {
                    go = farmingPatchesPool[0];
                    farmingPatchesPool.RemoveAt(0);
                }
                else
                {
                    go = Instantiate(farmPatchPrefab);
                }

                go.transform.position       = new Vector3(x + 20.5f, 0.01f, y + 20.5f);
                patch.SpriteRenderer        = go.GetComponent <SpriteRenderer>();
                patch.SpriteRenderer.sprite = Sprites[0];
                patch.SpriteRenderer.gameObject.SetActive(true);

                patches.Add(id, patch);
            }
        }

        if (patch != null)
        {
            if (CanBeHarvested(x, y))
            {
                patch.DryPatch();

                GameObject cropsGameObject = patch.GameObject;
                cropsGameObject.transform.GetChild(0).gameObject.SetActive(false);
                cropsGameObject.transform.GetChild(1).gameObject.SetActive(false);
                AddToCropsPool(cropsGameObject, patch.Seed);

                patch.GameObject  = null;
                patch.DaysGrowing = -1;
                patch.PatchState  = PlayerAction.Plow;

                uiController.CreateCollectables(patch.Seed, cropsGameObject.transform.GetChild(0).position);
                return;
            }

            if (type == PlayerAction.Water)
            {
                patch.WaterPatch();
            }

            if (type == PlayerAction.Seed)
            {
                if (patch.PatchState == PlayerAction.Plow)
                {
                    patch.Seed = item;
                    patch.SpriteRenderer.sprite = Sprites[1];
                    patch.DaysGrowing           = 0;
                    patch.PatchState            = PlayerAction.Seed;
                    inventory.RemoveItem(1);
                }
            }
        }
    }