public override void _Ready() { var levelContainer = GetNode <HBoxContainer>("HBoxContainer"); var select = levelContainer.GetNode <Button>("LEVEL1"); var label = levelContainer.GetNode <Label>("Label"); label.Text = "STATIC_" + gmObj.etype.ToString(); for (int i = 0; i < gmObj.def.levels.Count; i++) { if (i > 0) { select = select.Duplicate() as Button; GetNode <HBoxContainer>("HBoxContainer").AddChild(select); } select.GetNode <Label>("Label").Text = $"STATIC_LEVEL{i + 1}"; select.Group = group; select.HintTooltip = GetLevelDesc(gmObj.etype, gmObj.def.levels[i]); select.Connect("pressed", this, nameof(_on_LevelButton_Pressed), new Godot.Collections.Array() { i + 1 }); } gmObj.OBSProperty(x => x.level).Subscribe(x => { GD.Print(x); var currBtn = GetNode <HBoxContainer>("HBoxContainer").GetChild <Button>(x); if (!currBtn.Pressed) { currBtn.Pressed = true; } }).EndWith(this); gmObj.OBSProperty(x => x.valid).Subscribe(x => { foreach (Button elem in group.GetButtons()) { elem.Disabled = !x; } }).EndWith(this); }