From fd0130eec3112b086acfd5581f2c16c5c3e5fa80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=98=81=EB=AF=BC?= <117150306+jym04@users.noreply.github.com> Date: Tue, 15 Jul 2025 17:53:41 +0900 Subject: [PATCH] =?UTF-8?q?Window=20=EC=82=AC=EC=9A=A9=20=EC=A0=9C?= =?UTF-8?q?=ED=95=9C=20=ED=8A=B9=EC=88=98=20=EA=B8=B0=ED=98=B8=20=EB=A7=89?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Studio/UI/Panel/Panel_NewProjectInfo.cs | 28 ++++++++++++++----- .../UI/Panel/Panel_TopMenuNewProjectInfo.cs | 27 ++++++++++++++---- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs index c9748abd..a23dad7b 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_NewProjectInfo.cs @@ -53,7 +53,7 @@ namespace Studio.UI var projectName = GetProjectName(); var projectPath = GetProjectRoute(); - if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild()) + if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild(projectName) || IsWindowRestrictedKey(projectName)) { InputFieldHighlight(InputField_ProjectName); return; @@ -107,18 +107,32 @@ namespace Studio.UI } return true; } - private bool IsProjectExistVaild() + private bool IsProjectExistVaild(string projectName) { - var projectPath = InputField_ProjectRoute.text; - var projectNameAndExtension = $"{InputField_ProjectName.text}.ocs"; - - var filePath = Path.Combine(projectPath, projectNameAndExtension); - if (File.Exists(filePath)) + var projectNameAndExtension = $"{projectName}.ocs"; + + if (File.Exists(projectNameAndExtension)) { return false; } return true; } + private bool IsWindowRestrictedKey(string input) + { + char[] invalidChars = Path.GetInvalidFileNameChars(); + + if (input[0] == ' ') + return true; + + foreach (char c in input) + { + if (invalidChars.Contains(c)) + { + return true; + } + } + return false; + } private void InputFieldHighlight(TMP_InputField inputField) { CoroutineRunner.instance.StartCoroutine(Blink(inputField)); diff --git a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs index ea32f223..fc4b72af 100644 --- a/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs +++ b/Assets/Scripts/Studio/UI/Panel/Panel_TopMenuNewProjectInfo.cs @@ -2,6 +2,7 @@ using Studio.Core; using System; using System.Collections; using System.IO; +using System.Linq; using TMPro; using TriLibCore.SFB; using UnityEngine; @@ -47,7 +48,7 @@ namespace Studio.UI var projectName = GetProjectName(); var projectPath = GetProjectRoute(); - if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild()) + if (!IsProjectNameVaild(projectName) || !IsProjectExistVaild(projectName) || IsWindowRestrictedKey(projectName)) { InputFieldHighlight(InputField_ProjectName); return; @@ -99,18 +100,32 @@ namespace Studio.UI } return true; } - private bool IsProjectExistVaild() + private bool IsProjectExistVaild(string projectName) { - var projectPath = InputField_ProjectRoute.text; - var projectNameAndExtension = $"{InputField_ProjectName.text}.ocs"; + var projectNameAndExtension = $"{projectName}.ocs"; - var filePath = Path.Combine(projectPath, projectNameAndExtension); - if (File.Exists(filePath)) + if (File.Exists(projectNameAndExtension)) { return false; } return true; } + private bool IsWindowRestrictedKey(string input) + { + char[] invalidChars = Path.GetInvalidFileNameChars(); + + if (input[0] == ' ') + return true; + + foreach (char c in input) + { + if (invalidChars.Contains(c)) + { + return true; + } + } + return false; + } private void InputFieldHighlight(TMP_InputField inputField) { CoroutineRunner.instance.StartCoroutine(Blink(inputField));