Beispiel #1
0
    void MoveSource(Vector3 start, Vector3 end, PlantProperty property, int amount, Action action)
    {
        for (int i = 0; i < amount; i++)
        {
            //check if there's coins in the pool
            if (coinsQueue.Count > 0)
            {
                //extract a coin from the pool
                GameObject coin = coinsQueue.Dequeue();
                coin.GetComponent <SpriteRenderer>().sprite = HUD.Instance.propertyImage[(int)(property)];
                coin.SetActive(true);

                //move coin to the collected coin pos
                coin.transform.position = start + new Vector3(Random.Range(-spread, spread), 0f, 0f);



                //animate coin to target position
                float duration = Random.Range(minAnimDuration, maxAnimDuration);
                coin.transform.DOMove(end, duration)
                .SetEase(easeType)
                .OnComplete(() =>
                {
                    //executes whenever coin reach target position
                    coin.SetActive(false);
                    coinsQueue.Enqueue(coin);
                    action();
                });
            }
        }
    }
Beispiel #2
0
    public void updateDropbox(Dropbox box)
    {
        foreach (var key in needToUnlock.Keys)
        {
            if (needToUnlock[key] == true)
            {
                //needToUnlock[key] = false;
                box.dropboxType = DropboxType.unlock;
                box.unlockPlant = key;
                return;
            }
        }

        box.dropboxType = DropboxType.resource;

        PlantProperty[] dropProperties = new PlantProperty[] {
            PlantProperty.n, PlantProperty.p, PlantProperty.water,
        };
        var typeRandom = Random.Range(0, 3);

        box.resource = new Dictionary <PlantProperty, int>()
        {
            { dropProperties[typeRandom], Random.Range(5, 10) },
        };
    }
Beispiel #3
0
 public void SetForSlotFootprint(PlantProperty Plant)
 {
     ToggleForSlot(true);
     OutputText.text = "Slot";
     // Remove unecessary fuel and output elements, just have footprint
     FootprintColorText.text = "Color: " + Plant.Footprint.Color.ToString();
     FootprintShapeText.text = "Shape: " + Plant.Footprint.Shape.ToString();
 }
Beispiel #4
0
    private void GrowPlant(Vector2Int leftTop, PlantProperty plant)
    {
        plant.position = leftTop;
        GameObject newPlant = new GameObject(plant.name.ToString());

        switch (plant.type)
        {
        case Global.PlantType.CHI_one_normal:
            newPlant.AddComponent <YuMeiRen>();
            newPlant.GetComponent <YuMeiRen>().property = plant;
            break;

        case Global.PlantType.Keep_Moisture1:
            newPlant.AddComponent <DanMu>();
            newPlant.GetComponent <DanMu>().property = plant;
            break;

        case Global.PlantType.Keep_Moisture2:
            newPlant.AddComponent <ShaTang>();
            newPlant.GetComponent <ShaTang>().property = plant;
            break;

        case Global.PlantType.CHI_two_normal:
            newPlant.AddComponent <ZhuYu>();
            newPlant.GetComponent <ZhuYu>().property = plant;
            break;

        case Global.PlantType.CHI_two_special:
            newPlant.AddComponent <XuanCao>();
            newPlant.GetComponent <XuanCao>().property = plant;
            break;

        case Global.PlantType.Increase_Moisture:
            newPlant.AddComponent <DaChun>();
            newPlant.GetComponent <DaChun>().property = plant;
            break;

        case Global.PlantType.CHI_one_super:
            newPlant.AddComponent <WuTong>();
            newPlant.GetComponent <WuTong>().property = plant;
            break;
        }
        plantList.Add(newPlant);

        for (int i = leftTop.x; i < leftTop.x + plant.width; i++)
        {
            for (int j = leftTop.y; j < leftTop.y + plant.height; j++)
            {
                grids[i, j].material.mainTexture = plant.texture;
                grids[i, j].State = 1;
            }
        }
    }
Beispiel #5
0
 public void collectResource(PlantProperty something)
 {
     if (collectResourceToStartDialog.ContainsKey(something))
     {
         var value = collectResourceToStartDialog[something];
         if (!hadDialog.ContainsKey(value))
         {
             hadDialog[value] = true;
             TutorialPanel.Instance.Init(value);
         }
     }
 }
Beispiel #6
0
    public void UpdateImage()
    {
        PlantProperty maxP = PlantProperty.s;
        int           maxV = 0;

        foreach (var pair in resource)
        {
            if (pair.Value > maxV)
            {
                maxV = pair.Value;
                maxP = pair.Key;
            }
        }
        GetComponent <SpriteRenderer>().sprite = HUD.Instance.propertyImage[(int)(maxP)];
    }
