最近太忙,三周(第四、五、六周)一起记录一下。

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】第六周的更多相关文章

  1. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

  2. 20145304 Java第六周学习报告

    20145304<Java程序设计>第六周学习总结 教材学习内容总结 1.InputStream与OutputStream: 在Java中,输入串流的代表对象为java.io.InputS ...

  3. 20145330第六周《Java学习笔记》

    20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...

  4. 20145337 《Java程序设计》第六周学习总结

    20145337 <Java程序设计>第六周学习总结 教材学习内容总结 输入\输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输 ...

  5. Linux内核设计第六周 ——进程的描述和创建

    Linux内核设计第六周 ——进程的描述和创建 第一部分 知识点总结 一.进程描述符task_struct数据结构 1.操作系统的三大功能: 进程管理.内存管理.文件系统 2.进程的作用: 将信号.进 ...

  6. 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

    第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...

  7. 20145218 《Java程序设计》第六周学习总结

    20145218 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计的概念 Jav ...

  8. 《Java程序设计》第六周学习总结

    20145224 <Java程序设计>第六周学习总结 教材学习内容总结 第十章输入和输出 10.1.1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流. ...

  9. 第五周&第六周

    学习进度表  周数 专业学习目标 学习时间 新增代码行 博客发表量 人文方面学习 知识总结 第四周 认真掌握老师上课所讲的内容,在课外多学习一些知识    5小时 50          1   阅读 ...

随机推荐

  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 ...

  2. html_02之表单、其它

    1.表单属性action:处理表单数据服务器端处理程序地址,默认提交本页: 2.表单属性method:①get:明文,数据显示地址栏,长度<2KB,向服务器请求数据时使用:②post:密文,提交 ...

  3. 24.编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。

    package zhongqiuzuoye; public class Car { String brand; public void drive() {} } package zhongqiuzuo ...

  4. Spring配置汇总

    现在主流的JavaWeb应用几乎都会用到Spring,以下是Spring的配置,以及结合Web的SpringMVC配置的汇总. jar包的引入 与Web项目集成 Spring配置文件 SpringMV ...

  5. 数据可视化(7)--D3基础

    一直想写写D3,觉得D3真心比较强大,基本上你能想出来的图表都能绘制出来,只不过使用起来比前几个要稍麻烦一点. 正好最近读完了<数据可视化实战>,将关于D3的知识梳理了一遍,写这篇博客记录 ...

  6. docker 1.8.2 源代码编译

    编译docker的必要条件 这阵子在公司搞docker container这些技术,docker编译网上查了一下木有靠谱的.只好自己动手丰衣足食了. 声明:你编译docker不需要git pull它的 ...

  7. Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】

    <Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  8. JPG渐进 & PNG/PNG24 交错测试

    今天由同事说起,PS导出PNG时,有个选项"交错"是干啥的,想起这也是个问题,所以特意搞了个测试页面: 引用网上"交错-就是类似旧式电视的隔行扫描,让图片只花50%的时间 ...

  9. 基于HTML5的3D网络拓扑树呈现

    在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在 ...

  10. Android Studio的git功能的使用介绍

    本文介绍Android Studio(下面简称AS)中git工具的一些简单使用.因为AS为git的使用提供了很多人性化的图形界面操作,在很大程度上可以增加开发效率.本文面向新手,题主自己也是新手一枚, ...