private HarvestDesignatable GetMostMatureBranch(out float max_maturity) { max_maturity = 0f; HarvestDesignatable result = null; Ref <HarvestDesignatable>[] array = buds; for (int i = 0; i < array.Length; i++) { HarvestDesignatable harvestDesignatable = array[i]?.Get(); if ((Object)harvestDesignatable != (Object)null) { AmountInstance amountInstance = Db.Get().Amounts.Maturity.Lookup(harvestDesignatable); if (amountInstance != null) { float num = amountInstance.value / amountInstance.GetMax(); if (num > max_maturity) { max_maturity = num; result = harvestDesignatable; } } } } return(result); }
public TreeBud GetBranchAtPosition(int idx) { if (buds[idx] != null) { HarvestDesignatable harvestDesignatable = buds[idx].Get(); return((!((Object)harvestDesignatable != (Object)null)) ? null : harvestDesignatable.GetComponent <TreeBud>()); } return(null); }
private void YieldWood() { Ref <HarvestDesignatable>[] array = buds; for (int i = 0; i < array.Length; i++) { HarvestDesignatable harvestDesignatable = array[i]?.Get(); if ((Object)harvestDesignatable != (Object)null) { harvestDesignatable.Trigger(-216549700, null); } } }
protected override void OnSpawn() { harvestDesignatable = GetComponent <HarvestDesignatable>(); Subscribe(2127324410, ForceCancelHarvestDelegate); SetWorkTime(10f); Subscribe(2127324410, OnCancelDelegate); faceTargetWhenWorking = true; Components.Harvestables.Add(this); attributeConverter = Db.Get().AttributeConverters.HarvestSpeed; attributeExperienceMultiplier = DUPLICANTSTATS.ATTRIBUTE_LEVELING.PART_DAY_EXPERIENCE; skillExperienceSkillGroup = Db.Get().SkillGroups.Farming.Id; skillExperienceMultiplier = SKILLS.PART_DAY_EXPERIENCE; }
public void ConsumeMass(float mass_to_consume) { float max_maturity; HarvestDesignatable mostMatureBranch = GetMostMatureBranch(out max_maturity); if ((bool)mostMatureBranch) { Growing component = mostMatureBranch.GetComponent <Growing>(); if ((bool)component) { component.ConsumeMass(mass_to_consume); } } }
public void OnBranchRemoved(int idx, TreeBud treeBud) { if (idx < 0 || idx >= buds.Length) { Debug.Assert(false, "invalid branch index " + idx); } HarvestDesignatable component = treeBud.GetComponent <HarvestDesignatable>(); HarvestDesignatable harvestDesignatable = (buds[idx] == null) ? null : buds[idx].Get(); if ((Object)component != (Object)harvestDesignatable) { Debug.LogWarningFormat(base.gameObject, "OnBranchRemoved branch {0} does not match known branch {1}", component, harvestDesignatable); } buds[idx] = null; }
public GameObject CreatePrefab() { string id = "GasGrass"; string name = STRINGS.CREATURES.SPECIES.GASGRASS.NAME; string desc = STRINGS.CREATURES.SPECIES.GASGRASS.DESC; float mass = 1f; KAnimFile anim = Assets.GetAnim("gassygrass_kanim"); string initialAnim = "idle_empty"; EffectorValues tIER = DECOR.BONUS.TIER3; GameObject gameObject = EntityTemplates.CreatePlacedEntity(id, name, desc, mass, anim, initialAnim, Grid.SceneLayer.BuildingFront, 1, 3, tIER, default(EffectorValues), SimHashes.Creature, null, 255f); EntityTemplates.ExtendEntityToBasicPlant(gameObject, 218.15f, 0f, 348.15f, 373.15f, null, true, 0f, 0.15f, "GasGrassHarvested", true, true, true, true, 2400f); EntityTemplates.ExtendPlantToIrrigated(gameObject, new PlantElementAbsorber.ConsumeInfo[1] { new PlantElementAbsorber.ConsumeInfo { tag = GameTags.Chlorine, massConsumptionRate = 0.000833333354f } }); gameObject.AddOrGet <StandardCropPlant>(); HarvestDesignatable harvestDesignatable = gameObject.AddOrGet <HarvestDesignatable>(); harvestDesignatable.defaultHarvestStateWhenPlanted = false; CropSleepingMonitor.Def def = gameObject.AddOrGetDef <CropSleepingMonitor.Def>(); def.lightIntensityThreshold = 20000f; def.prefersDarkness = false; GameObject plant = gameObject; SeedProducer.ProductionType productionType = SeedProducer.ProductionType.Hidden; initialAnim = "GasGrassSeed"; desc = STRINGS.CREATURES.SPECIES.SEEDS.GASGRASS.NAME; name = STRINGS.CREATURES.SPECIES.SEEDS.GASGRASS.DESC; anim = Assets.GetAnim("seed_gassygrass_kanim"); List <Tag> list = new List <Tag>(); list.Add(GameTags.CropSeed); list = list; GameObject seed = EntityTemplates.CreateAndRegisterSeedForPlant(plant, productionType, initialAnim, desc, name, anim, "object", 1, list, SingleEntityReceptacle.ReceptacleDirection.Top, default(Tag), 2, STRINGS.CREATURES.SPECIES.GASGRASS.DOMESTICATEDDESC, EntityTemplates.CollisionShape.CIRCLE, 0.2f, 0.2f, null, string.Empty, false); EntityTemplates.CreateAndRegisterPreviewForPlant(seed, "GasGrass_preview", Assets.GetAnim("gassygrass_kanim"), "place", 1, 1); SoundEventVolumeCache.instance.AddVolume("gassygrass_kanim", "GasGrass_grow", NOISE_POLLUTION.CREATURES.TIER3); SoundEventVolumeCache.instance.AddVolume("gassygrass_kanim", "GasGrass_harvest", NOISE_POLLUTION.CREATURES.TIER3); return(gameObject); }
private void UpdateAllBudsHarvestStatus(object data = null) { Ref <HarvestDesignatable>[] array = buds; foreach (Ref <HarvestDesignatable> @ref in array) { if (@ref != null) { HarvestDesignatable harvestDesignatable = @ref.Get(); if ((Object)harvestDesignatable == (Object)null) { Debug.LogWarning("harvest_designatable was null"); } else { UpdateBudHarvestState(harvestDesignatable); } } } }
public void TrySpawnRandomBud(object data = null, float growth_percentage = 0f) { if (!uprooted.IsUprooted) { spawn_choices.Clear(); int num = 0; for (int i = 0; i < buds.Length; i++) { Vector3 budPosition = GetBudPosition(i); int cell = Grid.PosToCell(budPosition); if ((buds[i] == null || (Object)buds[i].Get() == (Object)null) && CanGrowInto(cell)) { spawn_choices.Add(i); } else if (buds[i] != null && (Object)buds[i].Get() != (Object)null) { num++; } } if (num < maxBuds) { spawn_choices.Shuffle(); if (spawn_choices.Count > 0) { int num2 = spawn_choices[0]; Vector3 budPosition2 = GetBudPosition(num2); GameObject gameObject = Util.KInstantiate(Assets.GetPrefab(budPrefabID), budPosition2); gameObject.SetActive(true); gameObject.GetComponent <Growing>().OverrideMaturityLevel(growth_percentage); gameObject.GetComponent <TreeBud>().SetTrunkPosition(this, num2); HarvestDesignatable component = gameObject.GetComponent <HarvestDesignatable>(); buds[num2] = new Ref <HarvestDesignatable>(component); UpdateBudHarvestState(component); TryRollNewSeed(); } } } }
public void Refresh(HarvestDesignatable target_harvestable) { Image image = bar.GetComponent <HierarchyReferences>().GetReference("Fill") as Image; AmountInstance amountInstance = Db.Get().Amounts.Maturity.Lookup(target_harvestable); if (amountInstance != null) { float num = amountInstance.value / amountInstance.GetMax(); RectTransform rectTransform = image.rectTransform; Vector2 offsetMin = image.rectTransform.offsetMin; rectTransform.offsetMin = new Vector2(offsetMin.x, 3f); if (bar.activeSelf != !target_harvestable.CanBeHarvested()) { bar.SetActive(!target_harvestable.CanBeHarvested()); } float num2 = (!target_harvestable.CanBeHarvested()) ? (19f - 19f * num + 3f) : 3f; RectTransform rectTransform2 = image.rectTransform; Vector2 offsetMax = image.rectTransform.offsetMax; rectTransform2.offsetMax = new Vector2(offsetMax.x, 0f - num2); } else if (bar.activeSelf) { bar.SetActive(false); } WiltCondition component = target_harvestable.GetComponent <WiltCondition>(); if ((Object)component != (Object)null) { for (int i = 0; i < horizontal_containers.Length; i++) { horizontal_containers[i].SetActive(false); } foreach (KeyValuePair <WiltCondition.Condition, GameObject> condition_icon in condition_icons) { condition_icon.Value.SetActive(false); } if (component.IsWilting()) { vertical_container.SetActive(true); image.color = wilting_color; List <WiltCondition.Condition> list = component.CurrentWiltSources(); if (list.Count > 0) { for (int j = 0; j < list.Count; j++) { if (condition_icons.ContainsKey(list[j])) { condition_icons[list[j]].SetActive(true); horizontal_containers[j / 2].SetActive(true); condition_icons[list[j]].transform.SetParent(horizontal_containers[j / 2].transform); } } } } else { vertical_container.SetActive(false); image.color = growing_color; } } else { image.color = growing_color; vertical_container.SetActive(false); } }
private void UpdateBudHarvestState(HarvestDesignatable bud) { HarvestDesignatable component = GetComponent <HarvestDesignatable>(); bud.SetHarvestWhenReady(component.HarvestWhenReady); }