📄 rpgdialog.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 + -