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(); }); } } }
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) }, }; }
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(); }
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; } } }
public void collectResource(PlantProperty something) { if (collectResourceToStartDialog.ContainsKey(something)) { var value = collectResourceToStartDialog[something]; if (!hadDialog.ContainsKey(value)) { hadDialog[value] = true; TutorialPanel.Instance.Init(value); } } }
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)]; }
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; }
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; } } } }
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(); }
public void resourceGetTo(PlantProperty key) { }
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); } }
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; } } } } } }
// Use this for initialization void Start() { StartingPosition = transform.position; PlantProperty = GetComponent <PlantProperty> (); GameManager = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameManager>(); }
get => (FloraConfig)GetValue(PlantProperty); set => SetValue(PlantProperty, value);
public void FootprintPlanted(PlantProperty FootprintedProperty) { PastProperty = FootprintedProperty; GetComponent <Renderer> ().material = FootprintedMaterial; }
public void PutBackOption(PlantProperty property) { //int index = optionList.FindIndex(s => s == cloudProperty); //HUDManager.GetInstance().PutBackOption(index); HUDManager.GetInstance().PutBackOption(); }
public bool IsResourceAvailable(PlantProperty property, int value) { return(currentResource[property] >= value); }
public bool isIncreasingResource(PlantProperty p) { return(!(p == PlantProperty.bee || p == PlantProperty.pest || p == PlantProperty.frog)); }
public void UnlockResource(PlantProperty type) { isResourceUnlocked[type] = true; }