53 lines
1.1 KiB
C#
53 lines
1.1 KiB
C#
using Godot;
|
|
|
|
[Tool]
|
|
public partial class FileButton : MenuButton
|
|
{
|
|
const int NEWFILE = 0;
|
|
const int SAVEFILE = 1;
|
|
const int OPENFILE = 2;
|
|
private AdventureEditor editor;
|
|
private FileDialog dialog;
|
|
private int chosenOption = -1;
|
|
public override void _Ready()
|
|
{
|
|
editor = (AdventureEditor)FindParent("AdventureEditor");
|
|
dialog = GetNode<FileDialog>("FileDialog");
|
|
|
|
GetPopup().IndexPressed += OnIndexPressed;
|
|
dialog.FileSelected += OnFileSelected;
|
|
}
|
|
|
|
private void OnIndexPressed(long index)
|
|
{
|
|
chosenOption = (int)index;
|
|
if (index == NEWFILE)
|
|
{
|
|
editor.editedResource = new AdventureLevelResource();
|
|
dialog.PopupCentered();
|
|
dialog.FileMode = FileDialog.FileModeEnum.SaveFile;
|
|
}
|
|
else if (index == SAVEFILE)
|
|
{
|
|
editor.Save();
|
|
}
|
|
else if (index == OPENFILE)
|
|
{
|
|
dialog.PopupCentered();
|
|
dialog.FileMode = FileDialog.FileModeEnum.OpenFile;
|
|
}
|
|
}
|
|
private void OnFileSelected(string path)
|
|
{
|
|
editor.editedPath = path;
|
|
if (chosenOption == NEWFILE)
|
|
{
|
|
editor.Save();
|
|
}
|
|
else if (chosenOption == OPENFILE)
|
|
{
|
|
editor.Reload();
|
|
}
|
|
}
|
|
|
|
}
|