【FOL】第六周
最近太忙,三周(第四、五、六周)一起记录一下。
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, ); lvCallbackEventID:= lua_tointeger(L, ); lvMsgData:= TSimpleMsgPack.Create; try lvParamsTableName:= lua_tostring(L, ); lua_getglobal(L, PAnsiChar(AnsiString(lvParamsTableName))); lvParamCount:= lua_rawlen(L, -); to lvParamCount do begin //压入主表的第i条记录(一个table) lua_pushinteger(L, i); lua_rawget(L,-); //压入当前子表的第 1 个字段: type lua_pushstring(L, 'type'); lua_rawget(L,-); lvVType:= lua_tointeger(L,-); lua_pop(L, ); //压入当前子表的第 2 个字段: name lua_pushstring(L, 'name'); lua_rawget(L,-); lvParamName:= lua_tostring(L,-); lua_pop(L, ); //压入当前子表的第 3 个字段: value lua_pushstring(L, 'value'); lua_rawget(L,-); case lvVType of ord(mptString) : lvMsgData.Add(lvParamName,lua_tostring(L,-)); ord(mptInteger): lvMsgData.Add(lvParamName,lua_tointeger(L,-)); ord(mptFloat) : lvMsgData.Add(lvParamName,lua_tonumber(L,-)); ord(mptBoolean): lvMsgData.Add(lvParamName,Boolean(lua_toboolean(L,-))); end; lua_pop(L, ); //弹出本记录(一个table),不然取不到下一条记录 lua_pop(L, ); end; gvNetManager.sendGateMsgData(lvRequireMsgcode,lvMsgData,lvCallbackEventID); finally FreeAndNil(lvMsgData); end; end;
【FOL】第六周的更多相关文章
- 20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
- 20145304 Java第六周学习报告
20145304<Java程序设计>第六周学习总结 教材学习内容总结 1.InputStream与OutputStream: 在Java中,输入串流的代表对象为java.io.InputS ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
- 20145337 《Java程序设计》第六周学习总结
20145337 <Java程序设计>第六周学习总结 教材学习内容总结 输入\输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输 ...
- Linux内核设计第六周 ——进程的描述和创建
Linux内核设计第六周 ——进程的描述和创建 第一部分 知识点总结 一.进程描述符task_struct数据结构 1.操作系统的三大功能: 进程管理.内存管理.文件系统 2.进程的作用: 将信号.进 ...
- 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)
第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...
- 20145218 《Java程序设计》第六周学习总结
20145218 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计的概念 Jav ...
- 《Java程序设计》第六周学习总结
20145224 <Java程序设计>第六周学习总结 教材学习内容总结 第十章输入和输出 10.1.1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流. ...
- 第五周&第六周
学习进度表 周数 专业学习目标 学习时间 新增代码行 博客发表量 人文方面学习 知识总结 第四周 认真掌握老师上课所讲的内容,在课外多学习一些知识 5小时 50 1 阅读 ...
随机推荐
- JS操作页面
DOM操作 1 windows对象操作 属性(值或者子对象): opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null.可以利用这属性来关闭源窗口 方法(函数 ...
- easyuidatagrid中load,reload,loadData的区别。
摘要:datagrid中有load,reload,loadData那三个方式,皆是加载数据的,但又有差别.下面让我们一起来看看: 首先,load方法,比如我已经定义一个datagrid的id为grid ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- LVS负载平衡集群(没成型)
LVS:可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,实现一个可高用.高性能.低成本的服务器应用软件 LVS集群组成: 前端:负载均衡层 --由一台或多台负载调度器构成 ...
- uva 10801 - Lift Hopping(最短路Dijkstra)
/* 题目大意: 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 问从第0层楼到第k层最少经过多长时间到达! 思路:明显的Dijkstra , ...
- PhotoShop常用快捷键
Photoshop常用快捷键: 图01 图02 图03 图04 图05 快捷键 PS快捷键是Photoshop为了提高绘图速度定义的快捷方式,它用一个或几个简单的字母来代替常用的命令. 多种工具共用一 ...
- Linux - Tips
01 - Linux的系统结构 Linux 系统结构详解 02 - 执行多条命令 方法1:在命令行下可以一次性粘贴多条语句,shell会依次执行并输出结果 方法2:在一个命令行中,用分号将各个命令隔开 ...
- windows下配置Faster-RCNN
mark一个 http://yun.baidu.com/share/link?shareid=1018944597&uk=1543560377 http://blog.csdn.net/sin ...
- CocoaPods安装使用以及常见问题
什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理.开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方 ...
- 歌词文件解析(二):LRC格式文件的绘制
通过对LRC文件的解析,可以轻松实现歌词可视化. 代码实现 函数名: paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As In ...