[tremulous] qcommon/cmd.c 中的 Cbuf_XXX
2008-10-28 23:38:13| 分类:
3d_quake3
| 标签:
|举报
|字号大中小 订阅
昨天忘记说明目前自己用的是 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);
评论这张
转发至微博
转发至微博
评论