Skip to content

tutumagi/entitygen

Repository files navigation

jen的用法:参考代码

修改/维护

  1. 主要是修改 entitygen/domain/ 目录下的代码,attr/ 目录下的改动需要讨论才可以改动
  2. 修改完成后,执行 go generate ./...,生成成功后, go test -coverprofile=./profile/cover.txt ./... 执行测试,测试通过再提交

用法

第一次生成
  1. 确保 go env 中的环境变量如下(如果不是,执行下面这个命令 go env -w GOPRIVATE=gitlab.gamesword.com

    GONOPROXY="gitlab.gamesword.com"
    GONOSUMDB="gitlab.gamesword.com"
    GOPRIVATE="gitlab.gamesword.com"
    
  2. 新建一个实体定义的 package,在里面定义实体,tag 中各个 key-value 的含义见 domain/room.go 中的描述,目前 map 类型的 key 只支持 int32string

  3. 在导出实体文件的目标 package 中新建一个导出定义文件,将 entitydef/mappping.go 里面的文件内容拷贝过去

  4. 在一级目录下,执行 go generate -v ./...

如果是修改实体,或者新增实体
  1. 在实体定义 package 里面,新增实体定义
  2. 在一级目录下,执行 go generate -v ./...

TODO

  1. 类型 ID, UID 这样命名的字段如果改为合适的 key,应该改为 id,uid 比较合适。目前的策略是 实体定义的 field 名字为大写开头驼峰, 然后代码转换时,是转为小写开头的驼峰写法。不过这种对ID,UID 就很不友好了,输出的是 iDuID 这个要想一下办法 解决办法:需要自定义 key 的在定义文件里面写好 key 的 tag 就好了
  2. 针对通用的 pos(*math.Vector3), rot(*math.Vector3) 看能否抽出来,不放到实体定义里面去
  3. bson marshal -> unmarshal 会忽略掉 storedb 为 false 的字段,这里的测试用例还没写好
  4. 给对象 set 字段时,新值是对象的情况下,不直接 set 到对应的 key 上面,而是先判断当前对象有没有此字段,没有则新建,有则 一个一个赋值上去

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages