client/UserInterface/PythonEffectModule.cpp

151 lines
4.7 KiB
C++

#include "StdAfx.h"
#include "../EffectLib/EffectManager.h"
#include "PythonCharacterManager.h"
PyObject * effectRegisterEffect(PyObject * poSelf, PyObject * poArgs)
{
char * szFileName;
if (!PyTuple_GetString(poArgs, 0, &szFileName))
return Py_BuildException();
CEffectManager::Instance().RegisterEffect(szFileName);
return Py_BuildNone();
}
PyObject * effectUpdate(PyObject * poSelf, PyObject * poArgs)
{
CEffectManager::Instance().Update();
return Py_BuildNone();
}
PyObject * effectRender(PyObject * poSelf, PyObject * poArgs)
{
CEffectManager::Instance().Render();
return Py_BuildNone();
}
PyObject * effectCreateEffect(PyObject * poSelf, PyObject * poArgs)
{
char * szEffectName;
if (!PyTuple_GetString(poArgs, 0, &szEffectName))
return Py_BuildException();
CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetSelectedInstancePtr();
TPixelPosition PixelPosition;
pInstance->NEW_GetPixelPosition(&PixelPosition);
int iIndex = CEffectManager::Instance().CreateEffect(szEffectName, PixelPosition, D3DXVECTOR3(0.0f, 0.0f, 0.0f));
return Py_BuildValue("i", iIndex);
}
PyObject * effectDeleteEffect(PyObject * poSelf, PyObject * poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
CEffectManager::Instance().DestroyEffectInstance(iIndex);
return Py_BuildNone();
}
PyObject * effectSetPosition(PyObject * poSelf, PyObject * poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
float fx;
if (!PyTuple_GetFloat(poArgs, 1, &fx))
return Py_BuildException();
float fy;
if (!PyTuple_GetFloat(poArgs, 2, &fy))
return Py_BuildException();
float fz;
if (!PyTuple_GetFloat(poArgs, 3, &fz))
return Py_BuildException();
CEffectManager::Instance().SelectEffectInstance(iIndex);
CEffectManager::Instance().SetEffectInstancePosition(D3DXVECTOR3(fx, fy, fz));
return Py_BuildNone();
}
PyObject * effectRegisterIndexedFlyData(PyObject * poSelf, PyObject * poArgs)
{
int iIndex;
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
return Py_BuildException();
int iType;
if (!PyTuple_GetInteger(poArgs, 1, &iType))
return Py_BuildException();
char * szFlyDataName;
if (!PyTuple_GetString(poArgs, 2, &szFlyDataName))
return Py_BuildException();
CFlyingManager::Instance().RegisterIndexedFlyData(iIndex, iType, szFlyDataName);
return Py_BuildNone();
}
void initeffect()
{
static PyMethodDef s_methods[] =
{
{ "RegisterEffect", effectRegisterEffect, METH_VARARGS },
{ "CreateEffect", effectCreateEffect, METH_VARARGS },
{ "DeleteEffect", effectDeleteEffect, METH_VARARGS },
{ "SetPosition", effectSetPosition, METH_VARARGS },
{ "RegisterIndexedFlyData", effectRegisterIndexedFlyData, METH_VARARGS },
{ "Update", effectUpdate, METH_VARARGS },
{ "Render", effectRender, METH_VARARGS },
{ NULL, NULL, NULL },
};
PyObject * poModule = Py_InitModule("effect", s_methods);
PyModule_AddIntConstant(poModule, "INDEX_FLY_TYPE_NORMAL", CFlyingManager::INDEX_FLY_TYPE_NORMAL);
PyModule_AddIntConstant(poModule, "INDEX_FLY_TYPE_FIRE_CRACKER", CFlyingManager::INDEX_FLY_TYPE_FIRE_CRACKER);
PyModule_AddIntConstant(poModule, "INDEX_FLY_TYPE_AUTO_FIRE", CFlyingManager::INDEX_FLY_TYPE_AUTO_FIRE);
enum
{
FLY_NONE,
FLY_EXP,
FLY_HP_MEDIUM,
FLY_HP_BIG,
FLY_SP_SMALL,
FLY_SP_MEDIUM,
FLY_SP_BIG,
FLY_FIREWORK1,
FLY_FIREWORK2,
FLY_FIREWORK3,
FLY_FIREWORK4,
FLY_FIREWORK5,
FLY_FIREWORK6,
FLY_FIREWORK_XMAS,
FLY_CHAIN_LIGHTNING,
FLY_HP_SMALL,
FLY_SKILL_MUYEONG,
};
PyModule_AddIntConstant(poModule, "FLY_NONE", FLY_NONE);
PyModule_AddIntConstant(poModule, "FLY_EXP", FLY_EXP);
PyModule_AddIntConstant(poModule, "FLY_HP_MEDIUM", FLY_HP_MEDIUM);
PyModule_AddIntConstant(poModule, "FLY_HP_BIG", FLY_HP_BIG);
PyModule_AddIntConstant(poModule, "FLY_SP_SMALL", FLY_SP_SMALL);
PyModule_AddIntConstant(poModule, "FLY_SP_MEDIUM", FLY_SP_MEDIUM);
PyModule_AddIntConstant(poModule, "FLY_SP_BIG", FLY_SP_BIG);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK1", FLY_FIREWORK1);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK2", FLY_FIREWORK2);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK3", FLY_FIREWORK3);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK4", FLY_FIREWORK4);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK5", FLY_FIREWORK5);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK6", FLY_FIREWORK6);
PyModule_AddIntConstant(poModule, "FLY_FIREWORK_XMAS", FLY_FIREWORK_XMAS);
PyModule_AddIntConstant(poModule, "FLY_CHAIN_LIGHTNING", FLY_CHAIN_LIGHTNING);
PyModule_AddIntConstant(poModule, "FLY_HP_SMALL", FLY_HP_SMALL);
PyModule_AddIntConstant(poModule, "FLY_SKILL_MUYEONG", FLY_SKILL_MUYEONG);
}