/// Modifies eggs as they are loaded /// missing parameters: override_prefix /// egg_mass: recipe is fixed in EntityFinish public static void PatchEggs(KPrefabID prefab, GameObject egg) { EggContainer setting = CustomizeCritterState.StateManager.State.egg_settings.Find(s => s.eggId == egg.name); if (setting == null) { return; } if (setting.eggName != null) { prefab.PrefabTag = TagManager.Create(setting.eggId, setting.eggName); egg.GetComponent <KSelectable>()?.SetName(setting.eggName); egg.AddOrGet <DecorProvider>().overrideName = setting.eggName; } if (setting.eggDesc != null) { egg.AddOrGet <InfoDescription>().description = setting.eggDesc; } if (setting.override_prefix != null && setting.anim_egg != null) { // THIS CODE ONLY WORKS ON CREATURES, NOT EGGS! //SymbolOverrideController symbol_override_controller = SymbolOverrideControllerUtil.AddToPrefab(egg); //string symbolPrefix = prefab.GetComponent<CreatureBrain>().symbolPrefix; //if (!string.IsNullOrEmpty(symbolPrefix)) //{ // symbol_override_controller.ApplySymbolOverridesByAffix(Assets.GetAnim(setting.anim_egg), symbolPrefix, null, 0); //} } if (setting.anim_egg != null) { KBatchedAnimController kbatchedAnimController = egg.AddOrGet <KBatchedAnimController>(); kbatchedAnimController.AnimFiles = new KAnimFile[] { Assets.GetAnim(setting.anim_egg) }; //kbatchedAnimController.sceneLayer = sceneLayer; //kbatchedAnimController.initialAnim = initialAnim; } if (setting.egg_mass != null) { egg.AddOrGet <PrimaryElement>().MassPerUnit = setting.egg_mass.Value; } if (setting.babyId != null) { egg.AddOrGetDef <IncubationMonitor.Def>().spawnedCreature = setting.babyId; } if (setting.incubation_cycles != null) { float base_incubation_rate = 100f / (600f * setting.incubation_cycles.Value); egg.AddOrGetDef <IncubationMonitor.Def>().baseIncubationRate = base_incubation_rate; } if (setting.egg_sortorder != null) { egg.AddOrGet <Pickupable>().sortOrder = TUNING.SORTORDER.EGGS + setting.egg_sortorder.Value; } if (setting.is_fish != null) { if (setting.is_fish.Value) { egg.AddOrGetDef <FishOvercrowdingMonitor.Def>(); } else { egg.RemoveDef <FishOvercrowdingMonitor.Def>(); } } if (setting.egg_scale != null) { KBatchedAnimController component = egg.GetComponent <KBatchedAnimController>(); component.animWidth = setting.egg_scale.Value; component.animHeight = setting.egg_scale.Value; } }
private void load(TextureStore textures, OsuColour colour) { Children = new Drawable[] { eggContainer = new EggContainer { Name = "Egg container", Anchor = Anchor.Centre, Origin = Anchor.Centre, Size = new Vector2(preview_width, preview_height), }, new Container { Anchor = Anchor.Centre, Origin = Anchor.Centre, Size = new Vector2(preview_width, preview_height), Masking = true, CornerRadius = 15, BorderThickness = 10f, BorderColour = colour.Gray6, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = colour.Gray3, }, textContainer = new FillFlowContainer <GenerateRowContainer> { Anchor = Anchor.Centre, Origin = Anchor.Centre, Width = preview_width / (float)Math.Cos(Math.PI * angle / 180.0), AutoSizeAxes = Axes.Y, Spacing = new Vector2(10), Rotation = -angle, Children = new[] { new GenerateRowContainer(GenerateDirection.LeftToRight), new GenerateRowContainer(GenerateDirection.RightToLeft), new GenerateRowContainer(GenerateDirection.LeftToRight), new GenerateRowContainer(GenerateDirection.RightToLeft), new GenerateRowContainer(GenerateDirection.LeftToRight), new GenerateRowContainer(GenerateDirection.RightToLeft), new GenerateRowContainer(GenerateDirection.LeftToRight), new GenerateRowContainer(GenerateDirection.RightToLeft), } } } } }; foreach (var row in textContainer.Children) { row.ClickedText += text => { var(textureName, scale, yOffset) = getTexture(text); if (string.IsNullOrEmpty(textureName)) { return; } eggContainer.GenerateEgg(textureName, scale, yOffset);