You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

431 lines
18 KiB

//============================================
//--4>:
// Exported by ExcelConfigExport
//
// 此代码为工具根据配置自动生成, 请不要修改
//
//============================================
using System;
using Sog;
using System.Collections.Generic;
#if UNITY_2019_1_OR_NEWER
using GameLogic;
#endif
public partial class PetPanterDescMgr : IConfigManager
{
//Singleton
private static PetPanterDescMgr _instance;
private static readonly object syslock = new object();
public static PetPanterDescMgr Instance { get { if (_instance == null) { lock (syslock) { if (_instance == null) { _instance = new PetPanterDescMgr(); }}} return _instance; }}
public class ItemData
{
public PetPanterDesc Item;
public int Line;
public bool ReadAlready;
}
protected SortedList<int, SortedList<int, ItemData>> m_ItemTable = new SortedList<int, SortedList<int, ItemData>>();
//for server only, m_readKeyOnly must be false
protected SortedList<int, SortedList<int, PetPanterDesc>> m_ItemDescTable = new SortedList<int, SortedList<int, PetPanterDesc>>();
public SortedList<int, SortedList<int, PetPanterDesc>> ItemTable { get {
if (m_ItemDescTable.Count != m_ItemTable.Count) {
foreach (var list in m_ItemTable) {
if (m_ItemDescTable.ContainsKey(list.Key) == false) {
GetGroup(list.Key);} // GetGroup里会添加
}
}
return m_ItemDescTable; } }
private TabBinFile m_tbf;
//private TabTextFile m_tf;
private int m_curAsynKey1;
private int m_curAsynKey2;
public override bool InitBin(string fileName, byte[] fileContent)
{
m_ErrorCount = 0;
m_ItemTable.Clear();
m_ItemDescTable.Clear();
m_allRead = false;
m_curAsynKey1 = 0;
m_curAsynKey2 = 0;
m_tbf = new TabBinFile(fileName, fileContent);
while (m_tbf.Next())
{
ItemData itemData = new ItemData() { Item = new PetPanterDesc() };
var item = itemData.Item;
if (m_readKeyOnly) {m_tbf.SetCurrentCol(0); }
if (item.ReadItemBin(m_tbf, m_readKeyOnly) == false)
{
TraceLog.Error("Failed to init TabManager:{0}, read line error, line: {1}", this.ToString(), m_tbf.CurrentLine);
m_ErrorCount++;
return false;
}
if (m_ItemTable.ContainsKey(item.GetKey1()) == false)
{
m_ItemTable.Add(item.GetKey1(), new SortedList<int, ItemData>());
}
else if (m_ItemTable[item.GetKey1()].ContainsKey(item.GetKey2()))
{
TraceLog.Error("Failed to init TabManager:{0}, multi key1:{1}, key2: {2}, line: {3}",this.ToString(), item.GetKey1(), item.GetKey2(), m_tbf.CurrentLine);
m_ErrorCount++;
return false;
}
m_ItemTable[item.GetKey1()].Add(item.GetKey2(), itemData);
if (m_readKeyOnly)
{
itemData.Line = m_tbf.CurrentLine;
}
else
{
itemData.ReadAlready = true;
}
}
if (!m_readKeyOnly)
{
m_tbf = null;
}
return true;
}
#if UNITY_2019_1_OR_NEWER
public override bool InitBinByIL(string fileName, byte[] fileContent)
{
m_ErrorCount = 0;
m_ItemTable.Clear();
m_tbf = new TabBinFile(fileName, fileContent);
while (m_tbf.Next())
{
ItemData itemData = new ItemData() { Item = new PetPanterDesc() };
int keyCount = 0;
if(m_readKeyOnly) {keyCount = 2;}
var item = itemData.Item;
item = item.ReadItemInIL(m_tbf, keyCount);
if (item == null)
{
TraceLog.Error("Failed to init TabManager:{0}, read line error, line: {1}", this.ToString(), m_tbf.CurrentLine);
m_ErrorCount++;
continue;
}
if (m_ItemTable.ContainsKey(item.GetKey1()) == false)
{
m_ItemTable.Add(item.GetKey1(), new SortedList<int, ItemData>());
}
else if (m_ItemTable[item.GetKey1()].ContainsKey(item.GetKey2()))
{
TraceLog.Error("Failed to init TabManager:{0}, multi key1:{1}, key2: {2}, line: {3}",this.ToString(), item.GetKey1(), item.GetKey2(), m_tbf.CurrentLine);
m_ErrorCount++;
return false;
}
m_ItemTable[item.GetKey1()].Add(item.GetKey2(), itemData);
if (m_readKeyOnly)
{
itemData.Line = m_tbf.CurrentLine;
}
else
{
itemData.ReadAlready = true;
}
}
return true;
}
#endif
public PetPanterDesc GetConfig(int key1, int key2)
{
SortedList<int, ItemData> itemDataGroup;
m_ItemTable.TryGetValue(key1, out itemDataGroup);
if (itemDataGroup == null) { return null; }
ItemData itemData;
itemDataGroup.TryGetValue(key2, out itemData);
if(itemData == null)
{
return null;
}
if(itemData.ReadAlready)
{
return itemData.Item;
}
m_tbf.SetCurrentLine(itemData.Line);
m_tbf.SetCurrentCol(0);
itemData.ReadAlready = true;
if (m_tbf == null)
{
TraceLog.Error("Cfg1KeyMgrTemplate.GetConfig Failed fs null TabManager:{ 0}, read line error", this.ToString());
return null;
}
if (itemData.Item.ReadItemBin(m_tbf, false) == false)
{
TraceLog.Error("Cfg1KeyMgrTemplate.GetConfig Failed to init TabManager:{0}, read line error, line: {1}", this.ToString(), m_tbf.CurrentLine);
return null;
}
return itemData.Item;
}
public int GetCountKey1(int key1)
{
int allCount = 0;
var group = GetGroup(key1);
if(group != null)
{
allCount = group.Count;
}
return allCount;
}
//GetGroup的时候如果是延迟读取的,一次性读取整个group
public SortedList<int, PetPanterDesc> GetGroup(int key1)
{
SortedList<int, ItemData> itemDataGroup;
m_ItemTable.TryGetValue(key1, out itemDataGroup);
if (itemDataGroup == null) { return null; }
if(m_ItemDescTable.ContainsKey(key1)) { return m_ItemDescTable[key1]; }
var group = new SortedList<int, PetPanterDesc>();
foreach (var item in itemDataGroup) {
if(item.Value.ReadAlready == false) { GetConfig(key1, item.Key); }
group.Add(item.Key, item.Value.Item); }
m_ItemDescTable.Add(key1, group);
return group;
}
public bool Has(int key1, int key2) { return m_ItemTable.ContainsKey(key1) && m_ItemTable[key1].ContainsKey(key2); }
public override int AsynReadBin(int maxTimes)
{
int times = 0;
if (m_allRead)
{
return times;
}
if (m_tbf == null)
{
return times;
}
while (times < maxTimes && m_curAsynKey1 < m_ItemTable.Count)
{
var group = m_ItemTable.Values[m_curAsynKey1];
if (m_curAsynKey2 >= group.Count)
{
m_curAsynKey2 = 0;
m_curAsynKey1++;
continue;
}
var itemData = group.Values[m_curAsynKey2];
if (itemData.ReadAlready)
{
m_curAsynKey2++;
continue;
}
m_tbf.SetCurrentLine(itemData.Line);
m_tbf.SetCurrentCol(0);
itemData.ReadAlready = true;
if (itemData.Item.ReadItemBin(m_tbf, false) == false)
{
TraceLog.Error("Cfg1KeyMgrTemplate.AsynReadBin Failed to init TabManager:{ 0}, read line error, line: { 1}", this.ToString(), m_tbf.CurrentLine);
return times;
}
m_curAsynKey2++;
times++;
}
if (m_curAsynKey1 >= m_ItemTable.Count)
{
m_allRead = true;
m_tbf = null;
}
return times;
}
}
public partial class PetPanterDesc
{
public static readonly string _KEY_Id = "Id";
public static readonly string _KEY_level = "level";
public static readonly string _KEY_panterType = "panterType";
public static readonly string _KEY_panterList_10_0 = "panterList_10_0";
public static readonly string _KEY_panterList_10_1 = "panterList_10_1";
public static readonly string _KEY_panterList_10_2 = "panterList_10_2";
public static readonly string _KEY_panterList_10_3 = "panterList_10_3";
public static readonly string _KEY_panterList_10_4 = "panterList_10_4";
public static readonly string _KEY_panterList_10_5 = "panterList_10_5";
public static readonly string _KEY_panterList_10_6 = "panterList_10_6";
public static readonly string _KEY_panterList_10_7 = "panterList_10_7";
public static readonly string _KEY_panterList_10_8 = "panterList_10_8";
public static readonly string _KEY_panterList_10_9 = "panterList_10_9";
public static readonly string _KEY_panterStar_2_0 = "panterStar_2_0";
public static readonly string _KEY_panterStar_2_1 = "panterStar_2_1";
public static readonly string _KEY_baseAttributeType_4_0 = "baseAttributeType_4_0";
public static readonly string _KEY_baseAttributeType_4_1 = "baseAttributeType_4_1";
public static readonly string _KEY_baseAttributeType_4_2 = "baseAttributeType_4_2";
public static readonly string _KEY_baseAttributeType_4_3 = "baseAttributeType_4_3";
public static readonly string _KEY_baseAttributeValue_4_0 = "baseAttributeValue_4_0";
public static readonly string _KEY_baseAttributeValue_4_1 = "baseAttributeValue_4_1";
public static readonly string _KEY_baseAttributeValue_4_2 = "baseAttributeValue_4_2";
public static readonly string _KEY_baseAttributeValue_4_3 = "baseAttributeValue_4_3";
public static readonly string _KEY_specialAttributeType_10_0 = "specialAttributeType_10_0";
public static readonly string _KEY_specialAttributeType_10_1 = "specialAttributeType_10_1";
public static readonly string _KEY_specialAttributeType_10_2 = "specialAttributeType_10_2";
public static readonly string _KEY_specialAttributeType_10_3 = "specialAttributeType_10_3";
public static readonly string _KEY_specialAttributeType_10_4 = "specialAttributeType_10_4";
public static readonly string _KEY_specialAttributeType_10_5 = "specialAttributeType_10_5";
public static readonly string _KEY_specialAttributeType_10_6 = "specialAttributeType_10_6";
public static readonly string _KEY_specialAttributeType_10_7 = "specialAttributeType_10_7";
public static readonly string _KEY_specialAttributeType_10_8 = "specialAttributeType_10_8";
public static readonly string _KEY_specialAttributeType_10_9 = "specialAttributeType_10_9";
public static readonly string _KEY_specialAttributeValue_10_0 = "specialAttributeValue_10_0";
public static readonly string _KEY_specialAttributeValue_10_1 = "specialAttributeValue_10_1";
public static readonly string _KEY_specialAttributeValue_10_2 = "specialAttributeValue_10_2";
public static readonly string _KEY_specialAttributeValue_10_3 = "specialAttributeValue_10_3";
public static readonly string _KEY_specialAttributeValue_10_4 = "specialAttributeValue_10_4";
public static readonly string _KEY_specialAttributeValue_10_5 = "specialAttributeValue_10_5";
public static readonly string _KEY_specialAttributeValue_10_6 = "specialAttributeValue_10_6";
public static readonly string _KEY_specialAttributeValue_10_7 = "specialAttributeValue_10_7";
public static readonly string _KEY_specialAttributeValue_10_8 = "specialAttributeValue_10_8";
public static readonly string _KEY_specialAttributeValue_10_9 = "specialAttributeValue_10_9";
public int Id { get; set; } // //id
public int level { get; set; } // //羁绊等级
public int panterType { get; set; } // //羁绊类型 1、伙伴羁绊(属性加给伙伴) 2、玩家羁绊(属性加给玩家)
public int[] panterList { get; set; } // //伙伴列表
public int[] panterStar { get; set; } // //羁绊条件:伙伴星星阶级
public int[] baseAttributeType { get; set; } // //固定值属性类型
public int[] baseAttributeValue { get; set; } // //固定值属性值(万分比)
public int[] specialAttributeType { get; set; } // //百分比属性类型
public int[] specialAttributeValue { get; set; } // //百分比属性值(填万分比)
public Dictionary<string, Type> listDic = new Dictionary<string, Type>();
public PetPanterDesc()
{
panterList = new int[10];
listDic.Add("panterList", typeof(int));
panterStar = new int[2];
listDic.Add("panterStar", typeof(int));
baseAttributeType = new int[4];
listDic.Add("baseAttributeType", typeof(int));
baseAttributeValue = new int[4];
listDic.Add("baseAttributeValue", typeof(int));
specialAttributeType = new int[10];
listDic.Add("specialAttributeType", typeof(int));
specialAttributeValue = new int[10];
listDic.Add("specialAttributeValue", typeof(int));
}
public int GetKey1() { return Id; }
public int GetKey2() { return level; }
public bool ReadItem(TabTextFile txf, bool readKeyOnly)
{
Id = txf.Get<int>(_KEY_Id);
level = txf.Get<int>(_KEY_level);
if(readKeyOnly) { return true; }
panterType = txf.Get<int>(_KEY_panterType);
panterList[0] = txf.Get<int>(_KEY_panterList_10_0);
panterList[1] = txf.Get<int>(_KEY_panterList_10_1);
panterList[2] = txf.Get<int>(_KEY_panterList_10_2);
panterList[3] = txf.Get<int>(_KEY_panterList_10_3);
panterList[4] = txf.Get<int>(_KEY_panterList_10_4);
panterList[5] = txf.Get<int>(_KEY_panterList_10_5);
panterList[6] = txf.Get<int>(_KEY_panterList_10_6);
panterList[7] = txf.Get<int>(_KEY_panterList_10_7);
panterList[8] = txf.Get<int>(_KEY_panterList_10_8);
panterList[9] = txf.Get<int>(_KEY_panterList_10_9);
panterStar[0] = txf.Get<int>(_KEY_panterStar_2_0);
panterStar[1] = txf.Get<int>(_KEY_panterStar_2_1);
baseAttributeType[0] = txf.Get<int>(_KEY_baseAttributeType_4_0);
baseAttributeType[1] = txf.Get<int>(_KEY_baseAttributeType_4_1);
baseAttributeType[2] = txf.Get<int>(_KEY_baseAttributeType_4_2);
baseAttributeType[3] = txf.Get<int>(_KEY_baseAttributeType_4_3);
baseAttributeValue[0] = txf.Get<int>(_KEY_baseAttributeValue_4_0);
baseAttributeValue[1] = txf.Get<int>(_KEY_baseAttributeValue_4_1);
baseAttributeValue[2] = txf.Get<int>(_KEY_baseAttributeValue_4_2);
baseAttributeValue[3] = txf.Get<int>(_KEY_baseAttributeValue_4_3);
specialAttributeType[0] = txf.Get<int>(_KEY_specialAttributeType_10_0);
specialAttributeType[1] = txf.Get<int>(_KEY_specialAttributeType_10_1);
specialAttributeType[2] = txf.Get<int>(_KEY_specialAttributeType_10_2);
specialAttributeType[3] = txf.Get<int>(_KEY_specialAttributeType_10_3);
specialAttributeType[4] = txf.Get<int>(_KEY_specialAttributeType_10_4);
specialAttributeType[5] = txf.Get<int>(_KEY_specialAttributeType_10_5);
specialAttributeType[6] = txf.Get<int>(_KEY_specialAttributeType_10_6);
specialAttributeType[7] = txf.Get<int>(_KEY_specialAttributeType_10_7);
specialAttributeType[8] = txf.Get<int>(_KEY_specialAttributeType_10_8);
specialAttributeType[9] = txf.Get<int>(_KEY_specialAttributeType_10_9);
specialAttributeValue[0] = txf.Get<int>(_KEY_specialAttributeValue_10_0);
specialAttributeValue[1] = txf.Get<int>(_KEY_specialAttributeValue_10_1);
specialAttributeValue[2] = txf.Get<int>(_KEY_specialAttributeValue_10_2);
specialAttributeValue[3] = txf.Get<int>(_KEY_specialAttributeValue_10_3);
specialAttributeValue[4] = txf.Get<int>(_KEY_specialAttributeValue_10_4);
specialAttributeValue[5] = txf.Get<int>(_KEY_specialAttributeValue_10_5);
specialAttributeValue[6] = txf.Get<int>(_KEY_specialAttributeValue_10_6);
specialAttributeValue[7] = txf.Get<int>(_KEY_specialAttributeValue_10_7);
specialAttributeValue[8] = txf.Get<int>(_KEY_specialAttributeValue_10_8);
specialAttributeValue[9] = txf.Get<int>(_KEY_specialAttributeValue_10_9);
return true;
}
public bool ReadItemBin(TabBinFile txf, bool readKeyOnly)
{
Id = txf.GetintByIndex(_KEY_Id);
level = txf.GetintByIndex(_KEY_level);
if(readKeyOnly) { return true; }
panterType = txf.GetintByIndex(_KEY_panterType);
panterList[0] = txf.GetintByIndex(_KEY_panterList_10_0);
panterList[1] = txf.GetintByIndex(_KEY_panterList_10_1);
panterList[2] = txf.GetintByIndex(_KEY_panterList_10_2);
panterList[3] = txf.GetintByIndex(_KEY_panterList_10_3);
panterList[4] = txf.GetintByIndex(_KEY_panterList_10_4);
panterList[5] = txf.GetintByIndex(_KEY_panterList_10_5);
panterList[6] = txf.GetintByIndex(_KEY_panterList_10_6);
panterList[7] = txf.GetintByIndex(_KEY_panterList_10_7);
panterList[8] = txf.GetintByIndex(_KEY_panterList_10_8);
panterList[9] = txf.GetintByIndex(_KEY_panterList_10_9);
panterStar[0] = txf.GetintByIndex(_KEY_panterStar_2_0);
panterStar[1] = txf.GetintByIndex(_KEY_panterStar_2_1);
baseAttributeType[0] = txf.GetintByIndex(_KEY_baseAttributeType_4_0);
baseAttributeType[1] = txf.GetintByIndex(_KEY_baseAttributeType_4_1);
baseAttributeType[2] = txf.GetintByIndex(_KEY_baseAttributeType_4_2);
baseAttributeType[3] = txf.GetintByIndex(_KEY_baseAttributeType_4_3);
baseAttributeValue[0] = txf.GetintByIndex(_KEY_baseAttributeValue_4_0);
baseAttributeValue[1] = txf.GetintByIndex(_KEY_baseAttributeValue_4_1);
baseAttributeValue[2] = txf.GetintByIndex(_KEY_baseAttributeValue_4_2);
baseAttributeValue[3] = txf.GetintByIndex(_KEY_baseAttributeValue_4_3);
specialAttributeType[0] = txf.GetintByIndex(_KEY_specialAttributeType_10_0);
specialAttributeType[1] = txf.GetintByIndex(_KEY_specialAttributeType_10_1);
specialAttributeType[2] = txf.GetintByIndex(_KEY_specialAttributeType_10_2);
specialAttributeType[3] = txf.GetintByIndex(_KEY_specialAttributeType_10_3);
specialAttributeType[4] = txf.GetintByIndex(_KEY_specialAttributeType_10_4);
specialAttributeType[5] = txf.GetintByIndex(_KEY_specialAttributeType_10_5);
specialAttributeType[6] = txf.GetintByIndex(_KEY_specialAttributeType_10_6);
specialAttributeType[7] = txf.GetintByIndex(_KEY_specialAttributeType_10_7);
specialAttributeType[8] = txf.GetintByIndex(_KEY_specialAttributeType_10_8);
specialAttributeType[9] = txf.GetintByIndex(_KEY_specialAttributeType_10_9);
specialAttributeValue[0] = txf.GetintByIndex(_KEY_specialAttributeValue_10_0);
specialAttributeValue[1] = txf.GetintByIndex(_KEY_specialAttributeValue_10_1);
specialAttributeValue[2] = txf.GetintByIndex(_KEY_specialAttributeValue_10_2);
specialAttributeValue[3] = txf.GetintByIndex(_KEY_specialAttributeValue_10_3);
specialAttributeValue[4] = txf.GetintByIndex(_KEY_specialAttributeValue_10_4);
specialAttributeValue[5] = txf.GetintByIndex(_KEY_specialAttributeValue_10_5);
specialAttributeValue[6] = txf.GetintByIndex(_KEY_specialAttributeValue_10_6);
specialAttributeValue[7] = txf.GetintByIndex(_KEY_specialAttributeValue_10_7);
specialAttributeValue[8] = txf.GetintByIndex(_KEY_specialAttributeValue_10_8);
specialAttributeValue[9] = txf.GetintByIndex(_KEY_specialAttributeValue_10_9);
return true;
}
#if UNITY_2019_1_OR_NEWER
public PetPanterDesc ReadItemInIL(TabBinFile txf ,int keyCount = 0)
{
byte[] ret = txf.GetLength();
if (ret.Length == 0)
{
return null;
}
return SerializeObj.ConfigDeSerialize<PetPanterDesc>(this, ret, txf.ColPosList, txf.listPosList, this.listDic, txf.m_stringBlock, keyCount);
}
#endif
}