MMORPG大型游戏设计与开发(客户端架构 part6 of vegine)
客户端的变量模块部分主要是将一些常用可变的值集中管理,如窗口的大小,是否开启音乐,音量的大小等等。这些变量通常会应该到客户端的操作,一般来说变量改变的时候会调用一个回调进行处理。下面我们就看看该模块的常用方法吧。
CODE
文件system.h
/**
* PAP Engine ( -- )
* $Id system.h
* @link -- for the canonical source repository
* @copyright Copyright (c) 2013-2014 viticm( viticm@126.com )
* @license
* @user viticm<viticm@126.com/viticm.ti@gmail.com>
* @date 2014-3-19 16:27:01
* @uses vengine variable system module
*/
#ifndef VENGINE_VARIABLE_SYSTEM_H_
#define VENGINE_VARIABLE_SYSTEM_H_ #include "vengine/config.h"
#include "vengine/kernel/node.h"
#include "vengine/math/base.h" namespace vengine_variable { class VENGINE_API System : public vengine_kernel::Node { VENGINE_KERNEL_DECLARE_DYNAMIC(vengine_variable_System); public:
//得到某个变量的值,如果不存在,则返回false
virtual bool getvariable(const char* name, STRING& save) = ;
//设置某个变量的值,如果不存在,则首先创建
virtual void setvariable(const char* name,
const char* value,
bool temp = true,
bool fireevent = true) = ; //设置某个变量的值,但并不马上生效, 下一次启动时才会生效
virtual void setvariable_delay(const char* name, const char* value) = ; /* 快速设置方法 */
virtual void setint32(const char* name,
int32_t value,
bool temp = true) = ;
virtual void setuint32(const char* name,
uint32_t value,
bool temp = true) = ;
virtual void setfloat(const char* name,
float value,
bool temp = true) = ;
virtual void set_twofloat_vector(const char* name,
float value1,
float value2,
bool temp = true) = ; /* 快速获取方法 */
virtual const STRING& getstring(const char* name, bool* have = NULL) = ;
virtual int32_t getint32(const char* name, bool* have = NULL) = ;
virtual uint32_t getuint32(const char* name, bool* have = NULL) = ;
virtual float getfloat(const char* name, bool* have = NULL) = ;
virtual vengine_math::base::twofloat_vector_t get_twofloat_vector(
const char* name, bool* have = NULL) = ;
virtual void setvariable_default(const char* name, const char* value) = ;
virtual void load_privateconfig() = ;
virtual void getvariable_infile(const char* filename,
const char* title,
const char* key,
char* save,
uint16_t size) = ;
virtual void setvariable_infile(const char* filename,
const char* title,
const char* key,
const char* value) = ;
virtual void reset() = ; }; }; //namespace vengine_variable #endif //VENGINE_VARIABLE_SYSTEM_H_
SIMPLE
天龙八部的系统设置,也是采用该模式进行控制的。
总结
变量的设置和文件的读写有密切的关系,不知道大家是否还记得有关ini配置文件的操作,该部分的操作基本上是与它一致的。
MMORPG大型游戏设计与开发(客户端架构 part6 of vegine)的更多相关文章
- MMORPG大型游戏设计与开发(客户端架构 part8 of vegine)
脚本模块是游戏设计中争论比较多的话题,那是因为作为脚本本身所带来的利弊.其实这都无关紧要,取舍是人必须学会的一项技能,如果你不会取舍那么就让趋势给你一个满意的答复.自从魔兽世界以及传奇(世界)问世以来 ...
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- MMORPG大型游戏设计与开发(UI SYSTEM SHOW)
接下来一段时间,这些文件可能不再更新,期间我会学习和掌握一些前端知识.虽然我非常欣赏剑侠网络版叁和九阴真经的画面,但是那是一个庞大的游戏引擎,一般人是无法窥伺的,除非你是天才而且要拥有机器毫无中断的毅 ...
- MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述)
核心这个词来的是多么的高深,可能我们也因为这个字眼望而却步,也就很难去掌握这部分的知识.之所以将核心放在最前面讲解,也可以看出它真的很重要,希望朋友们不会错过这个一直以来让大家不熟悉的知识,同我一起进 ...
- MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)
我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...
- MMORPG大型游戏设计与开发(客户端架构 part12 of vegine)
在游戏中的交互过程中输入是一个必不可少的过程,比如登陆的时候需要用户输入用户名与密码,就算是单机游戏很多时候也要求用户输入一个用户名作为存档的依据.网络游戏中没有了输入,只用鼠标来交互是不切实际的,因 ...
- MMORPG大型游戏设计与开发(客户端架构 part2 of vgui)
这一节我将讲解vgui的基础系统部分,也是该库提供给外部使用的一些重要接口.作为UI部分比较重要的部分,该节有着至关重要的部分,如果没有看到上一节内容,请留意下面的连接.我们现在可以猜想一下在客户端U ...
- MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)
由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...
- MMORPG大型游戏设计与开发(客户端架构 part9 of vegine)
时间在人们的生活中是多么重要的东西,如果打乱了时间,不知道这个时间会成什么样子.在客户端中,自然也有时间模块,因为不同的时间可能会处理不同的事情,特别是在追求高度自由化的同时,时间也成为了一个很重要的 ...
- MMORPG大型游戏设计与开发(客户端架构)
首先为所有等待的朋友说一声歉意,实在让大家等的太久.客户端的设计本来就是一个大的工程,而且工作的关系,也没有太多时间在这方面做研究.不过在私下有空的时间,我还是继续着这方面的研究,很遗憾没有用期望的o ...
随机推荐
- ArcGIS Server 开发之鹰眼地图的实现
鹰眼简单点说就是地图的联动,鹰眼的全称是OverviewMap,在ERSI提供的API包中,在dijit中进行类的调用.查了很多的资料,总结一下: 具体的代码: <!DOCTYPE html&g ...
- ENVI数据显示操作【Tools菜单操作1】
---恢复内容开始--- 一.Tools菜单命令及其功能 主图像窗口中Tool菜单多对应的下拉菜单共17项命令. 二.窗口链接/覆盖显示 窗口链接和叠加显示(Link和Overlay)是对多幅图像某一 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- iOS 适配iOS9
1.网络接口不支持https协议,在iOS9下 在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据. 解决方案(以下方法2选1): (1)暂时退回到http协议 ...
- DevExpress更新至13.1.7
DevExpress下的.NET界面组件 DXperience Universal Suite 最新发布13.1.7版,多个属性的定义方式发生变化,另外还有大量的bug修复.使用DevExpress朋 ...
- FIM2010同步用户
在需要进行同步的来源MA进行同步 在需要进行导入的来源进行导入
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- Win7重装系统遇到的问题以及MysQL的问题解决
连续三天因为系统的错误,android方面的软件一直不能正确运行.而且每次开机的时候QQ 微信等聊天工具也出现损坏.虽然重新下载一个可以保证在电脑不管的情况下正常的运行.可是作为玩电脑时间不长的我来说 ...
- [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)
温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容. ...