客户端的变量模块部分主要是将一些常用可变的值集中管理,如窗口的大小,是否开启音乐,音量的大小等等。这些变量通常会应该到客户端的操作,一般来说变量改变的时候会调用一个回调进行处理。下面我们就看看该模块的常用方法吧。

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)的更多相关文章

  1. MMORPG大型游戏设计与开发(客户端架构 part8 of vegine)

    脚本模块是游戏设计中争论比较多的话题,那是因为作为脚本本身所带来的利弊.其实这都无关紧要,取舍是人必须学会的一项技能,如果你不会取舍那么就让趋势给你一个满意的答复.自从魔兽世界以及传奇(世界)问世以来 ...

  2. MMORPG大型游戏设计与开发(概述)updated

    1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...

  3. MMORPG大型游戏设计与开发(UI SYSTEM SHOW)

    接下来一段时间,这些文件可能不再更新,期间我会学习和掌握一些前端知识.虽然我非常欣赏剑侠网络版叁和九阴真经的画面,但是那是一个庞大的游戏引擎,一般人是无法窥伺的,除非你是天才而且要拥有机器毫无中断的毅 ...

  4. MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述)

    核心这个词来的是多么的高深,可能我们也因为这个字眼望而却步,也就很难去掌握这部分的知识.之所以将核心放在最前面讲解,也可以看出它真的很重要,希望朋友们不会错过这个一直以来让大家不熟悉的知识,同我一起进 ...

  5. MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)

    我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...

  6. MMORPG大型游戏设计与开发(客户端架构 part12 of vegine)

    在游戏中的交互过程中输入是一个必不可少的过程,比如登陆的时候需要用户输入用户名与密码,就算是单机游戏很多时候也要求用户输入一个用户名作为存档的依据.网络游戏中没有了输入,只用鼠标来交互是不切实际的,因 ...

  7. MMORPG大型游戏设计与开发(客户端架构 part2 of vgui)

    这一节我将讲解vgui的基础系统部分,也是该库提供给外部使用的一些重要接口.作为UI部分比较重要的部分,该节有着至关重要的部分,如果没有看到上一节内容,请留意下面的连接.我们现在可以猜想一下在客户端U ...

  8. MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)

    由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...

  9. MMORPG大型游戏设计与开发(客户端架构 part9 of vegine)

    时间在人们的生活中是多么重要的东西,如果打乱了时间,不知道这个时间会成什么样子.在客户端中,自然也有时间模块,因为不同的时间可能会处理不同的事情,特别是在追求高度自由化的同时,时间也成为了一个很重要的 ...

  10. MMORPG大型游戏设计与开发(客户端架构)

    首先为所有等待的朋友说一声歉意,实在让大家等的太久.客户端的设计本来就是一个大的工程,而且工作的关系,也没有太多时间在这方面做研究.不过在私下有空的时间,我还是继续着这方面的研究,很遗憾没有用期望的o ...

随机推荐

  1. Soundslice – 美妙乐谱!Web 技术高大上的应用

    Web 技术的不断发展让我们能够开发各种好玩的功能.这里给大家分享一个使用 HTML5 技术实现的在线乐谱,可以播放的哦,也可以选择一个片段进行循环播放.赶紧来体验一下:) 您可能感兴趣的相关文章 1 ...

  2. pdo mysql错误:Cannot execute queries while other unbuffered queries are active

    运行环境:PHP 5.5.30-x64,MYSQL  5.6.27 错误代码:Cannot execute queries while other unbuffered queries are act ...

  3. Java Web 三层架构详解

    java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发 ...

  4. Atitit.提升电子商务安全性 在线充值功能安全方面的设计

    Atitit.提升电子商务安全性 在线充值功能安全方面的设计 1. 防止dataservcie对充值订单表的直接改写,只能通过api,不能通过sql1 1.1. Order_id的安全取值,注入检测1 ...

  5. SharePoint 2010: Export User Profile Properties to a Text File or Excel using PowerShell

    导出到txt [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") ...

  6. 使用imeOptions

    Android的软键盘右下角有Action按钮,如下图的“上一步” 在EditText中有 android:imeOptions选项,它包括完成按钮“actionDone”,发送按钮“actionSe ...

  7. 你真的了解UITextField吗?

    一:首先查看一下关于UITextField的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextIn ...

  8. 【代码笔记】iOS-背景色随机显示

    一,效果图. 二,工程图. 三,代码. RootViewController.h RootViewController.m - (void)viewDidLoad { [super viewDidLo ...

  9. OC 中的block存储位置

    以下所有在ARC情况下: 一.block块的存储位置(block块入口地址):可能存放在2个地方:代码区.堆区(程序分5个区,还有常量区.全局区和栈区,对于MRC情况下代码还可能存在栈区.关于分区详细 ...

  10. OC与JS的交互

    现在APP的开发已经不局限于原生开发,很多都是原生+html5这种混合开发 我们可以通过webView这个控件,实现混合开发. 1.首先你需要创建一个html页面 <html> <h ...