WIP port 4-d quest dialogue modules
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,315 @@
|
||||
#include "StdAfx.h"
|
||||
#include "PythonEventManager.h"
|
||||
#include "PythonNetworkStream.h"
|
||||
|
||||
PyObject * eventRegisterEventSet(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
char * szFileName;
|
||||
if (!PyTuple_GetString(poArgs, 0, &szFileName))
|
||||
return Py_BuildException();
|
||||
|
||||
int iEventIndex = CPythonEventManager::Instance().RegisterEventSet(szFileName);
|
||||
return Py_BuildValue("i", iEventIndex);
|
||||
}
|
||||
|
||||
PyObject * eventRegisterEventSetFromString(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
char * szEventString;
|
||||
if (!PyTuple_GetString(poArgs, 0, &szEventString))
|
||||
return Py_BuildException();
|
||||
|
||||
int iEventIndex = CPythonEventManager::Instance().RegisterEventSetFromString(szEventString);
|
||||
return Py_BuildValue("i", iEventIndex);
|
||||
}
|
||||
|
||||
PyObject * eventClearEventSet(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().ClearEventSeti(iIndex);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSetRestrictedCount(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
int iCount;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iCount))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().SetRestrictedCount(iIndex, iCount);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventGetEventSetLocalYPosition(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", CPythonEventManager::Instance().GetEventSetLocalYPosition(iIndex));
|
||||
}
|
||||
|
||||
PyObject * eventAddEventSetLocalYPosition(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
int iPos;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iPos))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().AddEventSetLocalYPosition(iIndex, iPos);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventInsertText(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
char * szText;
|
||||
if (!PyTuple_GetString(poArgs, 1, &szText))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().InsertText(iIndex, szText);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventInsertTextInline(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
char * szText;
|
||||
if (!PyTuple_GetString(poArgs, 1, &szText))
|
||||
return Py_BuildException();
|
||||
int iXIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 2, &iXIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().InsertText(iIndex, szText,iXIndex);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventUpdateEventSet(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
int ix;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &ix))
|
||||
return Py_BuildException();
|
||||
|
||||
int iy;
|
||||
if (!PyTuple_GetInteger(poArgs, 2, &iy))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().UpdateEventSet(iIndex, ix, -iy);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventRenderEventSet(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().RenderEventSet(iIndex);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSetEventSetWidth(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
int iWidth;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iWidth))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().SetEventSetWidth(iIndex, iWidth);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSkip(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().Skip(iIndex);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventIsWait(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", CPythonEventManager::Instance().IsWait(iIndex) == true ? 1 : 0);
|
||||
}
|
||||
|
||||
PyObject * eventEndEventProcess(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().EndEventProcess(iIndex);
|
||||
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSetEventHandler(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
PyObject * poEventHandler;
|
||||
if (!PyTuple_GetObject(poArgs, 1, &poEventHandler))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().SetEventHandler(iIndex, poEventHandler);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSelectAnswer(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
int iAnswer;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iAnswer))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().SelectAnswer(iIndex, iAnswer);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventGetLineCount(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
int iLineCount = CPythonEventManager::Instance().GetLineCount(iIndex);
|
||||
return Py_BuildValue("i", iLineCount);
|
||||
}
|
||||
|
||||
PyObject * eventSetVisibleStartLine(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
int iStartLine;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iStartLine))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager::Instance().SetVisibleStartLine(iIndex, iStartLine);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventGetVisibleStartLine(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", CPythonEventManager::Instance().GetVisibleStartLine(iIndex));
|
||||
}
|
||||
|
||||
PyObject * eventQuestButtonClick(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonNetworkStream::Instance().SendScriptButtonPacket(iIndex);
|
||||
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSetInterfaceWindow(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
PyObject * pyHandle;
|
||||
if (!PyTuple_GetObject(poArgs, 0, &pyHandle))
|
||||
return Py_BadArgument();
|
||||
|
||||
CPythonEventManager & rpem = CPythonEventManager::Instance();
|
||||
rpem.SetInterfaceWindow(pyHandle);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventSetLeftTimeString(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
char * szText;
|
||||
if (!PyTuple_GetString(poArgs, 0, &szText))
|
||||
return Py_BuildException();
|
||||
|
||||
CPythonEventManager & rpem = CPythonEventManager::Instance();
|
||||
rpem.SetLeftTimeString(szText);
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
PyObject * eventDestroy(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
CPythonEventManager & rpem = CPythonEventManager::Instance();
|
||||
rpem.Destroy();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
void initEvent()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
{ "RegisterEventSet", eventRegisterEventSet, METH_VARARGS },
|
||||
{ "RegisterEventSetFromString", eventRegisterEventSetFromString, METH_VARARGS },
|
||||
{ "ClearEventSet", eventClearEventSet, METH_VARARGS },
|
||||
|
||||
{ "SetRestrictedCount", eventSetRestrictedCount, METH_VARARGS },
|
||||
|
||||
{ "GetEventSetLocalYPosition", eventGetEventSetLocalYPosition, METH_VARARGS },
|
||||
{ "AddEventSetLocalYPosition", eventAddEventSetLocalYPosition, METH_VARARGS },
|
||||
{ "InsertText", eventInsertText, METH_VARARGS },
|
||||
{ "InsertTextInline", eventInsertTextInline, METH_VARARGS },
|
||||
|
||||
{ "UpdateEventSet", eventUpdateEventSet, METH_VARARGS },
|
||||
{ "RenderEventSet", eventRenderEventSet, METH_VARARGS },
|
||||
{ "SetEventSetWidth", eventSetEventSetWidth, METH_VARARGS },
|
||||
|
||||
{ "Skip", eventSkip, METH_VARARGS },
|
||||
{ "IsWait", eventIsWait, METH_VARARGS },
|
||||
{ "EndEventProcess", eventEndEventProcess, METH_VARARGS },
|
||||
|
||||
{ "SelectAnswer", eventSelectAnswer, METH_VARARGS },
|
||||
{ "GetLineCount", eventGetLineCount, METH_VARARGS },
|
||||
{ "SetVisibleStartLine", eventSetVisibleStartLine, METH_VARARGS },
|
||||
{ "GetVisibleStartLine", eventGetVisibleStartLine, METH_VARARGS },
|
||||
|
||||
{ "SetEventHandler", eventSetEventHandler, METH_VARARGS },
|
||||
{ "SetInterfaceWindow", eventSetInterfaceWindow, METH_VARARGS },
|
||||
{ "SetLeftTimeString", eventSetLeftTimeString, METH_VARARGS },
|
||||
|
||||
{ "QuestButtonClick", eventQuestButtonClick, METH_VARARGS },
|
||||
{ "Destroy", eventDestroy, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
PyObject * poModule = Py_InitModule("event", s_methods);
|
||||
|
||||
PyModule_AddIntConstant(poModule, "BOX_VISIBLE_LINE_COUNT", CPythonEventManager::BOX_VISIBLE_LINE_COUNT);
|
||||
PyModule_AddIntConstant(poModule, "BUTTON_TYPE_NEXT", CPythonEventManager::BUTTON_TYPE_NEXT);
|
||||
PyModule_AddIntConstant(poModule, "BUTTON_TYPE_DONE", CPythonEventManager::BUTTON_TYPE_DONE);
|
||||
PyModule_AddIntConstant(poModule, "BUTTON_TYPE_CANCEL", CPythonEventManager::BUTTON_TYPE_CANCEL);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#include "StdAfx.h"
|
||||
#include "../gamelib/GameEventManager.h"
|
||||
|
||||
PyObject * eventMgrUpdate(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
float fx;
|
||||
if (!PyTuple_GetFloat(poArgs, 0, &fx))
|
||||
return Py_BuildException();
|
||||
float fy;
|
||||
if (!PyTuple_GetFloat(poArgs, 1, &fy))
|
||||
return Py_BuildException();
|
||||
float fz;
|
||||
if (!PyTuple_GetFloat(poArgs, 2, &fz))
|
||||
return Py_BuildException();
|
||||
|
||||
CGameEventManager::Instance().SetCenterPosition(fx, fy, fz);
|
||||
CGameEventManager::Instance().Update();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
void initeventmgr()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
{ "Update", eventMgrUpdate, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
Py_InitModule("eventMgr", s_methods);
|
||||
}
|
||||
@@ -0,0 +1,270 @@
|
||||
#include "StdAfx.h"
|
||||
#include "PythonQuest.h"
|
||||
|
||||
void CPythonQuest::RegisterQuestInstance(const SQuestInstance & c_rQuestInstance)
|
||||
{
|
||||
DeleteQuestInstance(c_rQuestInstance.dwIndex);
|
||||
m_QuestInstanceContainer.push_back(c_rQuestInstance);
|
||||
|
||||
/////
|
||||
|
||||
SQuestInstance & rQuestInstance = *m_QuestInstanceContainer.rbegin();
|
||||
rQuestInstance.iStartTime = int(CTimer::Instance().GetCurrentSecond());
|
||||
}
|
||||
|
||||
struct FQuestInstanceCompare
|
||||
{
|
||||
DWORD dwSearchIndex;
|
||||
FQuestInstanceCompare(DWORD dwIndex) : dwSearchIndex(dwIndex) {}
|
||||
bool operator () (const CPythonQuest::SQuestInstance & rQuestInstance)
|
||||
{
|
||||
return dwSearchIndex == rQuestInstance.dwIndex;
|
||||
}
|
||||
};
|
||||
|
||||
void CPythonQuest::DeleteQuestInstance(DWORD dwIndex)
|
||||
{
|
||||
TQuestInstanceContainer::iterator itor = std::find_if(m_QuestInstanceContainer.begin(), m_QuestInstanceContainer.end(), FQuestInstanceCompare(dwIndex));
|
||||
if (itor == m_QuestInstanceContainer.end())
|
||||
return;
|
||||
|
||||
m_QuestInstanceContainer.erase(itor);
|
||||
}
|
||||
|
||||
bool CPythonQuest::IsQuest(DWORD dwIndex)
|
||||
{
|
||||
TQuestInstanceContainer::iterator itor = std::find_if(m_QuestInstanceContainer.begin(), m_QuestInstanceContainer.end(), FQuestInstanceCompare(dwIndex));
|
||||
return itor != m_QuestInstanceContainer.end();
|
||||
}
|
||||
|
||||
void CPythonQuest::MakeQuest(DWORD dwIndex)
|
||||
{
|
||||
DeleteQuestInstance(dwIndex);
|
||||
m_QuestInstanceContainer.push_back(SQuestInstance());
|
||||
|
||||
/////
|
||||
|
||||
SQuestInstance & rQuestInstance = *m_QuestInstanceContainer.rbegin();
|
||||
rQuestInstance.dwIndex = dwIndex;
|
||||
rQuestInstance.iStartTime = int(CTimer::Instance().GetCurrentSecond());
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestTitle(DWORD dwIndex, const char * c_szTitle)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->strTitle = c_szTitle;
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestClockName(DWORD dwIndex, const char * c_szClockName)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->strClockName = c_szClockName;
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestCounterName(DWORD dwIndex, const char * c_szCounterName)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->strCounterName = c_szCounterName;
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestClockValue(DWORD dwIndex, int iClockValue)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->iClockValue = iClockValue;
|
||||
pQuestInstance->iStartTime = int(CTimer::Instance().GetCurrentSecond());
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestCounterValue(DWORD dwIndex, int iCounterValue)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->iCounterValue = iCounterValue;
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestIconFileName(DWORD dwIndex, const char * c_szIconFileName)
|
||||
{
|
||||
SQuestInstance * pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->strIconFileName = c_szIconFileName;
|
||||
}
|
||||
|
||||
int CPythonQuest::GetQuestCount()
|
||||
{
|
||||
return m_QuestInstanceContainer.size();
|
||||
}
|
||||
|
||||
bool CPythonQuest::GetQuestInstancePtr(DWORD dwArrayIndex, SQuestInstance ** ppQuestInstance)
|
||||
{
|
||||
if (dwArrayIndex >= m_QuestInstanceContainer.size())
|
||||
return false;
|
||||
|
||||
*ppQuestInstance = &m_QuestInstanceContainer[dwArrayIndex];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CPythonQuest::__GetQuestInstancePtr(DWORD dwQuestIndex, SQuestInstance ** ppQuestInstance)
|
||||
{
|
||||
TQuestInstanceContainer::iterator itor = std::find_if(m_QuestInstanceContainer.begin(), m_QuestInstanceContainer.end(), FQuestInstanceCompare(dwQuestIndex));
|
||||
if (itor == m_QuestInstanceContainer.end())
|
||||
return false;
|
||||
|
||||
*ppQuestInstance = &(*itor);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CPythonQuest::__Initialize()
|
||||
{
|
||||
/*
|
||||
#ifdef _DEBUG
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
SQuestInstance test;
|
||||
test.dwIndex = i;
|
||||
test.strIconFileName = "";
|
||||
test.strTitle = _getf("test%d", i);
|
||||
test.strClockName = "남은 시간";
|
||||
test.strCounterName = "남은 마리수";
|
||||
test.iClockValue = 1000;
|
||||
test.iCounterValue = 1000;
|
||||
test.iStartTime = 0;
|
||||
RegisterQuestInstance(test);
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
|
||||
void CPythonQuest::Clear()
|
||||
{
|
||||
m_QuestInstanceContainer.clear();
|
||||
}
|
||||
|
||||
CPythonQuest::CPythonQuest()
|
||||
{
|
||||
__Initialize();
|
||||
}
|
||||
|
||||
CPythonQuest::~CPythonQuest()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PyObject * questGetQuestCount(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
return Py_BuildValue("i", CPythonQuest::Instance().GetQuestCount());
|
||||
}
|
||||
|
||||
PyObject * questGetQuestData(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BadArgument();
|
||||
|
||||
CPythonQuest::SQuestInstance * pQuestInstance;
|
||||
if (!CPythonQuest::Instance().GetQuestInstancePtr(iIndex, &pQuestInstance))
|
||||
return Py_BuildException("Failed to find quest by index %d", iIndex);
|
||||
|
||||
CGraphicImage * pImage = NULL;
|
||||
if (!pQuestInstance->strIconFileName.empty())
|
||||
{
|
||||
std::string strIconFileName;
|
||||
strIconFileName = "d:/ymir work/ui/game/quest/questicon/";
|
||||
strIconFileName += pQuestInstance->strIconFileName.c_str();
|
||||
pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(strIconFileName.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
// 비어있을 경우 디폴트 이미지를 넣는다.
|
||||
std::string strIconFileName = "season1/icon/scroll_open.tga";
|
||||
pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(strIconFileName.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
return Py_BuildValue("sisi", pQuestInstance->strTitle.c_str(),
|
||||
pImage,
|
||||
pQuestInstance->strCounterName.c_str(),
|
||||
pQuestInstance->iCounterValue);
|
||||
}
|
||||
|
||||
PyObject * questGetQuestIndex(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BadArgument();
|
||||
|
||||
CPythonQuest::SQuestInstance * pQuestInstance;
|
||||
if (!CPythonQuest::Instance().GetQuestInstancePtr(iIndex, &pQuestInstance))
|
||||
return Py_BuildException("Failed to find quest by index %d", iIndex);
|
||||
|
||||
return Py_BuildValue("i", pQuestInstance->dwIndex);
|
||||
}
|
||||
|
||||
PyObject * questGetQuestLastTime(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
||||
return Py_BadArgument();
|
||||
|
||||
CPythonQuest::SQuestInstance * pQuestInstance;
|
||||
if (!CPythonQuest::Instance().GetQuestInstancePtr(iIndex, &pQuestInstance))
|
||||
return Py_BuildException("Failed to find quest by index %d", iIndex);
|
||||
|
||||
int iLastTime = 0;
|
||||
|
||||
if (pQuestInstance->iClockValue >= 0)
|
||||
{
|
||||
iLastTime = (pQuestInstance->iStartTime + pQuestInstance->iClockValue) - int(CTimer::Instance().GetCurrentSecond());
|
||||
}
|
||||
|
||||
// 시간 증가 처리 코드
|
||||
// else
|
||||
// {
|
||||
// iLastTime = int(CTimer::Instance().GetCurrentSecond()) - pQuestInstance->iStartTime;
|
||||
// }
|
||||
|
||||
return Py_BuildValue("si", pQuestInstance->strClockName.c_str(), iLastTime);
|
||||
}
|
||||
|
||||
PyObject * questClear(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
CPythonQuest::Instance().Clear();
|
||||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
void initquest()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
{ "GetQuestCount", questGetQuestCount, METH_VARARGS },
|
||||
{ "GetQuestData", questGetQuestData, METH_VARARGS },
|
||||
{ "GetQuestIndex", questGetQuestIndex, METH_VARARGS },
|
||||
{ "GetQuestLastTime", questGetQuestLastTime, METH_VARARGS },
|
||||
{ "Clear", questClear, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
PyObject * poModule = Py_InitModule("quest", s_methods);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_MAX_NUM", 5);
|
||||
}
|
||||
@@ -46,6 +46,9 @@ enum
|
||||
void initpack();
|
||||
void initime();
|
||||
void initshop();
|
||||
void initquest();
|
||||
void initEvent();
|
||||
void initeventmgr();
|
||||
void initapp();
|
||||
void initchr();
|
||||
void initchrmgr();
|
||||
|
||||
Reference in New Issue
Block a user