Marty-v58/source-client/Srcs/Client/UserInterface/PythonEventManagerModule.cpp
2024-06-01 15:57:23 -05:00

436 lines
12 KiB
C++

#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();
}
#ifdef ENABLE_NEW_EVENT_STRUCT
PyObject* eventSetVisibleLineCount(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
int iLineCount;
if (!PyTuple_GetInteger(poArgs, 1, &iLineCount))
return Py_BuildException();
CPythonEventManager::Instance().SetVisibleLineCount(iIndex, iLineCount);
return Py_BuildNone();
}
PyObject* eventGetLineHeight(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
return Py_BuildValue("i", CPythonEventManager::Instance().GetLineHeight(iIndex));
}
PyObject* eventSetYPosition(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
int iY;
if (!PyTuple_GetInteger(poArgs, 1, &iY))
return Py_BuildException();
CPythonEventManager::Instance().SetYPosition(iIndex, iY);
return Py_BuildNone();
}
PyObject* eventGetProcessedLineCount(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
return Py_BuildValue("i", CPythonEventManager::Instance().GetProcessedLineCount(iIndex));
}
PyObject* eventAllProcessEventSet(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
CPythonEventManager::Instance().AllProcessEventSet(iIndex);
return Py_BuildNone();
}
PyObject* eventGetTotalLineCount(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
return Py_BuildValue("i", CPythonEventManager::Instance().GetTotalLineCount(iIndex));
}
PyObject* eventSetFontColor(PyObject* poSelf, PyObject* poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
if (2 == PyTuple_Size(poArgs))
{
DWORD iColor = 0; // @fixme028 (int)
if (!PyTuple_GetUnsignedLong(poArgs, 1, &iColor)) // @fixme028 (GetInteger)
return Py_BuildException();
CPythonEventManager::Instance().SetFontColor(iIndex, iColor);
}
else if (4 == PyTuple_Size(poArgs))
{
float fr;
if (!PyTuple_GetFloat(poArgs, 1, &fr))
return Py_BuildException();
float fg;
if (!PyTuple_GetFloat(poArgs, 2, &fg))
return Py_BuildException();
float fb;
if (!PyTuple_GetFloat(poArgs, 3, &fb))
return Py_BuildException();
float fa = 1.0f;
BYTE argb[4] =
{
(BYTE)(255.0f * fb),
(BYTE)(255.0f * fg),
(BYTE)(255.0f * fr),
(BYTE)(255.0f * fa)
};
CPythonEventManager::Instance().SetFontColor(iIndex, *((DWORD*)argb));
}
else
{
return Py_BuildException();
}
return Py_BuildValue("i", CPythonEventManager::Instance().GetTotalLineCount(iIndex));
}
#endif
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 },
#ifdef ENABLE_NEW_EVENT_STRUCT
{ "SetVisibleLineCount", eventSetVisibleLineCount, METH_VARARGS },
{ "GetLineHeight", eventGetLineHeight, METH_VARARGS },
{ "SetYPosition", eventSetYPosition, METH_VARARGS },
{ "GetProcessedLineCount", eventGetProcessedLineCount, METH_VARARGS },
{ "AllProcessEventSet", eventAllProcessEventSet, METH_VARARGS },
{ "GetTotalLineCount", eventGetTotalLineCount, METH_VARARGS },
{ "SetFontColor", eventSetFontColor, METH_VARARGS },
#endif
{ 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);
}
//martysama0134's 2e58d0b8baeb072acdf3afc4a5d1999f