Main/Assets/Editor/External/ModelEditor/ModelDataManager.cs
2025-01-25 04:38:09 +08:00

132 lines
4.7 KiB
C#

using UnityEngine;
using System.Collections.Generic;
using Thousandto.Editor.Excel;
using Thousandto.Code.Logic;
using Thousandto.Core.Asset;
namespace Thousandto.Editor.ModelEditor
{
//模型编辑器数据管理器
public static class ModelDataManager
{
private static Dictionary<int, ModelData> _dataTable = null;
private static ExcelInfo _curExcelInfo = null;
public static Dictionary<int, ModelData> DataTable
{
get
{
return _dataTable;
}
}
public static void Load()
{
var path = "../../Gamedata/Config/client/ModelConfig.xlsx";
var excelInfo = ExcelReader.Read(path);
if (excelInfo == null)
return;
_curExcelInfo = excelInfo;
_dataTable = new Dictionary<int, ModelData>(excelInfo.IdValuesTable.Count);
var iter = excelInfo.IdValuesTable.GetEnumerator();
try
{
while (iter.MoveNext())
{
var modelData = new ModelData(iter.Current.Key, excelInfo);
_dataTable.Add(modelData.CfgID, modelData);
}
}
finally
{
iter.Dispose();
}
}
public static void Save()
{
if (_dataTable == null)
return;
if (_curExcelInfo == null)
return;
var iter = _dataTable.GetEnumerator();
try
{
while(iter.MoveNext())
{
iter.Current.Value.SaveToExcel();
}
}
finally
{
iter.Dispose();
}
var path = "../../Gamedata/Config/client/ModelConfig.xlsx";
ExcelWriter.Write(path, _curExcelInfo);
}
//从表格中获取模型类型
public static ModelTypeCode GetModelType(RoleSkinModelType type)
{
switch (type)
{
case RoleSkinModelType.PlayerBody://角色身体
return ModelTypeCode.Player;
case RoleSkinModelType.PlayerWeapon://武器
return ModelTypeCode.Weapon;
case RoleSkinModelType.GodWeapon://神兵武器
return ModelTypeCode.GodWeapon;
case RoleSkinModelType.PlayerWing: //翅膀
return ModelTypeCode.Wing;
case RoleSkinModelType.PlayerMount://角色坐骑
return ModelTypeCode.Mount;
case RoleSkinModelType.MonsterBody://怪物,npc主体
return ModelTypeCode.Monster;
case RoleSkinModelType.CollectionBody://采集物主体
return ModelTypeCode.Object;
case RoleSkinModelType.PlayerStrengthenVfx://角色强化特效
return ModelTypeCode.StrengthenVfx;
case RoleSkinModelType.DrapItem: //用于展示的武器
return ModelTypeCode.Object;
case RoleSkinModelType.GodWeaponVfx:
return ModelTypeCode.WeaponVFX;
default:
return ModelTypeCode.Object;
}
}
//从表格中获取模型类型
public static ModelTypeCode GetVfxModelType(RoleSkinModelType type)
{
switch (type)
{
case RoleSkinModelType.PlayerBody://角色身体
return ModelTypeCode.BodyVFX;
case RoleSkinModelType.PlayerWeapon://武器
case RoleSkinModelType.GodWeapon://神兵武器
return ModelTypeCode.WeaponVFX;
case RoleSkinModelType.PlayerWing: //翅膀
return ModelTypeCode.WingVFX;
case RoleSkinModelType.PlayerMount://角色坐骑
return ModelTypeCode.MountVFX;
case RoleSkinModelType.MonsterBody://怪物,npc主体
return ModelTypeCode.MonsterVFX;
case RoleSkinModelType.CollectionBody://采集物主体
return ModelTypeCode.CollectionVFX;
case RoleSkinModelType.PlayerStrengthenVfx://角色强化特效
return ModelTypeCode.BodyVFX;
case RoleSkinModelType.DrapItem: //用于展示的武器
return ModelTypeCode.OtherVFX;
default:
return ModelTypeCode.OtherVFX;
}
}
public static void Clear()
{
if (_dataTable != null)
{
_dataTable.Clear();
}
_dataTable = null;
}
}
}