⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpgdialog.cc

📁 五行MMORPG引擎系统V1.0
💻 CC
字号:
//RPGDialog.cc
/*/////////////////////////////////////////////////////////////////

   李亦
	liease@163.com 4040719
	2006-7-18
/*/////////////////////////////////////////////////////////////////


#include "rpg/RPGDataMan.h"
#include "rpg/RPGDialog.h"
#include "rpg/RPGSetting.h"
#include "console/consoleTypes.h"
#include "rpg/gobjects/GPlayer.h"
#include "rpg/RPGSetting.h"
#include "rpg/gobjects/GNpc.h"


#ifdef TGE_RPGCLIENT
//#include "gui/game/guiChatLog.h"
//
//
//#define	RPGUI_CHATLOG			"ChatUIChatLog"

#endif


namespace RPG
{

RPGDialog* g_pRPGDialog			= NULL;
_StringTable* g_pDlgTxtTable	= NULL;

IMPLEMENT_CONOBJECT(RPGDialog);


///////////////////////////////////////////////////////////////
//构造函数 /析构函数
RPGDialog::RPGDialog()
{
	m_pTextTable	= NULL;
	m_pTempTable	= NULL;

#ifdef TGE_RPGCLIENT
#endif

	m_pCurPiece		= NULL;

}

RPGDialog::~RPGDialog()
{
	_StringTable::destroyStringTable(m_pTextTable);
	_StringTable::destroyStringTable(m_pTempTable);
}



void RPGDialog::InitTextTable()
{
	g_pDlgTxtTable	= _StringTable::newStringTable();
}

void RPGDialog::DestroyTextTable()
{
	_StringTable::destroyStringTable(g_pDlgTxtTable);
}


void RPGDialog::Initialize(CSTR pScriptName)
{
	AssertWarn(g_pRPGDialog==NULL,"RPGDialog实例不能创建第2个");
	g_pRPGDialog = new RPGDialog();
	g_pRPGDialog->registerObject(pScriptName);

}

void RPGDialog::Destroy()
{
	if(g_pRPGDialog)
	{
		g_pRPGDialog->deleteObject();
		g_pRPGDialog = NULL;
	}
}

void RPGDialog::initPersistFields()
{
	Parent::initPersistFields();
#ifdef TGE_RPGCLIENT
	//addField("chatLogUI",		TypeGuiChatLogPtr,Offset(m_pUIChatLog,RPGDialog));
	//addField("arStateIcons",	TypeFilename,		Offset(m_arStateIcons,RPGDialog), CHATS_AMOUNT);
#endif
}



bool RPGDialog::ToggleDlgPiece(U32 dwPieceID)
{
	//g_pGNpc		= g_pRPGDataMan->GetNpc(StringTable->insert("门卫"));
	//g_pGNpc->ProcessTalk(g_pGPlayer);
	if(!dynamic_cast<GDialog*>(g_pGDialog))
		return false;
	m_pCurPiece = g_pGDialog->GetDlgEntry();
	if(m_pCurPiece)
		m_pCurPiece->ToggleDlgPiece();
	return m_pCurPiece != NULL;
}


bool RPGDialog::SelectAnswer(U32 nIndex)
{
	GDlgAnswer*	pAnswer;

	if(!dynamic_cast<GDialog*>(g_pGDialog))
		return false;
	if(m_pCurPiece == NULL)
		return false;


	///////////////////////////////////
	//执行客户指令
	pAnswer = m_pCurPiece->GetAnswer(nIndex);
	if(pAnswer)
		pAnswer->ExecuteCmd(g_pGPlayer);


	////////////////////////////////
	//获取下一个对话片段
	m_pCurPiece = g_pGDialog->GetNextDlgPiece(m_pCurPiece, nIndex, g_pGPlayer);
	if(m_pCurPiece)
		m_pCurPiece->ToggleDlgPiece();
	return m_pCurPiece != NULL;
}

CSTR RPGDialog::GetPieceCmdText()
{
	if(!m_pCurPiece)
		return "";
	return m_pCurPiece->GetCmdEffText(g_pGPlayer);
}


//void RPGDialog::consoleInit()
//{
//}


ConsoleMethod(RPGDialog, OpenDialog, bool, 2, 2, ".OpenDialog()")
{
	return object->ToggleDlgPiece(-1);
}

ConsoleMethod(RPGDialog, ToggleDlgPiece, bool, 3, 3, ".ToggleDlgPiece(PieceID)")
{
	return object->ToggleDlgPiece(dAtoi(argv[2]));
}

ConsoleMethod(RPGDialog, SelectAnswer, bool, 3, 3, ".SelectAnswer(nIndex)")
{
	return object->SelectAnswer(dAtoi(argv[2]));
}

ConsoleMethod(RPGDialog, GetPieceCmdText, const char*, 2, 2, ".GetPieceCmdText()")
{
	return object->GetPieceCmdText();
}

//ConsoleMethod(RPGDialog, IsAnswerAbort, bool, 3, 3, ".IsAnswerAbort(nIndex)")
//{
//	return object->IsAnswerAbort(dAtoi(argv[2]));
//}



};//namespace RPG

//#endif//#ifdef TGE_RPGCLIENT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -