【HGE引擎】源码解析——枚举(一)

本文主要介绍和分析HGE开源引擎hge.h文件的使用技巧和诸多方面学习

一 系统层API

  • 通常我们开始写一个简单的hge例子,基本都会包含这个hge.h文件,这个文件是干嘛的呢?
    它就是众矢之的,系统层API,这里面声明了程序调用方式_stdcall,之前的一篇博客,对于调用方式有所提及(有问题可以参考下,但不包百分百有效><),源码中使用宏CALL来声明每个方法的调用方式,如果你的程序打印出来的log中找到问题原因所在,这个很重要,能让你绕过很多百度谷歌去搜索解决方法,直接命中要害,这个文件很多cpp和.h都有用到,都是实现里面的api方法。

二 枚举的使用

  • 源码前250行,将平常使用的一般性结构都囊括其中,首先hgeBoolState,是HGE系统状态参数,我们一般会用创建好的hge指针调用System_SetState这个重载方法设置,第一个参数常常是所谓的系统状态参数,其次是所要设置的值等等

    以下的这些状态都是在System_Initiate之前设置的,都必须设置之后,才能初始化完成,但必须先有软硬件的创建。次序:hge_Create -> System_SetState ->System_Initiate 比如,
    1

    1.1 HGE_WINDOWED 是指的是 窗口模式,是否设置为全屏;
    1.2 HGE_ZBUFFER 是否设置使用帧缓存
    1.3 HGE_TEXTUREFILTER 是否进行问题过滤
    1.4 HGE_USESOUND 是否设置音效为低音模式
    1.5 HGE_DONTSUSPEND 失去焦点是继续运行(不中断主流程的回调)
    1.6 HGE_HIDEMOUSE 是否需要隐藏鼠标,一般我会设置为false的,没有鼠标出现总是觉得怪怪的
    1.7 HGE_SHOWSPLASH 是否设置显示HGE引擎的图标
    1.8 HGEBOOLSTATE_FORCE_DWORD 这个没怎么用到,但是从设计者的角度想,应该是作为一个非法值使用,当前的所有状态不能超过它的值,超过即是非法

其次,引擎的hgeFuncState回调枚举,调用次序:System_Initiate->hgeFuncState->System_Start
2

   2.1 HGE_FRAMEFUNC 设置帧 回调,这是必须设置的,不然 没法正常启动,回调函数返回true就是结束了,即使只是写个“空回调”,也会能够跑个正常的,必须带返回值,一般加一个结束命令即可完成一个test,游戏主循环调用就靠它了。         
   不得不说,设计者早就提醒过开发者了,这是必须这样做的。【you MUST set this】        HGE_FRAMEFUNC      = 8,
   // bool*()   frame function      (default: NULL) (you MUST set this)

   2.2 HGE_RENDERFUNC 设置游戏渲染的回调,渲染之前首先要对帧回调设置,绘图->渲染
   2.3 HGE_FOCUSLOSTFUNC 设置焦点丢失回调,程序意外的激活需要重新对此进行处理(如有其他情况,在进行补充)
   2.4 HGE_FOCUSGAINFUNC 设置重新聚焦处理,程序意外的激活需要重新对此进行处理(如有其他情况,在进行补充)
   2.5 HGE_GFXRESTOREFUNC 设置渲染重置
   2.6 HGE_EXITFUNC 设置窗口关闭回调,如果回调中有设置某个快捷键进行退出,则窗口关闭,反之不起作用
   2.7 HGEFUNCSTATE_FORCE_DWORD 同上,枚举最大值

第三,hgeHwndState枚举类型,使用次序:System_Initiate->hgeHwndState->System_Shutdown
3

     3.1 HGE_HWND 只读的,一般会作用回调,否则,才返回一个DWORD 无符号32位的整形值
     3.2 HGE_HWNDPARENT (使用次序:System_Initiate之前) 需要用到子窗口,则得先拿到父窗口的窗体值进行设置绑定
     3.3 HGEFUNCSTATE_FORCE_DWORD 同上,枚举最大值

