注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[tremulous] qcommon/cmd.c 中的 Cbuf_XXX  

2008-10-28 23:38:13|  分类: 3d_quake3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
昨天忘记说明目前自己用的是 tremulous-1.1.0-src,这里赘述一下~

qcommon/cmd.c 是处理 script command 的模块。目前的理解,script command 应该就是游戏中的 console,然后可以输入一些指令,控制一下,作作弊啥的。比如星际的 show me the money,哈~~

Cbuf_XXX 类函数,就是将一行行的 command 保存起来,然后一次全部  execute 掉。恩~太简单,没啥好分析的,看看下面的函数说明即可理解。ps. quake 的C代码清晰明了,个人认为堪称典范呵。

-------------------------------------------
// qcommon/cmd.c
// Quake script command processing module

#define MAX_CMD_BUFFER  16384
#define MAX_CMD_LINE        1024

typedef struct {
        byte    *data;
        int     maxsize;
        int     cursize;
} cmd_t;

int             cmd_wait;    // 用于在 Cbuf_Execute() 延迟几帧 execute lines
cmd_t       cmd_text;
byte          cmd_text_buf[MAX_CMD_BUFFER];

// cmd_text.data = cmd_text_buf;
// cmd_text.maxsize = MAX_CMD_BUFFER;
// cmd_text.cursize = 0;
void Cbuf_Init (void);

// execute cmd_text 中的所有 lines,其中 ';' '\n' '\r' 都是
// 一个 lines 的分割符
void Cbuf_Execute (void);

// 将 text 放入 cmd_text 尾部,不以 '\n' 结尾
void Cbuf_AddText( const char *text )

// 将 text 放入 cmd_text 开头,同时以 '\n' 结尾
// insert 的 text 会在 Cbuf_Execute 先被执行
void Cbuf_InsertText( const char *text );

// EXEC_INSERT  - 调用 Cbuf_InsertText(text)
// EXEC_APPEND - 调用 Cbuf_AddText(text)
// EXEC_NOW       - text存在,就 Cmd_ExecuteString(text), 否则
//                              就执行 Cbuf_Execute() 将 cmd_text 中的所有
//                              lines execute 一下
void Cbuf_ExecuteText (int exec_when, const char *text);
  评论这张
 
阅读(637)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017