Lua中读取表格

 

Lua中读取表格_第1张图片

 

--数据访问
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

Lua中读取表格_第2张图片

 Lua中读取表格_第3张图片

namespace YouYou
{
    /// 
    /// Lua组件
    /// 
    public class LuaComponent : YouYouBaseComponent
    {
        /// 
        /// Lua管理器
        /// 
        private LuaManager m_LuaManager;

        /// 
        /// 是否打印协议日志
        /// 
        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();
        }

        /// 
        /// 初始化
        /// 
        public void Init()
        {
            m_LuaManager.Init();
        }

        /// 
        /// 加载数据表的MS
        /// 
        public MMO_MemoryStream LoadDataTableMS { get; private set; }
        /// 
        /// 加载数据表
        /// 
        /// 
        /// 
        public void LoadDataTable(string tableName, BaseAction 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);
            });
        }

        /// 
        /// 在Lua中加载MMO_MemoryStream
        /// 
        /// 
        /// 
        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;
        }

        /// 
        /// MMO_MemoryStream 对象取池
        /// 
        public MMO_MemoryStream DequeueMemoryStream()
        {
            return GameEntry.Pool.DequeueClassObject();
        }
        /// 
        /// MMO_MemoryStream 对象取池并载入Buffer
        /// 
        public MMO_MemoryStream DequeueMemoryStreamAndLoadBuffer(byte[] buffer)
        {
            MMO_MemoryStream ms = GameEntry.Pool.DequeueClassObject();
            ms.SetLength(0);
            ms.Write(buffer, 0, buffer.Length);
            ms.Position = 0;
            return ms;
        }
        /// 
        /// MMO_MemoryStream 对象回池
        /// 
        public void EnqueueMemoryStream(MMO_MemoryStream ms)
        {
            GameEntry.Pool.EnqueueClassObject(ms);
        }
        /// 
        /// 从MMO_MemoryStream中获取指定的byte[]
        /// 
        /// 
        /// 
        /// 
        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

 

你可能感兴趣的:(悠游架构)