第四,hgeIntState 整形枚举数值设置,使用次序:hge_Create->hgeIntState->System_Initiate
4

     4.1 HGE_SCREENWIDTH 设置窗体宽度
     4.2 HGE_SCREENHEIGHT 设置窗体高度
     4.3 HGE_SCREENBPP 设置色深,分16和32, 一般建议2D使用32
     4.4 HGE_SAMPLERATE 设置声音采样率,默认是44100
     4.5 HGE_FXVOLUME 设置环绕音量,默认100(如有其他情况,在进行补充)
     4.6 HGE_MUSVOLUME 设置全局环绕音量,默认100(如有其他情况,在进行补充)
     4.7 HGE_STREAMVOLUME 设置全局环绕音量,默认100(如有其他情况,在进行补充)
     4.8 HGE_FPS 设置屏幕刷新率,默认使用HGEFPS_UNLIMITED,HGEFPS_UNLIMITED(无限制)和HGEFPS_VSYNC(垂直同步)
     4.9 HGE_POWERSTATUS 设置电源状态,有百分比和状态
     4.10 HGEFUNCSTATE_FORCE_DWORD 同上,枚举最大值

第五,hgeStringState
字符串枚举,调用次序:hge_Create->hgeIntState->System_Initiate
5

     5.1 HGE_ICON 设置窗口资源图标
     5.2 HGE_TITLE 设置窗口标题 
     5.3 HGE_INIFILE 设置ini文件,默认No
     5.4 HGE_LOGFILE 设置程序运行的日志文件,可以反映出当前程序运行情况,表现报错或者当前电脑配置信息,默认No
     5.5 HGEFUNCSTATE_FORCE_DWORD 同上,枚举最大值

– 未完待续

基本功能和翎风的一样。 ------------------------------------------------------------------ [2016.09.30] 更新M2功能 ------------------------------------------------------------------ 1.增加脚本命令:InSafeZone //检测人物是否在安全区 ------------------------------------------------------------------ 2.修改程序防止最新僵尸攻击 3.增加脚本命令:SETRANDOMNO //产生一个随机数字 [@main] #IF #ACT SETRANDOMNO //产生一个随机数字 #SAY : //将显示出产生的随机数 [@@CHECKNO] #IF CHECKRANDOMNO //检测输入的验证码是否正确 #ELSEACT MESSAGEBOX 验证码错误! CLOSE BREAK 4.增加脚本命令:ISONMAP MAP //检测当前人是否在MAP地图上 5.增加脚本命令:DELAYCALL 作用:延时执行同一个NPC脚本中指定的标签内容 格式:DELAYCALL S LABEL 其中S是延时秒数(毫秒),Label是执行的脚本标签 示例:DelayCall 3000 @DELAYCALLTEST --- 3秒后自动跳到@DELAYCALLTEST节执行 6.增加脚本命令:KILLBYMON //是否被怪杀 7.增加脚本命令:KILLBYHUM //是否被人杀 地图增加一参数:KILLFUNC(X) //X可以随意数字 说明: 人物在该地图杀人,将触发QFunction-0.txt的[@KillPlay数字]节 人物在该地图杀怪,将触发QFunction-0.txt的[@KillPlayMon数字]节 注:宝宝杀人杀怪有效(秒杀除外) 8. //杀人的怪物名字 9. //杀人的人物名字 #IF KILLBYMON SENDMSG 5 在:%m(%x:%y)把干掉了! #IF KILLBYHUM SENDMSG 5 在:%m(%x:%y)把干掉了! 10.增加人物S变量:(0~99个) 11.解决地图标记 NoHUMNoMon 有人刷怪不能用的问题! 12.增加NPC命令:REPAIRALL //特修身上所有装备 13.增加数据库(修复神水)设置:3 14 //特修身上所有装备 14.增加脚本命令:ISGROUPMASTER //检测是否组长,加入编组后组长会触发QFunction-0.txt 15.增加挂机泡点功能。 ===================================== OFFLINE S EXP S是时间,单位秒 EXP为每S秒得到的经验值 默认必须在安全区域有效 脚本示意: (******************************************************************) (@@offlinemsg) [@main] 一、点击开始脱机泡点后,可输入一段留言信息给你的朋友。\ \ \ \ [@@offlinemsg] #IF CHECKLEVEL > 0 #ACT OFFLINE 5 500 //每5秒增加500经验 --------------------------------------------------------------------------- 16.;检测是否组长 [@MAIN] #IF ISGROUPMASTER #ACT GroupMoveMap 3 330 330 #elsesay 你不是组长. 加入编组后组长会触发QFunction-0.txt [@GroupCreate] #if #say 加入编组 --------------------------------------------------------------------------- 17.增加脱机泡点功能 18.增加地图标记有人刷怪 [0 比奇] NoHUMNoMon ;有人才开始刷怪 19.增加地图标记禁止仍背包物品 [1 沃玛森林] NOTHROWITEM ;禁止仍背包物品 20.增加地图标记死后不爆背包物品 [2 毒蛇山谷] NODR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值