Files
AZTECH_WB/Assets/Scripts/UI/SettingPanel/ControlSettingContent.cs
정영민 18bc516f1d [정영민] 아즈텍 UI 디자인 변경 및 기능 수정 1차
26.04.03
가상공장 화면 디자인 반영
  • 좌측 도구 창, 상단 UI, 하단 UI
  • 생산 현황판, 알림 현황판
  • 설비 라벨, 요약 팝업, 대시보드, 데이터 보드
  • 설정창, 미니맵, AI 시뮬레이션 결과창, 나가기 팝업
가상 공장 화면 디자인 변경에 따른 기능 추가
  • 미니맵 드래그 및 위치 조정 기능 추가
  • UI 상호 작용(호버링, 선택, 위치 이동, 재설정)
  • UI 기능 추가(상태 표시, 색상)
2026-04-03 11:50:05 +09:00

122 lines
3.6 KiB
C#

using AZTECHWB.Core;
using AZTECHWB.Management;
using System.Collections.Generic;
using UnityEngine;
namespace AZTECHWB.UI
{
public class ControlSettingContent : MonoBehaviour
{
private OrbitalController orbitalController;
private OptionManager optionManager;
private Dictionary<string, SliderInputField> controls = new();
private Dictionary<string, string> initialValues = new();
private Dictionary<string, string> workingValues = new();
public float minMoveSpeed;
public float maxMoveSpeed;
public float minRotateSpeed;
public float maxRotateSpeed;
public float minZoomSpeed;
public float maxZoomSpeed;
public void Init()
{
orbitalController = AZTECHAppMain.Instance.cameraController;
optionManager = FindAnyObjectByType<OptionManager>();
foreach (var field in GetComponentsInChildren<SliderInputField>())
{
field.SetSliderInputField();
controls.Add(field.name, field);
}
optionManager.onCompletedLoadOption += ApplyIniToUI;
}
public void ApplyIniToUI()
{
initialValues.Clear();
foreach (var key in controls.Keys)
{
string value = optionManager.GetValue("Control", key, GetDefaultValue(key));
initialValues[key] = value;
SetupSliderRange(key);
controls[key].SetText(value);
}
}
public void Apply()
{
workingValues.Clear();
foreach (var kv in controls)
{
float v = float.Parse(kv.Value.GetValue());
v = ClampValue(kv.Key, v);
string value = v.ToString("0.##");
workingValues[kv.Key] = value;
optionManager.SetValue("Control", kv.Key, value);
kv.Value.SetText(value);
}
ApplyToCamera();
}
void SetupSliderRange(string key)
{
var slider = controls[key].Slider;
switch (key)
{
case "MoveSpeed":
slider.minValue = minMoveSpeed;
slider.maxValue = maxMoveSpeed;
break;
case "RotateSpeed":
slider.minValue = minRotateSpeed;
slider.maxValue = maxRotateSpeed;
break;
case "ZoomSpeed":
slider.minValue = minZoomSpeed;
slider.maxValue = maxZoomSpeed;
break;
}
}
float ClampValue(string key, float value)
{
return key switch
{
"MoveSpeed" => Mathf.Clamp(value, minMoveSpeed, maxMoveSpeed),
"RotateSpeed" => Mathf.Clamp(value, minRotateSpeed, maxRotateSpeed),
"ZoomSpeed" => Mathf.Clamp(value, minZoomSpeed, maxZoomSpeed),
_ => value
};
}
string GetDefaultValue(string key)
{
return key switch
{
"MoveSpeed" => "5",
"RotateSpeed" => "90",
"ZoomSpeed" => "5",
_ => "1"
};
}
void ApplyToCamera()
{
orbitalController.moveSpeed = float.Parse(controls["MoveSpeed"].GetValue());
orbitalController.rotateSpeed = float.Parse(controls["RotateSpeed"].GetValue());
orbitalController.zoomSpeed = float.Parse(controls["ZoomSpeed"].GetValue());
}
}
}