delete skill trees

This commit is contained in:
Ed
2025-05-09 01:22:02 +03:00
parent d9c2bd8e09
commit 9d7fae73c4
23 changed files with 39 additions and 601 deletions

View File

@@ -38,7 +38,6 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
private IEnumerable<CP14SkillPrototype> _allSkills = [];
private CP14SkillPrototype? _selectedSkill;
private CP14SkillTreePrototype? _selectedSkillTree;
private MenuButton? SkillButton => UIManager
.GetActiveUIWidgetOrNull<Client.UserInterface.Systems.MenuBar.Widgets.GameTopMenuBar>()
@@ -220,9 +219,6 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
if (_window is null)
return;
if (_selectedSkillTree == null)
return;
if (!EntityManager.TryGetComponent<CP14SkillStorageComponent>(_targetPlayer, out var storage))
return;
@@ -233,9 +229,6 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
var learned = storage.LearnedSkills;
foreach (var skill in _allSkills)
{
if (skill.Tree != _selectedSkillTree)
continue;
foreach (var req in skill.Restrictions)
{
switch (req)
@@ -244,9 +237,6 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
if (!_proto.TryIndex(prerequisite.Prerequisite, out var prerequisiteSkill))
continue;
if (prerequisiteSkill.Tree != _selectedSkillTree)
continue;
nodeTreeEdges.Add((skill.ID, prerequisiteSkill.ID));
break;
}
@@ -264,11 +254,7 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
_window.GraphControl.UpdateState(
new CP14NodeTreeUiState(
nodes: nodeTreeElements,
edges: nodeTreeEdges,
frameIcon: _selectedSkillTree.FrameIcon,
hoveredIcon: _selectedSkillTree.HoveredIcon,
selectedIcon: _selectedSkillTree.SelectedIcon,
learnedIcon: _selectedSkillTree.LearnedIcon
edges: nodeTreeEdges
)
);
}
@@ -283,63 +269,11 @@ public sealed class CP14SkillUIController : UIController, IOnStateEntered<Gamepl
if (!EntityManager.TryGetComponent<CP14SkillStorageComponent>(_targetPlayer, out var storage))
return;
//If tree not selected, select the first one
if (_selectedSkillTree == null && storage.Progress.Count > 0)
{
var firstTree = storage.Progress.First().Key;
if (_proto.TryIndex(firstTree, out var indexedTree))
{
SelectTree(indexedTree, storage); // Set the first tree from the player's progress
}
}
if (_selectedSkillTree == null)
return;
// Reselect for update state
SelectNode(_selectedSkill);
UpdateGraphControl();
// Update the experience points for the selected tree
var playerProgress = storage.Progress;
if (playerProgress.TryGetValue(_selectedSkillTree, out var skillPoint))
{
_window.ExpPointLabel.Text = skillPoint.ToString();
}
_window.LevelLabel.Text = $"{storage.SkillsSumExperience}/{storage.ExperienceMaxCap}";
_window.TreeTabsContainer.RemoveAllChildren();
foreach (var (tree, _) in storage.Progress)
{
if (!_proto.TryIndex(tree, out var indexedTree))
continue;
var treeButton2 = new CP14SkillTreeButtonControl(indexedTree.Color, Loc.GetString(indexedTree.Name));
treeButton2.ToolTip = Loc.GetString(indexedTree.Desc ?? string.Empty);
treeButton2.OnPressed += () =>
{
SelectTree(indexedTree, storage);
};
_window.TreeTabsContainer.AddChild(treeButton2);
}
}
private void SelectTree(CP14SkillTreePrototype tree, CP14SkillStorageComponent storage)
{
if (_window == null)
return;
_selectedSkillTree = tree;
_window.ParallaxBackground.ParallaxPrototype = tree.Parallax;
_window.TreeName.Text = Loc.GetString(tree.Name);
var playerProgress = storage.Progress;
_window.ExpPointLabel.Text = playerProgress.TryGetValue(tree, out var skillpoint) ? skillpoint.ToString() : "0";
UpdateGraphControl();
}
private void CharacterDetached(EntityUid uid)

View File

@@ -66,20 +66,12 @@
HorizontalExpand="True" HorizontalAlignment="Center" />
</BoxContainer>
<PanelContainer Margin="10 10 10 10" HorizontalExpand="True" VerticalExpand="True" RectClipContent="True">
<parallax:ParallaxControl Name="ParallaxBackground" ScaleX="4" ScaleY="4" Access="Public" SpeedX="10" SpeedY="5"/>
<parallax:ParallaxControl Name="ParallaxBackground" ParallaxPrototype="AspidParallax" ScaleX="4" ScaleY="4" Access="Public" SpeedX="10" SpeedY="5"/>
<BoxContainer Margin="10 10 10 10" Orientation="Horizontal" HorizontalExpand="True" VerticalExpand="True">
<nodeTree:CP14NodeTreeGraphControl Name="GraphControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Access="Public"/>
</BoxContainer>
<!-- Tree Tabs -->
<BoxContainer Margin="10 10 10 10" VerticalAlignment="Top" HorizontalAlignment="Right" Orientation="Vertical" VerticalExpand="True">
<BoxContainer Name="TreeTabsContainer" Orientation="Vertical" HorizontalExpand="True" VerticalExpand="True" Access="Public"/>
</BoxContainer>
<!-- Experience Data -->
<BoxContainer Margin="10 10 10 10" VerticalAlignment="Bottom" HorizontalAlignment="Center" Orientation="Horizontal" VerticalExpand="True">
<RichTextLabel VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Loc 'cp14-skill-menu-skillpoints'}" StyleClasses="LabelKeyText"/>
<TextureRect VerticalAlignment="Center" HorizontalAlignment="Center" TextureScale="2, 2" TexturePath="/Textures/_CP14/Interface/Misc/skillpoint.png"/>
<RichTextLabel Margin="0 0 20 0" Name="ExpPointLabel" VerticalAlignment="Center" HorizontalAlignment="Left" Text="0" StyleClasses="LabelKeyText" Access="Public"/>
<RichTextLabel VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Loc 'cp14-skill-menu-level'}" StyleClasses="LabelKeyText"/>
<TextureRect VerticalAlignment="Center" HorizontalAlignment="Center" TextureScale="2, 2" TexturePath="/Textures/_CP14/Interface/Misc/skillpoint.png"/>
<RichTextLabel Margin="0 0 0 0" Name="LevelLabel" VerticalAlignment="Center" HorizontalAlignment="Left" Text="0" StyleClasses="LabelKeyText" Access="Public"/>