具体实现思路:
CTalk类继承窗口基类,里面封装了updata()和onRander()方法,里面包含了结构体SArrTalk* m_pArrTalk,用来存对话数据。
CTalk类控制对话的进行,以及数据的渲染。而对话的内容则存在相应的文件之中,如NPC的对话存在NPC的配置表之中,哪个类需要对话,就让这个类包含CTalk类的对象,由此完成对话。
CTalk类的代码:
头文件
#pragma once
struct SArrTalk
{
SArrTalk()
{
memset(arrTalk, 0, sizeof(arrTalk));
}
char arrTalk[10][128];
};
class CTalk:public CWndBase
{
public:
//void initTalk(SArrTalk* pArrTalk, int nTalkLines);
void updata();
void onRander();
void setTalkLines(int nTalkLines);
SArrTalk* getArrTalk(){ return m_pArrTalk; };
CTalk();
~CTalk();
GETTER_SETTER(bool, IsTalked, m_bIsTalked);
private:
int m_nIndex;//当前对话索引
int m_nTalkLines;//对话条数
SArrTalk* m_pArrTalk;
};
源文件:
#include "stdafx.h"
#include "Talk.h"
CTalk::CTalk()
{
m_nIndex = 0;
m_bIsTa