【FOL】第六周
2018-06-17 18:58:27来源:未知 阅读 ()
最近太忙,三周(第四、五、六周)一起记录一下。
1、完成了键盘的输入,顺便把之前鼠标输入改了一下(最早是在渲染循环里面处理鼠标事件)
2、UI控件方面,做了个Edit控件,把之前的Label、Image、Button完善了一下
3、Delphi与lua方面的交互做了些修改,减少数据的多次处理,本来自己写了个数据存取对象,后来也都统一改成用msgpack。
4、网络方面,增加了一个gate服务器,客户端加了个fol.net.gate的context。
5、业务方面,做了login、chat、mail、friend几个模块。
小结:这几周还是在完善框架,重点是设计了服务端结构以及想清楚了客户端与服务端的数据交互。
这里分享一下Delphi读取多层table的lua数据的代码:
function TFOLNetScriptPackage.sendGateMsgData(L: lua_State): Integer; var lvRequireMsgcode, lvCallbackEventID: Integer; lvParamsTableName, lvParamName: string; lvParamCount, i, lvVType: Integer; lvMsgData: TSimpleMsgPack; begin { param_1 = lua.self(?, ignore), param_2 = requireMsgCode(integer), param_3 = callbackEventID(integer), param_4 = lua.tableName(string) param_5 = lua.data(table) lua.data = { [1] = {type=integer, name=string, value=string/integer/float/boolean}, [2] = {type=integer, name=string, value=string/integer/float/boolean}, [3] = {type=integer, name=string, value=string/integer/float/boolean}, ... } } lvRequireMsgcode:= lua_tointeger(L, 2); lvCallbackEventID:= lua_tointeger(L, 3); lvMsgData:= TSimpleMsgPack.Create; try lvParamsTableName:= lua_tostring(L, 4); lua_getglobal(L, PAnsiChar(AnsiString(lvParamsTableName))); lvParamCount:= lua_rawlen(L, -1); for i:= 1 to lvParamCount do begin //压入主表的第i条记录(一个table) lua_pushinteger(L, i); lua_rawget(L,-2); //压入当前子表的第 1 个字段: type lua_pushstring(L, 'type'); lua_rawget(L,-2); lvVType:= lua_tointeger(L,-1); lua_pop(L, 1); //压入当前子表的第 2 个字段: name lua_pushstring(L, 'name'); lua_rawget(L,-2); lvParamName:= lua_tostring(L,-1); lua_pop(L, 1); //压入当前子表的第 3 个字段: value lua_pushstring(L, 'value'); lua_rawget(L,-2); case lvVType of ord(mptString) : lvMsgData.Add(lvParamName,lua_tostring(L,-1)); ord(mptInteger): lvMsgData.Add(lvParamName,lua_tointeger(L,-1)); ord(mptFloat) : lvMsgData.Add(lvParamName,lua_tonumber(L,-1)); ord(mptBoolean): lvMsgData.Add(lvParamName,Boolean(lua_toboolean(L,-1))); end; lua_pop(L, 1); //弹出本记录(一个table),不然取不到下一条记录 lua_pop(L, 1); end; gvNetManager.sendGateMsgData(lvRequireMsgcode,lvMsgData,lvCallbackEventID); finally FreeAndNil(lvMsgData); end; end;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:【FOL】第三周
- 0005-20180422-自动化第六章-python基础学习笔记 2018-09-18
- ClientDataSet应用 2018-08-13
- 小组件---快递查询组件 2018-06-21
- C#中那些[举手之劳]的性能优化 2018-06-21
- 让T4脱离VS生成代码 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash