26.04.03 가상공장 화면 디자인 반영 • 좌측 도구 창, 상단 UI, 하단 UI • 생산 현황판, 알림 현황판 • 설비 라벨, 요약 팝업, 대시보드, 데이터 보드 • 설정창, 미니맵, AI 시뮬레이션 결과창, 나가기 팝업 가상 공장 화면 디자인 변경에 따른 기능 추가 • 미니맵 드래그 및 위치 조정 기능 추가 • UI 상호 작용(호버링, 선택, 위치 이동, 재설정) • UI 기능 추가(상태 표시, 색상)
122 lines
3.6 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|