【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 阅读 ...
随机推荐
- Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性
Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7 j2ee5 jee5 j2ee6 j2 ...
- html_02之表单、其它
1.表单属性action:处理表单数据服务器端处理程序地址,默认提交本页: 2.表单属性method:①get:明文,数据显示地址栏,长度<2KB,向服务器请求数据时使用:②post:密文,提交 ...
- 24.编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。
package zhongqiuzuoye; public class Car { String brand; public void drive() {} } package zhongqiuzuo ...
- Spring配置汇总
现在主流的JavaWeb应用几乎都会用到Spring,以下是Spring的配置,以及结合Web的SpringMVC配置的汇总. jar包的引入 与Web项目集成 Spring配置文件 SpringMV ...
- 数据可视化(7)--D3基础
一直想写写D3,觉得D3真心比较强大,基本上你能想出来的图表都能绘制出来,只不过使用起来比前几个要稍麻烦一点. 正好最近读完了<数据可视化实战>,将关于D3的知识梳理了一遍,写这篇博客记录 ...
- docker 1.8.2 源代码编译
编译docker的必要条件 这阵子在公司搞docker container这些技术,docker编译网上查了一下木有靠谱的.只好自己动手丰衣足食了. 声明:你编译docker不需要git pull它的 ...
- Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】
<Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- JPG渐进 & PNG/PNG24 交错测试
今天由同事说起,PS导出PNG时,有个选项"交错"是干啥的,想起这也是个问题,所以特意搞了个测试页面: 引用网上"交错-就是类似旧式电视的隔行扫描,让图片只花50%的时间 ...
- 基于HTML5的3D网络拓扑树呈现
在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...
- Android Studio的git功能的使用介绍
本文介绍Android Studio(下面简称AS)中git工具的一些简单使用.因为AS为git的使用提供了很多人性化的图形界面操作,在很大程度上可以增加开发效率.本文面向新手,题主自己也是新手一枚, ...