--数据访问
ChapterDBModel = { }
local this = ChapterDBModel;
local chapterTable = { }; --定义表格
function ChapterDBModel.LoadList()
GameInit.AddTotalLoadTableCount();
--传入表名,
CS.YouYou.GameEntry.Lua:LoadDataTable("Chapter", this.LoadFormMS);
end
function ChapterDBModel.LoadFormMS(ms)
local rows = ms:ReadInt();
for i = 0, rows, 1 do
chapterTable[#chapterTable + 1] = ChapterEntity.New(
ms:ReadInt(),
ms:ReadUTF8String(),
ms:ReadInt(),
ms:ReadUTF8String(),
ms:ReadFloat(),
ms:ReadFloat()
);
end
GameInit.LoadOneTableComplete();
end
function ChapterDBModel.GetList()
return chapterTable;
end
function ChapterDBModel.GetEntity(id)
local ret = nil;
for i = 1, #chapterTable, 1 do
if (chapterTable[i].Id == id) then
ret = chapterTable[i];
break;
end
end
return ret;
end
namespace YouYou
{
/// <summary>
/// Lua组件
/// </summary>
public class LuaComponent : YouYouBaseComponent
{
/// <summary>
/// Lua管理器
/// </summary>
private LuaManager m_LuaManager;
/// <summary>
/// 是否打印协议日志
/// </summary>
public bool DebugLogProto = false;
protected override void OnAwake()
{
base.OnAwake();
m_LuaManager = new LuaManager();
#if DEBUG_LOG_PROTO
DebugLogProto = true;
#endif
}
protected override void OnStart()
{
base.OnStart();
LoadDataTableMS = new MMO_MemoryStream();
}
/// <summary>
/// 初始化
/// </summary>
public void Init()
{
m_LuaManager.Init();
}
/// <summary>
/// 加载数据表的MS
/// </summary>
public MMO_MemoryStream LoadDataTableMS { get; private set; }
/// <summary>
/// 加载数据表
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public void LoadDataTable(string tableName, BaseAction<MMO_MemoryStream> onComplete)
{
//1.获取数据表的buffer
GameEntry.DataTable.DataTableManager.GetDataTableBuffer(tableName, (byte[] buffer) =>
{
LoadDataTableMS.SetLength(0);
LoadDataTableMS.Write(buffer, 0, buffer.Length);
LoadDataTableMS.Position = 0;
//Debug.Log("加载数据表 " + LoadDataTableMS);
if (onComplete != null) onComplete(LoadDataTableMS);
});
}
/// <summary>
/// 在Lua中加载MMO_MemoryStream
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public MMO_MemoryStream LoadSocketReceiveMS(byte[] buffer)
{
MMO_MemoryStream ms = GameEntry.Socket.SocketReceiveMS;
ms.SetLength(0);
ms.Write(buffer, 0, buffer.Length);
ms.Position = 0;
return ms;
}
/// <summary>
/// MMO_MemoryStream 对象取池
/// </summary>
public MMO_MemoryStream DequeueMemoryStream()
{
return GameEntry.Pool.DequeueClassObject<MMO_MemoryStream>();
}
/// <summary>
/// MMO_MemoryStream 对象取池并载入Buffer
/// </summary>
public MMO_MemoryStream DequeueMemoryStreamAndLoadBuffer(byte[] buffer)
{
MMO_MemoryStream ms = GameEntry.Pool.DequeueClassObject<MMO_MemoryStream>();
ms.SetLength(0);
ms.Write(buffer, 0, buffer.Length);
ms.Position = 0;
return ms;
}
/// <summary>
/// MMO_MemoryStream 对象回池
/// </summary>
public void EnqueueMemoryStream(MMO_MemoryStream ms)
{
GameEntry.Pool.EnqueueClassObject(ms);
}
/// <summary>
/// 从MMO_MemoryStream中获取指定的byte[]
/// </summary>
/// <param name="ms"></param>
/// <param name="len"></param>
/// <returns></returns>
public byte[] GetByteArray(MMO_MemoryStream ms,int len)
{
byte[] buffer = new byte[len];
ms.Read(buffer, 0, len);
return buffer;
}
public override void Shutdown()
{
LoadDataTableMS.Dispose();
LoadDataTableMS.Close();
}
}
}
ChapterEntity = { Id = 0, ChapterName = "", GameLevelCount = 0, BG_Pic = "", Uvx = 0, Uvy = 0 }
ChapterEntity.__index = ChapterEntity;
function ChapterEntity.New(Id, ChapterName, GameLevelCount, BG_Pic, Uvx, Uvy)
local self = { };
setmetatable(self, ChapterEntity);
self.Id = Id;
self.ChapterName = ChapterName;
self.GameLevelCount = GameLevelCount;
self.BG_Pic = BG_Pic;
self.Uvx = Uvx;
self.Uvy = Uvy;
return self;
end