Lua中读取表格

 

 

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值