Beispiel #7
0
    public void SetForPlantComponent(PlantComponent Plant)
    {
        ToggleForSlot(false);
        PlantProperty PP = Plant.PlantProperty;

        OutputText.text = "Output: " + PP.ProductionValue.ToString();

        FuelColorText.text = "Color: " + PP.Fuel.Color.ToString();
        FuelShapeText.text = "Shape: " + PP.Fuel.Shape.ToString();
//		FuelSizeText.text = "Size: " + PP.Fuel.Size.ToString ();

        FootprintColorText.text = "Color: " + PP.Footprint.Color.ToString();
        FootprintShapeText.text = "Shape: " + PP.Footprint.Shape.ToString();
//		FootprintSizeText.text = "Size: " + PP.Footprint.Size.ToString ();
//		FuelText.text = Plant.PlantProperty.ProductionValue;
    }
Beispiel #8
0
    private void InitPlantList()
    {
        smallPlants  = new List <PlantProperty>();
        middlePlants = new List <PlantProperty>();
        bigPlants    = new List <PlantProperty>();
        optionList   = new Dictionary <PlantProperty, List <Vector2Int> >();

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(Resources.Load("Config/Plant").ToString());
        if (xmlDoc != null)
        {
            XmlNodeList cloudList = xmlDoc.SelectSingleNode("main").ChildNodes;
            foreach (XmlNode xn in cloudList)
            {
                PlantProperty property = new PlantProperty();
                property.name         = xn.SelectSingleNode("Name").InnerText;
                property.width        = int.Parse(xn.SelectSingleNode("Width").InnerText);
                property.height       = int.Parse(xn.SelectSingleNode("Height").InnerText);
                property.type         = (Global.PlantType)System.Enum.Parse(typeof(Global.PlantType), xn.SelectSingleNode("Type").InnerText);
                property.templateType = (Global.TemplateType)System.Enum.Parse(typeof(Global.TemplateType), xn.SelectSingleNode("TemplateType").InnerText);
                property.texture      = Resources.Load("Textures/" + xn.SelectSingleNode("TextureName").InnerText) as Texture2D;
                property.moisture     = int.Parse(xn.SelectSingleNode("Moisture").InnerText);
                property.skill        = xn.SelectSingleNode("Skill").InnerText;
                property.comment      = xn.SelectSingleNode("Comment").InnerText;
                property.provenance   = xn.SelectSingleNode("Provenance").InnerText;
                property.reference    = xn.SelectSingleNode("Reference").InnerText;

                switch (property.templateType)
                {
                case Global.TemplateType.SMALL_2_2:
                    smallPlants.Add(property);
                    break;

                case Global.TemplateType.MIDDLE_3_2:
                    middlePlants.Add(property);
                    break;

                case Global.TemplateType.BIG_3_3:
                    bigPlants.Add(property);
                    break;
                }
            }
        }
    }
Beispiel #9
0
    void Harvest()
    {
        var t   = Utils.RandomTransform(spawnPositionParent);
        var go  = Instantiate(PlantsManager.Instance.ClickToCollect, t.position, Quaternion.identity, pestParent);
        var box = go.GetComponent <CllickToCollect>();

        PlantProperty[] dropProperties = new PlantProperty[] {
            PlantProperty.n, PlantProperty.s, PlantProperty.p, PlantProperty.water
        };
        var typeRandom = Random.Range(0, 4);

        box.resource = new Dictionary <PlantProperty, int>()
        {
            { dropProperties[typeRandom], Random.Range(5, 10) },
        };
        box.dropboxType = DropboxType.resource;


        box.UpdateImage();
    }
Beispiel #10
0
 public void resourceGetTo(PlantProperty key)
 {
 }
