【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 贝叶斯算法的原理以及垃圾邮件分类的原理
Atitit 贝叶斯算法的原理以及垃圾邮件分类的原理 1.1. 最开始的垃圾邮件判断方法,使用contain包含判断,只能一个关键词,而且100%概率判断1 1.2. 元件部件串联定律1 1.3. 垃 ...
- 简单的JPA注解例子
package ssh.entity; import java.math.BigDecimal; import java.util.Date; import javax.persistence.*; ...
- 11.按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另 一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。
package java1; public class Che { //属性 public String nub; public int speed; public double weight ; C ...
- 贪心算法-Huffman编码
伪代码: 例子:
- java线程四种状态
一个线程可以有四种状态: 1.新(new), 即线程刚刚创建,而并未执行 2.可运行(runnable),意味着一旦时间分片机制有空闲的CPU周期提供给一个线程,那个线程便可立即开始运行.因此,线程可 ...
- c#Dictionary键值对的使用
直接粘代码吧 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- ATL是如何实现线程安全的引用计数和多线程控制的
ATL是如何实现线程安全的引用计数和多线程控制的 正如标题所示,这是我经常被问到的一个问题,而每次我都从头开始给人说一次,其实说来过程理解起来的确有点复杂. 我们的每一个ATL Server Obje ...
- 如何禁用事件的浮升(div的子元素的点击事件会触发父元素的点击事件)
<div onclick="alert();"> <div onclick="alert();"></div> </d ...
- 手机端web学习基础--from慕课网
web知识零零散散的知道一些,但总感觉不够系统,遇到问题不知道如何解决,因此特此来系统的学习一下web前端的知识.从慕课网的web基础看起.下面学习http://www.imooc.com/learn ...
- eclipse中断点调试debug
几乎没有用过debug模式,每次想要知道结果都是sysou一下.记得曾经问乱码问题,jfinal说打断点调试看在哪里出错.简单记下普通调试. 1.在需要查看的地方打断点,方法是在行号右侧双击. 2.运 ...