Files
whdwo798 4dad9e5d5b feat: SongCreator 씬 완성 — Beat Sage URL 지원, info.dat 메타데이터 자동 추출
- BeatSageUploader: audio_url 지원(UploadFromUrl), PollAndDownload 공통화, ZIP 500 오류 3회 재시도
- BeatSageConverter: info.dat 파싱(SongMetadata), BPM 자동 감지 → 노트 타이밍 변환에 적용
- SongCreatorManager: title/BPM 필수 입력 제거, 난이도 4개 자동 선택, GenerateFlowFromUrl 버그 수정
- NasPublisher: audioPath null 허용(URL 흐름에서 로컬 파일 없는 경우 스킵)
- .gitignore/.gitattributes 초기 설정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 23:37:34 +09:00

112 lines
2.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using UnityEngine;
namespace VRSDK
{
public static class GlobalDefinitionsManager
{
const string DEFINES_FILE_PATH = "Assets/mcs.rsp";
public static void CreateAndWriteDefinition(string def)
{
List<string> currentDefList = GetCurrentDefinitios();
currentDefList.Add(def);
WriteDefinitions(currentDefList);
}
public static List<string> GetCurrentDefinitios()
{
if (!File.Exists( DEFINES_FILE_PATH ))
return new List<string>();
string[] lines = File.ReadAllLines( DEFINES_FILE_PATH );
for (int n = 0; n < lines.Length; n++)
{
if (lines[n].StartsWith( "-define:" ))
{
return lines[n].Replace( "-define:", "" ).Split( ';' ).ToList();
}
}
return new List<string>();
}
public static void WriteDefinitions(List<string> defList)
{
DeleteDefinitionsFile();
StringBuilder sb = new StringBuilder();
sb.Append( "-define:" );
for (int n = 0; n < defList.Count; n++)
{
sb.Append( defList[n] );
if (n < defList.Count - 1)
{
sb.Append( ";" );
}
}
using (StreamWriter writer = new StreamWriter( DEFINES_FILE_PATH, false ))
{
writer.Write( sb.ToString() );
}
}
public static void RemoveDefinitions(params string[] definitionArray)
{
List<string> currentDef = GetCurrentDefinitios();
for (int n = 0; n < currentDef.Count; n++)
{
for (int j = 0; j < definitionArray.Length; j++)
{
if (currentDef[n] == definitionArray[j])
{
currentDef.RemoveAt(n);
n--;
}
}
}
if (currentDef.Count <= 0)
DeleteDefinitionsFile();
else
WriteDefinitions(currentDef);
}
public static bool DefinitionExits(string def)
{
List<string> defList = GetCurrentDefinitios();
for (int n = 0; n < defList.Count; n++)
{
string currentDef = defList[n].Replace( " ", "" );
if (currentDef == def)
{
return true;
}
}
return false;
}
private static void DeleteDefinitionsFile()
{
//delete definitions file
if (File.Exists( DEFINES_FILE_PATH ))
File.Delete( DEFINES_FILE_PATH );
}
}
}