Beispiel #11
0
    public void EndDrag(PlantProperty p, Vector2 leftTop)
    {
        activeHints.ClearHintState();

        bool destroyOption = false;

        RaycastHit hit;

        Vector2Int pos    = new Vector2Int();
        int        left   = 0;//图片对应的最左和最右格子,用于传递给TemplateMatch(),减小遍历面积
        int        right  = 0;
        int        top    = 0;
        int        bottom = 0;

        Ray ray = Camera.main.ScreenPointToRay(leftTop);

        if (Physics.Raycast(ray, out hit, 100.0f, LayerMask.GetMask("Ground")))
        {
            //activeHints.ClearHintState();
            //debugHitPoint = hit.point;

            // 打印射线检测到的物体的名称
            //Debug.Log("射线检测到的物体名称: " + hit.transform.name);

            pos    = hit.transform.GetComponent <GroundGrid>().position;//图片左上角碰撞到的格子的坐标
            left   = pos.x;
            right  = pos.x + p.width - 1;
            top    = pos.y;
            bottom = pos.y + p.height - 1;
            //判断选项是否被完全包含在棋盘里
            //既然左上角碰撞到了就只需检查右界、下界
            //ground的格子是从上到下下标从小到大的
            if (pos.x + p.width > wNum || pos.y + p.height > hNum)
            {
                destroyOption = false;
            }
            else
            {
                destroyOption = true;
                for (int i = 0; i < p.width; i++)
                {
                    for (int j = 0; j < p.height; j++)//注意pos.y是上大下小
                    {
                        //如果这片地上有东西就不能放置
                        if (grids[pos.x + i, pos.y + j].State == 1 || grids[pos.x + i, pos.y + j].Moisture < p.moisture)
                        {
                            destroyOption = false;
                            break;
                        }
                    }
                    if (destroyOption == false)
                    {
                        break;
                    }
                }
            }
        }


        if (destroyOption)
        {
            GrowPlant(pos, p);
            UpdatePlantOption();
        }
        else
        {
            //如果没拖到云彩上,要把选项放回到原来的位置
            PlantOptManager.GetInstance().PutBackOption(p);
        }
    }
Beispiel #12
0
    public void DragingOption(PlantProperty p, Vector2 leftTop)
    {
        Ray ray = Camera.main.ScreenPointToRay(leftTop);

        RaycastHit hit;

        Vector2Int pos;

        hintAble = -1;
        activeHints.ClearHintState();
        if (Physics.Raycast(ray, out hit, 100.0f, LayerMask.GetMask("UI")))
        {
            //
        }
        if (Physics.Raycast(ray, out hit, 100.0f, LayerMask.GetMask("GroundHint")))
        {
            // 打印射线检测到的物体的名称
            //Debug.Log("射线检测到的物体名称: " + hit.transform.name);

            pos = hit.transform.GetComponent <GroundHintGrid>().position;//图片左上角碰撞到的格子的坐标

            //如果块没有全部包含在棋盘里,一定提示异常
            if (pos.x + p.width > wNum || pos.y + p.height > hNum)
            {
                int right  = pos.x + p.width > wNum ? wNum : pos.x + p.width;
                int bottom = pos.y + p.height > hNum ? hNum : pos.y + p.height;
                hintAble = 0;
                for (int i = pos.x; i < right; i++)
                {
                    for (int j = pos.y; j < bottom; j++)
                    {
                        if (grids[i, j].State == 0)
                        {
                            activeHints.Add(hints[i, j]);
                        }
                    }
                }
            }
            else
            {
                hintAble = 1;
                for (int i = 0; i < p.width; i++)
                {
                    for (int j = 0; j < p.height; j++)//注意pos.y是上大下小
                    {
                        if (grids[pos.x + i, pos.y + j].Moisture < p.moisture)
                        {
                            hintAble = 0;
                        }
                        //如果范围内没有别的云彩块,就是绿色提示,否则也要提示异常
                        if (grids[pos.x + i, pos.y + j].State == 0)
                        {
                            activeHints.Add(hints[pos.x + i, pos.y + j]);
                        }
                        else
                        {
                            hintAble = 0;
                        }
                    }
                }
            }
        }
    }
Beispiel #13
0
 // Use this for initialization
 void Start()
 {
     StartingPosition = transform.position;
     PlantProperty    = GetComponent <PlantProperty> ();
     GameManager      = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameManager>();
 }
Beispiel #14
0
 get => (FloraConfig)GetValue(PlantProperty); set => SetValue(PlantProperty, value);
Beispiel #15
0
 public void FootprintPlanted(PlantProperty FootprintedProperty)
 {
     PastProperty = FootprintedProperty;
     GetComponent <Renderer> ().material = FootprintedMaterial;
 }
Beispiel #16
0
 public void PutBackOption(PlantProperty property)
 {
     //int index = optionList.FindIndex(s => s == cloudProperty);
     //HUDManager.GetInstance().PutBackOption(index);
     HUDManager.GetInstance().PutBackOption();
 }
Beispiel #17
0
 public bool IsResourceAvailable(PlantProperty property, int value)
 {
     return(currentResource[property] >= value);
 }
Beispiel #18
0
 public bool isIncreasingResource(PlantProperty p)
 {
     return(!(p == PlantProperty.bee || p == PlantProperty.pest || p == PlantProperty.frog));
 }
Beispiel #19
0
 public void UnlockResource(PlantProperty type)
 {
     isResourceUnlocked[type] = true;
 }