Merge mission and model selector
This commit is contained in:
parent
236cf3b317
commit
3e4230e46f
|
@ -54,8 +54,8 @@ public partial class Mission : Node3D
|
|||
var lightmapToggler = GetNode<Control>("%LightmapToggler") as LightmapLayerToggler;
|
||||
lightmapToggler.Setup(this);
|
||||
|
||||
var missionSelector = GetNode<Control>("%MissionSelector") as MissionSelector;
|
||||
missionSelector.MissionSelected += (string campaign, string mission) =>
|
||||
var resourceSelector = GetNode<Control>("%ResourceSelector") as ResourceSelector;
|
||||
resourceSelector.ResourceSelected += (string campaign, string mission) =>
|
||||
{
|
||||
_campaignName = campaign;
|
||||
_missionName = mission;
|
||||
|
|
|
@ -7,8 +7,8 @@ public partial class Model : Node3D
|
|||
{
|
||||
public override void _Ready()
|
||||
{
|
||||
var modelSelector = GetNode<Control>("%ModelSelector") as ModelSelector;
|
||||
modelSelector.ModelSelected += BuildModel;
|
||||
var resourceSelector = GetNode<Control>("%ResourceSelector") as ResourceSelector;
|
||||
resourceSelector.ResourceSelected += BuildModel;
|
||||
}
|
||||
|
||||
public void BuildModel(string campaignName, string modelPath)
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
using Godot;
|
||||
using KeepersCompound.LGS;
|
||||
|
||||
namespace KeepersCompound.TMV.UI;
|
||||
|
||||
public partial class MissionSelector : Control
|
||||
{
|
||||
public event MissionSelectedEventHandler MissionSelected;
|
||||
public delegate void MissionSelectedEventHandler(string campaign, string mission);
|
||||
|
||||
private FileDialog _FolderSelect;
|
||||
private LineEdit _FolderPath;
|
||||
private Button _BrowseButton;
|
||||
private ItemList _Campaigns;
|
||||
private ItemList _Missions;
|
||||
private Button _LoadButton;
|
||||
private Button _CancelButton;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
// TODO: Load initial folderpath from config and prefil everything
|
||||
_FolderSelect = GetNode<FileDialog>("%FolderSelect");
|
||||
_FolderPath = GetNode<LineEdit>("%FolderPath");
|
||||
_BrowseButton = GetNode<Button>("%BrowseButton");
|
||||
_Campaigns = GetNode<ItemList>("%Campaigns");
|
||||
_Missions = GetNode<ItemList>("%Missions");
|
||||
_LoadButton = GetNode<Button>("%LoadButton");
|
||||
_CancelButton = GetNode<Button>("%CancelButton");
|
||||
|
||||
_BrowseButton.Pressed += () => _FolderSelect.Visible = true;
|
||||
_FolderSelect.DirSelected += SetInstallPath;
|
||||
_FolderPath.TextSubmitted += SetInstallPath;
|
||||
_Missions.ItemSelected += (long _) => _LoadButton.Disabled = false;
|
||||
_Campaigns.ItemSelected += BuildMissionList;
|
||||
_LoadButton.Pressed += EmitLoadMission;
|
||||
_CancelButton.Pressed += () => Visible = false;
|
||||
}
|
||||
|
||||
public override void _Input(InputEvent @event)
|
||||
{
|
||||
if (@event is InputEventKey keyEvent && keyEvent.Pressed)
|
||||
{
|
||||
if (keyEvent.Keycode == Key.Escape)
|
||||
{
|
||||
Visible = !Visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetInstallPath(string path)
|
||||
{
|
||||
_FolderPath.Text = path;
|
||||
if (Context.Instance.PathManager.Init(path))
|
||||
{
|
||||
BuildCampaignList();
|
||||
}
|
||||
}
|
||||
|
||||
private void BuildCampaignList()
|
||||
{
|
||||
_Campaigns.Clear();
|
||||
_Missions.Clear();
|
||||
_LoadButton.Disabled = true;
|
||||
|
||||
var pathManager = Context.Instance.PathManager;
|
||||
_Campaigns.AddItem("Original Missions");
|
||||
foreach (var campaign in pathManager.GetCampaignNames())
|
||||
{
|
||||
_Campaigns.AddItem(campaign);
|
||||
}
|
||||
}
|
||||
|
||||
private void BuildMissionList(long idx)
|
||||
{
|
||||
_Missions.Clear();
|
||||
_LoadButton.Disabled = true;
|
||||
|
||||
var pathManager = Context.Instance.PathManager;
|
||||
var campaignName = idx == 0 ? null : _Campaigns.GetItemText((int)idx);
|
||||
var missionNames = pathManager.GetResourceNames(ResourceType.Mission, campaignName);
|
||||
foreach (var mission in missionNames)
|
||||
{
|
||||
_Missions.AddItem(mission);
|
||||
}
|
||||
}
|
||||
|
||||
private void EmitLoadMission()
|
||||
{
|
||||
var campaignIdxs = _Campaigns.GetSelectedItems();
|
||||
var missionIdxs = _Missions.GetSelectedItems();
|
||||
if (campaignIdxs.IsEmpty() || missionIdxs.IsEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var campaignIdx = campaignIdxs[0];
|
||||
var missionIdx = missionIdxs[0];
|
||||
var campaignName = campaignIdx == 0 ? null : _Campaigns.GetItemText(campaignIdx);
|
||||
var missionName = _Missions.GetItemText(missionIdx);
|
||||
MissionSelected(campaignName, missionName);
|
||||
|
||||
Visible = false;
|
||||
}
|
||||
}
|
|
@ -3,40 +3,40 @@ using KeepersCompound.LGS;
|
|||
|
||||
namespace KeepersCompound.TMV.UI;
|
||||
|
||||
public partial class ModelSelector : Control
|
||||
public partial class ResourceSelector : Control
|
||||
|
||||
{
|
||||
public event ModelSelectedEventHandler ModelSelected;
|
||||
public delegate void ModelSelectedEventHandler(string campaign, string mission);
|
||||
public event ResourceSelectedEventHandler ResourceSelected;
|
||||
public delegate void ResourceSelectedEventHandler(string campaign, string resource);
|
||||
|
||||
[Export]
|
||||
public ResourceType ResType;
|
||||
|
||||
private FileDialog _FolderSelect;
|
||||
private LineEdit _FolderPath;
|
||||
private Button _BrowseButton;
|
||||
private ItemList _Campaigns;
|
||||
private ItemList _Models;
|
||||
private ItemList _Resources;
|
||||
private Button _LoadButton;
|
||||
private Button _CancelButton;
|
||||
|
||||
private string _extractedObjectsPath = ProjectSettings.GlobalizePath($"user://objects/tmp");
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
// TODO: Load initial folderpath from config and prefil everything
|
||||
|
||||
_FolderSelect = GetNode<FileDialog>("%FolderSelect");
|
||||
_FolderPath = GetNode<LineEdit>("%FolderPath");
|
||||
_BrowseButton = GetNode<Button>("%BrowseButton");
|
||||
_Campaigns = GetNode<ItemList>("%Campaigns");
|
||||
_Models = GetNode<ItemList>("%Models");
|
||||
_Resources = GetNode<ItemList>("%Resources");
|
||||
_LoadButton = GetNode<Button>("%LoadButton");
|
||||
_CancelButton = GetNode<Button>("%CancelButton");
|
||||
|
||||
_BrowseButton.Pressed += () => _FolderSelect.Visible = true;
|
||||
_FolderSelect.DirSelected += SetInstallPath;
|
||||
_FolderPath.TextSubmitted += SetInstallPath;
|
||||
_Campaigns.ItemSelected += BuildModelList;
|
||||
_Models.ItemSelected += (long _) => _LoadButton.Disabled = false;
|
||||
_LoadButton.Pressed += EmitLoadModel;
|
||||
_Campaigns.ItemSelected += BuildResourceList;
|
||||
_Resources.ItemSelected += (long _) => _LoadButton.Disabled = false;
|
||||
_LoadButton.Pressed += EmitResourceSelected;
|
||||
_CancelButton.Pressed += () => Visible = false;
|
||||
}
|
||||
|
||||
|
@ -63,45 +63,45 @@ public partial class ModelSelector : Control
|
|||
private void BuildCampaignList()
|
||||
{
|
||||
_Campaigns.Clear();
|
||||
_Models.Clear();
|
||||
_Resources.Clear();
|
||||
_LoadButton.Disabled = true;
|
||||
|
||||
var pathManager = Context.Instance.PathManager;
|
||||
_Campaigns.AddItem("Original Missions");
|
||||
_Campaigns.AddItem("Original");
|
||||
foreach (var campaign in pathManager.GetCampaignNames())
|
||||
{
|
||||
_Campaigns.AddItem(campaign);
|
||||
}
|
||||
}
|
||||
|
||||
private void BuildModelList(long idx)
|
||||
private void BuildResourceList(long idx)
|
||||
{
|
||||
_Models.Clear();
|
||||
_Resources.Clear();
|
||||
_LoadButton.Disabled = true;
|
||||
|
||||
var pathManager = Context.Instance.PathManager;
|
||||
var campaignName = idx == 0 ? null : _Campaigns.GetItemText((int)idx);
|
||||
var modelNames = pathManager.GetResourceNames(ResourceType.Object, campaignName);
|
||||
foreach (var model in modelNames)
|
||||
var resourceNammes = pathManager.GetResourceNames(ResType, campaignName);
|
||||
foreach (var resource in resourceNammes)
|
||||
{
|
||||
_Models.AddItem(model);
|
||||
_Resources.AddItem(resource);
|
||||
}
|
||||
}
|
||||
|
||||
private void EmitLoadModel()
|
||||
private void EmitResourceSelected()
|
||||
{
|
||||
var campaignIdxs = _Campaigns.GetSelectedItems();
|
||||
var modelIdxs = _Models.GetSelectedItems();
|
||||
if (campaignIdxs.IsEmpty() || modelIdxs.IsEmpty())
|
||||
var resourceIdxs = _Resources.GetSelectedItems();
|
||||
if (campaignIdxs.IsEmpty() || resourceIdxs.IsEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var campaignIdx = campaignIdxs[0];
|
||||
var modelIdx = modelIdxs[0];
|
||||
var resourceIdx = resourceIdxs[0];
|
||||
var campaignName = campaignIdx == 0 ? null : _Campaigns.GetItemText(campaignIdx);
|
||||
var modelName = _Models.GetItemText(modelIdx);
|
||||
ModelSelected(campaignName, modelName);
|
||||
var resourceName = _Resources.GetItemText(resourceIdx);
|
||||
ResourceSelected(campaignName, resourceName);
|
||||
|
||||
Visible = false;
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/Mission.cs" id="1_3gnqe"]
|
||||
[ext_resource type="Script" path="res://project/code/camera.gd" id="2_w5otl"]
|
||||
[ext_resource type="PackedScene" uid="uid://cekg1xb5f0ux1" path="res://project/scenes/ui/mission_selector.tscn" id="3_hwfcj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bfxdpxkcgwlkx" path="res://project/scenes/ui/resource_selector.tscn" id="3_kdn7u"]
|
||||
[ext_resource type="PackedScene" uid="uid://0h2w7w84vbea" path="res://project/scenes/ui/lightmap_layer_toggler.tscn" id="4_naip8"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_cckyk"]
|
||||
|
@ -21,7 +21,7 @@ script = ExtResource("2_w5otl")
|
|||
|
||||
[node name="UI" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="MissionSelector" parent="UI" instance=ExtResource("3_hwfcj")]
|
||||
[node name="ResourceSelector" parent="UI" instance=ExtResource("3_kdn7u")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="LightmapToggler" parent="UI" instance=ExtResource("4_naip8")]
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/Model.cs" id="1_dax7s"]
|
||||
[ext_resource type="Script" path="res://project/code/camera.gd" id="2_ov7rc"]
|
||||
[ext_resource type="PackedScene" uid="uid://c366p056f8dlu" path="res://project/scenes/ui/model_selector.tscn" id="3_ovrmo"]
|
||||
[ext_resource type="PackedScene" uid="uid://bfxdpxkcgwlkx" path="res://project/scenes/ui/resource_selector.tscn" id="3_yp5sl"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_e4172"]
|
||||
ambient_light_source = 2
|
||||
|
@ -17,8 +17,9 @@ script = ExtResource("1_dax7s")
|
|||
|
||||
[node name="UI" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="ModelSelector" parent="UI" instance=ExtResource("3_ovrmo")]
|
||||
[node name="ResourceSelector" parent="UI" instance=ExtResource("3_yp5sl")]
|
||||
unique_name_in_owner = true
|
||||
ResType = 1
|
||||
|
||||
[node name="Environment" type="Node3D" parent="."]
|
||||
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://c366p056f8dlu"]
|
||||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/UI/ModelSelector.cs" id="1_oy1sl"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_4v24o"]
|
||||
font_size = 20
|
||||
|
||||
[node name="ModelSelector" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_oy1sl")
|
||||
|
||||
[node name="FolderSelect" type="FileDialog" parent="."]
|
||||
unique_name_in_owner = true
|
||||
title = "Open a Directory"
|
||||
initial_position = 2
|
||||
size = Vector2i(636, 175)
|
||||
ok_button_text = "Select Current Folder"
|
||||
file_mode = 2
|
||||
access = 2
|
||||
use_native_dialog = true
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
custom_minimum_size = Vector2(640, 0)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -144.0
|
||||
offset_top = -37.0
|
||||
offset_right = 144.0
|
||||
offset_bottom = 37.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 8
|
||||
theme_override_constants/margin_top = 8
|
||||
theme_override_constants/margin_right = 8
|
||||
theme_override_constants/margin_bottom = 8
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Title" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Model Selector"
|
||||
label_settings = SubResource("LabelSettings_4v24o")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="FolderSelect" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/FolderSelect"]
|
||||
layout_mode = 2
|
||||
text = "Folder"
|
||||
|
||||
[node name="FolderPath" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer/FolderSelect"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="BrowseButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/FolderSelect"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Browse"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Campaigns" type="ItemList" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 480)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Models" type="ItemList" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 480)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Buttons" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
|
||||
[node name="LoadButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/Buttons"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Load"
|
||||
|
||||
[node name="CancelButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/Buttons"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Cancel"
|
|
@ -1,11 +1,11 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://cekg1xb5f0ux1"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bfxdpxkcgwlkx"]
|
||||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/UI/MissionSelector.cs" id="1_kl8qm"]
|
||||
[ext_resource type="Script" path="res://project/code/TMV/UI/ResourceSelector.cs" id="1_4lx6q"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_4v24o"]
|
||||
font_size = 20
|
||||
|
||||
[node name="MissionSelector" type="Control"]
|
||||
[node name="ResourceSelector" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
|
@ -14,13 +14,13 @@ anchor_right = 0.5
|
|||
anchor_bottom = 0.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_kl8qm")
|
||||
script = ExtResource("1_4lx6q")
|
||||
|
||||
[node name="FolderSelect" type="FileDialog" parent="."]
|
||||
unique_name_in_owner = true
|
||||
title = "Open a Directory"
|
||||
initial_position = 2
|
||||
size = Vector2i(636, 175)
|
||||
size = Vector2i(636, 180)
|
||||
ok_button_text = "Select Current Folder"
|
||||
file_mode = 2
|
||||
access = 2
|
||||
|
@ -53,7 +53,7 @@ layout_mode = 2
|
|||
|
||||
[node name="Title" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Mission Selector"
|
||||
text = "Resource Selector"
|
||||
label_settings = SubResource("LabelSettings_4v24o")
|
||||
horizontal_alignment = 1
|
||||
|
||||
|
@ -83,7 +83,7 @@ custom_minimum_size = Vector2(0, 480)
|
|||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Missions" type="ItemList" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
[node name="Resources" type="ItemList" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 480)
|
||||
layout_mode = 2
|
Loading…
Reference in New Issue