117 lines
4.1 KiB
C#
117 lines
4.1 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using System.IO;
|
|
|
|
namespace CharacterPreview
|
|
{
|
|
[Serializable]
|
|
public class ConfigData
|
|
{
|
|
public Vector3 modelPosition;
|
|
public Vector3 modelRotation;
|
|
public float modelScale;
|
|
public bool use = false;
|
|
public bool tip = true;
|
|
public bool hideCamera = true;
|
|
public bool showSetEditButton = true;
|
|
public bool canEdit = true;
|
|
public float editSpeed = 1;
|
|
public bool showEquipment = true;
|
|
}
|
|
|
|
[Serializable]
|
|
public class Config
|
|
{
|
|
private const string MOD_ID = "CharacterPreview";
|
|
|
|
private string configSavePath;
|
|
|
|
public ConfigData data = new ConfigData();
|
|
|
|
public Config(string savePath)
|
|
{
|
|
configSavePath = savePath;
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
data.use = true;
|
|
var json = JsonUtility.ToJson(data, true);
|
|
File.WriteAllText(configSavePath, json);
|
|
}
|
|
|
|
public static Config Load(string savePath)
|
|
{
|
|
if (!File.Exists(savePath))
|
|
{
|
|
try
|
|
{
|
|
File.Create(savePath).Dispose();
|
|
}
|
|
catch (IOException ex)
|
|
{
|
|
Debug.LogError($"Failed to create empty config file at {savePath}: {ex.Message}");
|
|
return new Config(savePath) { data = new ConfigData() };
|
|
}
|
|
}
|
|
|
|
var json = File.ReadAllText(savePath);
|
|
var loadedData = JsonUtility.FromJson<ConfigData>(json);
|
|
|
|
var config = new Config(savePath);
|
|
config.data = loadedData ?? new ConfigData();
|
|
config.GenerateSetting();
|
|
return config;
|
|
}
|
|
|
|
public void GenerateSetting()
|
|
{
|
|
if (!Api.ModConfigAPI.Initialize())
|
|
return;
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "use", "使用配置中保存的位置数据", data.use);
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "tip", "开启操作提示", data.tip);
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID,"hideCamera","隐藏摄像机模型", data.hideCamera);
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "showSetEditButton", "显示启用编辑按钮", data.showSetEditButton);
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "canEdit", "是否启用编辑", data.canEdit);
|
|
Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "showEquipment", "显示装备", data.showEquipment);
|
|
Api.ModConfigAPI.SafeAddInputWithSlider(MOD_ID, "editSpeed", "编辑灵敏度", typeof(float), 1,
|
|
new Vector2(0.1f, 10));
|
|
|
|
|
|
Api.ModConfigAPI.SafeAddOnOptionsChangedDelegate(OnSettingChange);
|
|
}
|
|
|
|
public void OnSettingChange(string key)
|
|
{
|
|
var content = key.Split('_');
|
|
if(content.Length<2||content[0]!=MOD_ID)
|
|
return;
|
|
key = content[1];
|
|
Debug.Log($"OnSettingChange_{key}");
|
|
switch (key)
|
|
{
|
|
case "use":
|
|
data.use = Api.ModConfigAPI.SafeLoad(MOD_ID, "use", false);
|
|
break;
|
|
case "tip":
|
|
data.tip = Api.ModConfigAPI.SafeLoad(MOD_ID, "tip", true);
|
|
break;
|
|
case "hideCamera":
|
|
data.hideCamera = Api.ModConfigAPI.SafeLoad(MOD_ID, "hideCamera", true);
|
|
break;
|
|
case "showSetEditButton":
|
|
data.showSetEditButton = Api.ModConfigAPI.SafeLoad(MOD_ID, "showSetEditButton", true);
|
|
break;
|
|
case "canEdit":
|
|
data.canEdit = Api.ModConfigAPI.SafeLoad(MOD_ID, "canEdit", true);
|
|
break;
|
|
case "showEquipment":
|
|
data.showEquipment = Api.ModConfigAPI.SafeLoad(MOD_ID, "showEquipment", true);
|
|
break;
|
|
case "editSpeed":
|
|
data.editSpeed = Api.ModConfigAPI.SafeLoad(MOD_ID, "editSpeed", 1f);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |