Files
JJBB/Assets/Editor/Scripts/Model/TableCharModelEditor.cs

168 lines
4.8 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
//This code create by CodeEngine ,don't modify
using System;
using System.Collections.Generic;
using System.Collections;
using UnityEngine;
using System.IO;
using System.Text;
class CharModelUIShowItem
{
public int DataID;
public string ModelPath;
public string ModelName;
public Vector3 BodyPosition;
public Vector3 BodyRotation;
public Vector3 HalfPosition;
public Vector3 HalfRotation;
public string[] StrValues;
}
class CharModelUIShowTable
{
public static List<string> _TabTitle = new List<string>();
public static Dictionary<int, CharModelUIShowItem> _TabItems = new Dictionary<int, CharModelUIShowItem>();
public static void ReadTable()
{
string filePath = Application.dataPath + "/../../Public/ClientTables/CharModel.txt";
_TabItems.Clear();
_TabTitle.Clear();
if (File.Exists(filePath))
{
FileStream rfs = new FileStream(filePath, FileMode.Open);
StreamReader sr = new StreamReader(rfs, Encoding.GetEncoding("GB2312"));
try
{
int i = 0;
while (!sr.EndOfStream) //14,15,16,17
{
if (i < 4)
{
_TabTitle.Add(sr.ReadLine());
++i;
continue;
}
string curLine = sr.ReadLine();
string[] values = curLine.Split('\t');
if (values.Length < 17)
{
Debug.LogError("ReadCharModel,LengthError");
return;
}
CharModelUIShowItem curData = new CharModelUIShowItem();
if (!values[0].StartsWith("#"))
{
curData.DataID = int.Parse(values[0]);
curData.ModelName = (values[2]);
curData.ModelPath = values[4];
curData.BodyPosition = StrToVector3(values[15]);
curData.BodyRotation = StrToVector3(values[16]);
curData.HalfPosition = StrToVector3(values[17]);
curData.HalfRotation = StrToVector3(values[18]);
curData.StrValues = values;
_TabItems.Add(curData.DataID, curData);
}
}
}
catch (Exception e)
{
Debug.Log("Read table error:" + e.ToString());
}
rfs.Close();
sr.Close();
}
}
public static void WriteTable()
{
if (_TabTitle.Count == 0)
{
ReadTable();
}
string filePath = Application.dataPath + "/../../Public/ClientTables/CharModel.txt";
if (File.Exists(filePath))
{
File.Delete(filePath);
}
FileStream wfs = new FileStream(filePath, FileMode.CreateNew);
StreamWriter sw = new StreamWriter(wfs, Encoding.GetEncoding("GB2312"));
try
{
foreach (var title in _TabTitle)
{
sw.WriteLine(title);
}
foreach (var tabItem in _TabItems.Values)
{
sw.WriteLine(TabItemToString(tabItem)); ;
}
}
catch (Exception e)
{ }
sw.Close();
wfs.Close();
}
private static Vector3 StrToVector3(string strValue)
{
var splitStrs = strValue.Split(';');
if (splitStrs.Length != 3)
{
Debug.LogError("StrToVector3 error:" + strValue);
return Vector3.zero;
}
return new Vector3(float.Parse(splitStrs[0]), float.Parse(splitStrs[1]), float.Parse(splitStrs[2]));
}
private static string Vector3ToStr(Vector3 vector)
{
return vector.x + ";" + vector.y + ";" + vector.z;
}
private static string TabItemToString(CharModelUIShowItem showItem)
{
string itemStr = "";
for (int i = 0; i < showItem.StrValues.Length; ++i)
{
if (i == 15)
{
itemStr += Vector3ToStr(showItem.BodyPosition);
}
else if (i == 16)
{
itemStr += Vector3ToStr(showItem.BodyRotation);
}
else if (i == 17)
{
itemStr += Vector3ToStr(showItem.HalfPosition);
}
else if (i == 18)
{
itemStr += Vector3ToStr(showItem.HalfRotation);
}
else
{
itemStr += showItem.StrValues[i];
}
if (i < showItem.StrValues.Length - 1)
{
itemStr += "\t";
}
}
return itemStr;
}
}