《Lua游戏AI开发指南》一2.3 扩展SandboxApplication类

本节书摘来异步社区《Lua游戏AI开发指南》一书中的第2章,第2.3节,作者: 【美】David Young(杨) 译者: 王磊 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 扩展SandboxApplication类

项目创建好之后,你需要为Premake创建3个空白文件。创建如下的源文件和头文件:

src/my_sandbox/include/MySandbox.h 
  src/my_sandbox/src/MySandbox.cpp 
  src/my_sandbox/src/main.cpp

现在就可以运行vs2008.bat、vs2010.bat、vs2012.bat或者vs2013.bat来重新生成Visual Studio解决方案了。然后,当打开这个解决方案时,你就能看到新的my_sandbox项目了。

每个沙箱示例程序都需要扩展SandboxApplication基础类来声明可执行的Lua脚本的位置。

遵照下面的模式来声明你的MySandbox类:

MySandbox.h:

   #include "demo_framework/include/SandboxApplication.h"

   class MySandbox : public SandboxApplication { 
   public:
       MySandbox(void);

       virtual ~MySandbox(void);

       virtual void Initialize();
   };

继承SandboxApplication类可以提供一些基础的功能。目前我们只需要重载Initialize函数来添加Lua脚本资源的路径。

继承SandboxApplication还能重载Update和Cleanup等函数。任何其他的C++代码都可以通过这些函数注入到主应用程序中。

当重载这些函数时,你总是应该调用Sandbox Application基类的原始实现,因为它们处理了沙箱的清理、初始化和更新等功能。
在沙箱的源文件中,只需要设置沙箱的Lua脚本资源的路径,并调用父类的Initialization函数。

MySandbox.cpp:

   #include "my_sandbox/include/MySandbox.h"

   MySandbox:: MySandbox ()
       : SandboxApplication("My Sandbox") {}

   MySandbox::~ MySandbox () {}

   void MySandbox::Initialize()
       SandboxApplication::Initialize();

       //Relative location from the bin/x32/release/ or
       //bin/x32/debug folders
       AddResourceLocation("../../../src/my_sandbox/script");
   }

最后,你可以在main.cpp文件中添加一点启动代码来开始你的应用程序:

main.cpp:

   #include "my_sandbox/include/MySandbox.h"   
   #include "ogre3d/include/OgreException.h"

   #define WIN32_LEAN_AND_MEAN 
   #include "windows.h"

   int main() {
       MySandbox application;
       try { 
           application.Run();
       }
       catch(Ogre::Exception& error) { 
           MessageBox(
               NULL, 
               error.getFullDescription().c_str(), 
               "An exception has occurred!",
               MB_OK | MB_ICONERROR | MB_TASKMODAL);
       }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值