Prepicked plants editor

This commit is contained in:
Rendo 2025-07-29 04:08:05 +05:00
commit 56f75a5d06
43 changed files with 532 additions and 50 deletions

View file

@ -11,8 +11,10 @@ public partial class AdventureResourceInspector : Node
const string ZOMBIES_ITEM_NAME = "Zombies";
const string EVENTS_ITEM_NAME = "Events";
const string HUGEWAVE_ITEM_NAME = "Is huge wave?";
const string SEEDPACKETS_ITEM_NAME = "Seedpackets editor";
private PackedScene zombieEditorScene = ResourceLoader.Load<PackedScene>("uid://db5ah76l43ng2");
private PackedScene initialEditorScene = ResourceLoader.Load<PackedScene>("uid://sqessjn0m4o3");
private PackedScene seedpacketEditorScene = ResourceLoader.Load<PackedScene>("uid://drc0o8du38apr");
private Tree tree;
private AdventureLevelResource heldResource;
@ -28,6 +30,7 @@ public partial class AdventureResourceInspector : Node
private TreeItem root;
private TreeItem initialData;
private TreeItem seedpacketData;
public override void _Ready()
{
@ -48,6 +51,7 @@ public partial class AdventureResourceInspector : Node
root = CreateItem(LEVEL_ITEM_NAME);
initialData = CreateItem(INITIAL_ITEM_NAME, root);
seedpacketData = CreateItem(SEEDPACKETS_ITEM_NAME, root);
for (int i = 0; i < heldResource.waves.Count; i++)
{
@ -58,7 +62,7 @@ public partial class AdventureResourceInspector : Node
CreateItem(EVENTS_ITEM_NAME, wave);
CreateItem(HUGEWAVE_ITEM_NAME, TreeItem.TreeCellMode.Check, true, wave)
.SetChecked(0, heldResource.waves[i].isHugeWave);
var delay = tree.CreateItem(wave);
if (heldResource.waves[i].customWaveDelay > 0)
@ -94,8 +98,7 @@ public partial class AdventureResourceInspector : Node
var editor = zombieEditorScene.Instantiate<ZombieEditor>();
editorContainer.AddChild(editor);
editor.SetEditedWave(heldResource.waves[GetWaveIndex(selected.GetParent())]);
editor.SaveCallback += adventureEditor.Save;
SetupWaveEditor(editor, heldResource.waves[GetWaveIndex(selected.GetParent())]);
return;
case EVENTS_ITEM_NAME:
@ -103,9 +106,14 @@ public partial class AdventureResourceInspector : Node
case INITIAL_ITEM_NAME:
var initialEditor = initialEditorScene.Instantiate<InitialEditor>();
editorContainer.AddChild(initialEditor);
initialEditor.SetData(heldResource);
initialEditor.SaveCallback += adventureEditor.Save;
SetupEditor(initialEditor);
break;
case SEEDPACKETS_ITEM_NAME:
var seedpacketEditor = seedpacketEditorScene.Instantiate<SeedpacketEditor>();
editorContainer.AddChild(seedpacketEditor);
SetupEditor(seedpacketEditor);
break;
}
}
@ -161,10 +169,21 @@ public partial class AdventureResourceInspector : Node
private TreeItem CreateItem(string Name, TreeItem.TreeCellMode cellMode, bool editable, TreeItem root = null)
{
var item = tree.CreateItem(root);
item.SetCellMode(0,cellMode);
item.SetCellMode(0, cellMode);
item.SetEditable(0, editable);
item.SetText(0, Name);
return item;
}
private void SetupEditor(BaseEditor editor)
{
editor.SetEditedData(heldResource);
editor.SaveCallback += adventureEditor.Save;
}
private void SetupWaveEditor(BaseWaveEditor editor, WaveData editedWave)
{
SetupEditor(editor);
editor.SetEditedWave(editedWave);
}
}
#endif