|
|

楼主 |
发表于 2005-8-2 15:27:00
|
显示全部楼层
Re: 找扁的游戏制作教程(三)
本step的程序中提高了一个我称之为游戏界面状态的概念。
我将游戏主分为3个界面需求,因为我觉得这些界面不大可能同时存在。
1、主选菜单界面
2、Loading界面
3、游戏界面
//定义如下
enum GAME_STATA{
S_MAIN_MENU_WND = 0,
S_LOADING_WND,
S_GAME_WND
};
每个界面为一个WND类来管理,通过设置
int nGameStata;//游戏状态
的数值在3个游戏界面中进行切换。每个WND自己管理自己的消息。
其中"主选菜单界面"可以继续分为4个子界面
enum MAINMENU_ST{
MAINWND_ST_LOGIN = 0, // 登陆画面
MAINWND_ST_SERVERLIST, // 选择服务器列表画面
MAINWND_ST_SELECTCHARACTER,// 选择角色画面
MAINWND_ST_CREATECHARACTER // 建立新角色画面
};
其实这4个界面也都是单独存在的,之所以把这个4个界面当作"主选菜单界面"子界面而不单独提出来的意思主要是,该4个界面都有可能处理来与服务器的交互信息,而且有可能在交互中进行界面切换。于是,我只在父界面接受消息,然后将相应的消息转给子界面处理做相应的处理。
同时这4个界面的内容在游戏初始化的时候,因为内容不多,我一次读入,进入Loading界面的时候,在一次性删除。比较方便。
Loading界面一般是第一次进入地图时候,需要做的一个比较特别的多线程处理。一般来说loading不使用3D模型背景,而做成平面的。目的就是该渲染线程最好不要占用cpu资源。loading时候太多的io和解压缩操作了。用多线程的意思是,总不能不画Loading状态吧。
游戏主界面之会有一个。里面包含N多个非模态的对话框(就是各种状态界面,例如人物属性,背包,地图,快捷栏,对话框等等等等),然后用开关来控制这些对话框的显示/隐藏。今后的解释中将用subframe单词来描述。
|
|