as3+java+mysql(mybatis) 数据自动工具(六)
这篇来写一些常量定义的实例。我一般在配置常量的时候,都会让 bitOffset = 20,这样是一个比较好的分配,就是每个分组可以有 0xFFFFF(1048575) 个常量,0xFFF(4095) 个分组。
游戏中的客户端和服务端都需要的游戏常量,如下
<macros name="MacroDefine" author="idoublewei" note="常量宏定义"> <macro name="ACCOUNT_ROLE_MAX" type="integer" value="2" note="账号下最多可以创建的角色数量"/> <macro name="ROLE_CAREER_WARRIOR" type="integer" value="1" note="角色职业 - 战士"/> <macro name="ROLE_CAREER_MAGE" type="integer" value="2" note="角色职业 - 法师"/> <macro name="ROLE_CAREER_ASSASSIN" type="integer" value="3" note="角色职业 - 刺客"/> <macro name="ROLE_SEX_MALE" type="integer" value="0" note="角色性别 - 男"/> <macro name="ROLE_SEX_FEMALE" type="integer" value="1" note="角色性别 - 女"/> </macros>
因为在该常量定义中,我们是关心常量的值的,基本上不会希望有自动计算的值,所以 groupStart 和 groupEnd,bitOffset 可以不指定。
然后也可以定义一些常用的错误码,如下
<macros name="MacroError" author="idoublewei" note="错误宏定义"> <macro name="NO_RIGHT" type="integer" value="1" note="没有权限"/> <group note="连接相关"> <macro name="CONNECTION_IDLE" type="integer" value="101" note="你太不活跃了,把资源让给其他人吧。。。"/> <macro name="CONNECTION_OVERLOAD" type="integer" value="102" note="连接超过最大限制"/> </group> <group note="账号模块相关错误"> <macro name="ACCOUNT_UNMATCH" type="integer" value="201" note="账号格式不正确"/> <macro name="ACCOUNT_EMAIL_UNMATCH" type="integer" value="202" note="电子邮箱格式不正确"/> <macro name="ACCOUNT_EXISTED" type="integer" value="203" note="账号已存在"/> <macro name="ACCOUNT_EMAIL_USED" type="integer" value="204" note="电子邮箱已使用"/> <macro name="ACCOUNT_NONEXISTENCE" type="integer" value="205" note="账号不存在"/> <macro name="ACCOUNT_PASSWORD_WRONG" type="integer" value="206" note="密码不正确"/> <macro name="ACCOUNT_LOGINED" type="integer" value="207" note="当前连接已登录了账号"/> </group> <group note="角色模块相关错误"> <macro name="ROLE_ACCOUNT_OFFLINE" type="integer" value="301" note="账号未登录"/> <macro name="ROLE_OVERLOAD" type="integer" value="302" note="角色数量超过最大限制"/> <macro name="ROLE_NICKNAME_UNMATCH" type="integer" value="303" note="角色昵称格式不正确"/> <macro name="ROLE_NICKNAME_EXISTED" type="integer" value="304" note="角色昵称已存在"/> <macro name="ROLE_NONEXISTENCE" type="integer" value="305" note="角色不存在"/> <macro name="ROLE_LOGINED" type="integer" value="306" note="当前账号已登录了角色"/> <macro name="ROLE_USEING" type="integer" value="307" note="当前角色正在使用"/> </group> </macros>
同样的,我们在错误码中也是关心常量值的,所以也忽略了参数 groupStart,groupEnd 和 bitOffset。
再来看看请求命令的配置,如下
<macros name="MacroReqAndRsp" groupStart="1" groupEnd="100" bitOffset="20" author="idoublewei" note="请求、应答命令宏定义"> <macro name="HEARTBEAT" note="心跳,参数 : null"/> <macro name="RESPONSE" note="请求响应"/> <group name="ACCOUNT" note="帐号"> <macro name="ACCOUNT_REGISTER" note="注册账号 - 注册成功后,默认不登录,参数 : loginName, password, email,返回 : TAccountVO"/> <macro name="ACCOUNT_LOGIN" note="帐号登录,参数 : loginName, password,返回 : TAccountVO"/> <macro name="ACCOUNT_LOGOUT" note="账号登出,参数 : null,返回 : null"/> </group> <group name="ROLE" note="角色"> <macro name="ROLE_RETRIEVE" note="获取指定账号下的角色列表,参数 : accountId,返回 : TRoleVO-List"/> <macro name="ROLE_REGISTER" note="注册角色,参数 : nickName, sex, career,返回 : TRoleVO"/> <macro name="ROLE_UNREGISTER" note="注销角色,参数 : roleId,返回 : null"/> <macro name="ROLE_LOGIN" note="角色登录,参数 : roleId,返回 : TRoleVO"/> <macro name="ROLE_LOGOUT" note="角色登出,返回 : null"/> </group> </macros>
在请求命令中,就不关心常量的具体值是什么了,只要客户端和服务器每次使用时是用的一套配置就绝对没问题,所以这儿为 基本请求(心跳,响应回复) ,账号和角色请求分组 指定的分组号在 1 到 100 之间(包括 1 和 100),当前游戏其它模块的请求命令分组也可以另起一个配置文件,但需要注意的是分组号区别不要重复。
懒是一种态度