예제 #1
0
    Material GetMaterial(string textureName, PlantPart plantPart)
    {
        Debug.Log("Get Mat with '" + textureName + "'");


        if (textureName == null || textureName == "")
        {
            return(defaultMaterial);
        }

        if (plantPart == PlantPart.Trunk ||
            plantPart == PlantPart.Branch ||
            plantPart == PlantPart.SubBranch)
        {
            return(plantMaterials [materialnNamesToIndexes [0] [textureName]]);
        }
        else if (plantPart == PlantPart.Leaf)
        {
            return(leafMaterials [materialnNamesToIndexes [1] [textureName]]);
        }
        else if (plantPart == PlantPart.Flower)
        {
            return(flowerMaterials [materialnNamesToIndexes [2] [textureName]]);
        }
        else
        {
            return(fruitMaterials [materialnNamesToIndexes [3] [textureName]]);
        }
    }
예제 #2
0
    public void UpdatePlantStats()
    {
        foreach (PlantPart part in plantParts)
        {
            growthPotential -= part.metabolism;
            growthPotential += part.fotosynthesis;
            //   growthPotential += part.mineralAbsorption;
            growthPotential = Mathf.Clamp(growthPotential, 0, 1);


            water -= part.waterEvaporation * WeatherManager.instance.luminosity;
            water += part.waterAbsorption * WeatherManager.instance.soilHumidity;
            water  = Mathf.Clamp(water, 0, 1);
        }


        if (water < 0.3)
        {
            PlantPart leaf = ChooseRandomUnshriveledLeaf();
            if (leaf != null)
            {
                leaf.IsSchriveled = true;
                unshriveledLeaves.Remove(leaf);
            }
        }

        Debug.Log("growth potential: " + growthPotential);
        Debug.Log("water: " + water);
    }
    public void UpdatePlant(string propertyName, object value, PlantPart pp)
    {
        //Debug.Log (propertyName);

        switch (pp)
        {
        case PlantPart.Trunk:
            typeof(Plant).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedPlant, value, null);
            break;

        case PlantPart.Branch:
            typeof(Plant).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedBranch, value, null);
            break;

        case PlantPart.SubBranch:
            typeof(Plant).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedSubBranch, value, null);
            break;

        case PlantPart.Leaf:
            typeof(Leaf).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedLeaf, value, null);
            break;

        case PlantPart.Flower:
            typeof(Flower).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedFlower, value, null);
            break;

        case PlantPart.Fruit:
            typeof(Fruit).GetProperty(propertyName).SetValue(plantPartPanelManager.targetedFruit, value, null);
            break;
        }


        plantPartPanelManager.targetedPlant.InitializePlant();
    }
예제 #4
0
    public void SelectSubBranch()
    {
        lastSelected.interactable = true;

        lastSelected = subBranchButton;
        selection    = PlantPart.SubBranch;
        lastSelected.interactable = false;
    }
예제 #5
0
    public void SelectTrunk()
    {
        lastSelected.interactable = true;

        lastSelected = trunkButton;
        selection    = PlantPart.Trunk;
        lastSelected.interactable = false;
    }
예제 #6
0
    public void Initialize()
    {
        lastSelected = trunkButton;
        selection    = PlantPart.Trunk;

        trunkButton.interactable     = false;
        branchButton.interactable    = true;
        subBranchButton.interactable = true;
    }
예제 #7
0
 public PlantPart ChooseRandomUnshriveledLeaf()
 {
     if (unshriveledLeaves.Count > 0)
     {
         PlantPart leaf = unshriveledLeaves[Random.Range(0, unshriveledLeaves.Count)];
         return(leaf);
     }
     else
     {
         return(null);
     }
 }
예제 #8
0
    public void ForceSelect(PlantPart part)
    {
        selection = part;
        switch (part)
        {
        case PlantPart.Trunk:
            SelectTrunk();
            return;

        case PlantPart.Branch:
            SelectBranch();
            return;

        case PlantPart.SubBranch:
            SelectSubBranch();
            return;
        }
    }
예제 #9
0
    public void Grow()
    {
        GameObject newPartPrefab = PlantManager.instance.GetPartPrefab(generatedType);

        PlantPart part = Instantiate(
            newPartPrefab,
            transform.position,
            transform.rotation = Quaternion.Euler(0, 0, angle),
            //transform.parent
            PlantManager.instance.transform
            ).GetComponent <PlantPart>();


        part.yScaleFactor = Mathf.Lerp(0.6f, 1.2f, PlantManager.instance.growthPotential);
        //part.xScaleFactor =Mathf.Lerp(1.4f, 0.8f, PlantManager.instance.water);

        PlantManager.instance.GrowPart(newPartPrefab.GetComponent <PlantPart>());

        Destroy();
    }
예제 #10
0
    public void Initialize(string textureName, Texture texture, PlantPart plantPart, PlantCreatorMaterialManager PCMM, int index)
    {
        this.name        = textureName;
        this.index       = index;
        this.plantPart   = plantPart;
        rawImage.texture = texture;

        this.textureName.text       = DisplayParameter.NicifyName(textureName);
        plantCreatorMaterialManager = PCMM;

        if (plantPart == PlantPart.Leaf)
        {
            rawImage.rectTransform.rotation = Quaternion.Euler(0f, 0f, 90f);
        }

        if (plantPart == PlantPart.Flower)
        {
            rawImage.rectTransform.sizeDelta     = new Vector2(rawImage.rectTransform.sizeDelta.x, rawImage.rectTransform.sizeDelta.y * 2f);
            rawImage.rectTransform.localPosition = new Vector3(0f, 107f, 0f);
        }
    }
예제 #11
0
 public void GrowPart(PlantPart part)
 {
     growthPotential = Mathf.Clamp(growthPotential - part.buildCost, 0, 1);
     plantParts.Add(part);
     NextTimeStep();
 }
예제 #12
0
    public void ChangeTexture(string name, PlantPart pp, bool forceInit = false)
    {
        if (forceInit)
        {
            plantPartSelector.ForceSelect(pp);
            pp = PlantPart.Trunk;
        }

        int index = -1;

        Debug.Log("TextureName = " + name);

        switch (pp)
        {
        case PlantPart.Trunk:

            switch (plantPartSelector.SelectedPlantPart)
            {
            case PlantPart.Trunk:
                if (name == null || name == "")
                {
                    plantMat.mainTexture = defaultMaterial.mainTexture;
                    plantMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                    return;
                }
                index = materialnNamesToIndexes [0] [name];
                plantMat.mainTexture = plantMaterials [index].albedo;
                plantMat.SetTexture("_BumpMap", plantMaterials [index].albedo);
                trunkMatName = name;
                break;

            case PlantPart.Branch:
                if (name == null || name == "")
                {
                    branchMat.mainTexture = defaultMaterial.mainTexture;
                    branchMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                    return;
                }
                index = materialnNamesToIndexes [0] [name];

                branchMat.mainTexture = plantMaterials [index].albedo;
                branchMat.SetTexture("_BumpMap", plantMaterials [index].albedo);
                branchMatName = name;
                break;

            case PlantPart.SubBranch:
                if (name == null || name == "")
                {
                    subBranchMat.mainTexture = defaultMaterial.mainTexture;
                    subBranchMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                    return;
                }
                index = materialnNamesToIndexes [0] [name];

                subBranchMat.mainTexture = plantMaterials [index].albedo;
                subBranchMat.SetTexture("_BumpMap", plantMaterials [index].albedo);
                subBranchMatName = name;
                break;
            }
            break;

        case PlantPart.Leaf:
            if (name == null || name == "")
            {
                leafMat.mainTexture = defaultMaterial.mainTexture;
                leafMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                return;
            }
            index = materialnNamesToIndexes [1] [name];
            leafMat.mainTexture = leafMaterials [index].albedo;
            leafMat.SetTexture("_BumpMap", leafMaterials [index].albedo);
            leafMatName = name;
            break;

        case PlantPart.Flower:
            if (name == null || name == "")
            {
                flowerMat.mainTexture = defaultMaterial.mainTexture;
                flowerMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                return;
            }
            index = materialnNamesToIndexes [2][name];
            flowerMat.mainTexture = flowerMaterials [index].albedo;
            flowerMat.SetTexture("_BumpMap", flowerMaterials [index].albedo);
            flowerMatName = name;
            break;

        case PlantPart.Fruit:
            if (name == null || name == "")
            {
                fruitMat.mainTexture = defaultMaterial.mainTexture;
                fruitMat.SetTexture("_BumpMap", defaultMaterial.GetTexture("_BumpMap"));
                return;
            }
            index = materialnNamesToIndexes [3] [name];
            fruitMat.mainTexture = fruitMaterials [index].albedo;
            fruitMat.SetTexture("_BumpMap", fruitMaterials [index].normal);
            fruitMatName = name;
            break;
        }
    }