forked from Tr0n/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
338
src/UserInterface/PythonSafeBox.cpp
Normal file
338
src/UserInterface/PythonSafeBox.cpp
Normal file
@ -0,0 +1,338 @@
|
||||
#include "StdAfx.h"
|
||||
#include "PythonSafeBox.h"
|
||||
|
||||
void CPythonSafeBox::OpenSafeBox(int iSize)
|
||||
{
|
||||
m_dwMoney = 0;
|
||||
m_ItemInstanceVector.clear();
|
||||
m_ItemInstanceVector.resize(SAFEBOX_SLOT_X_COUNT * iSize);
|
||||
|
||||
for (DWORD i = 0; i < m_ItemInstanceVector.size(); ++i)
|
||||
{
|
||||
TItemData & rInstance = m_ItemInstanceVector[i];
|
||||
ZeroMemory(&rInstance, sizeof(rInstance));
|
||||
}
|
||||
}
|
||||
|
||||
void CPythonSafeBox::SetItemData(DWORD dwSlotIndex, const TItemData & rItemInstance)
|
||||
{
|
||||
if (dwSlotIndex >= m_ItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::SetItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return;
|
||||
}
|
||||
|
||||
m_ItemInstanceVector[dwSlotIndex] = rItemInstance;
|
||||
}
|
||||
|
||||
void CPythonSafeBox::DelItemData(DWORD dwSlotIndex)
|
||||
{
|
||||
if (dwSlotIndex >= m_ItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::DelItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return;
|
||||
}
|
||||
|
||||
TItemData & rInstance = m_ItemInstanceVector[dwSlotIndex];
|
||||
ZeroMemory(&rInstance, sizeof(rInstance));
|
||||
}
|
||||
|
||||
void CPythonSafeBox::SetMoney(DWORD dwMoney)
|
||||
{
|
||||
m_dwMoney = dwMoney;
|
||||
}
|
||||
|
||||
DWORD CPythonSafeBox::GetMoney()
|
||||
{
|
||||
return m_dwMoney;
|
||||
}
|
||||
|
||||
int CPythonSafeBox::GetCurrentSafeBoxSize()
|
||||
{
|
||||
return m_ItemInstanceVector.size();
|
||||
}
|
||||
|
||||
BOOL CPythonSafeBox::GetSlotItemID(DWORD dwSlotIndex, DWORD* pdwItemID)
|
||||
{
|
||||
if (dwSlotIndex >= m_ItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::GetSlotItemID(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*pdwItemID=m_ItemInstanceVector[dwSlotIndex].vnum;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CPythonSafeBox::GetItemDataPtr(DWORD dwSlotIndex, TItemData ** ppInstance)
|
||||
{
|
||||
if (dwSlotIndex >= m_ItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::GetItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*ppInstance = &m_ItemInstanceVector[dwSlotIndex];
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CPythonSafeBox::OpenMall(int iSize)
|
||||
{
|
||||
m_MallItemInstanceVector.clear();
|
||||
m_MallItemInstanceVector.resize(SAFEBOX_SLOT_X_COUNT * iSize);
|
||||
|
||||
for (DWORD i = 0; i < m_MallItemInstanceVector.size(); ++i)
|
||||
{
|
||||
TItemData & rInstance = m_MallItemInstanceVector[i];
|
||||
ZeroMemory(&rInstance, sizeof(rInstance));
|
||||
}
|
||||
}
|
||||
|
||||
void CPythonSafeBox::SetMallItemData(DWORD dwSlotIndex, const TItemData & rItemData)
|
||||
{
|
||||
if (dwSlotIndex >= m_MallItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::SetMallItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return;
|
||||
}
|
||||
|
||||
m_MallItemInstanceVector[dwSlotIndex] = rItemData;
|
||||
}
|
||||
|
||||
void CPythonSafeBox::DelMallItemData(DWORD dwSlotIndex)
|
||||
{
|
||||
if (dwSlotIndex >= m_MallItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::DelMallItemData(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return;
|
||||
}
|
||||
|
||||
TItemData & rInstance = m_MallItemInstanceVector[dwSlotIndex];
|
||||
ZeroMemory(&rInstance, sizeof(rInstance));
|
||||
}
|
||||
|
||||
BOOL CPythonSafeBox::GetMallItemDataPtr(DWORD dwSlotIndex, TItemData ** ppInstance)
|
||||
{
|
||||
if (dwSlotIndex >= m_MallItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::GetMallSlotItemID(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*ppInstance = &m_MallItemInstanceVector[dwSlotIndex];
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CPythonSafeBox::GetSlotMallItemID(DWORD dwSlotIndex, DWORD * pdwItemID)
|
||||
{
|
||||
if (dwSlotIndex >= m_MallItemInstanceVector.size())
|
||||
{
|
||||
TraceError("CPythonSafeBox::GetMallSlotItemID(dwSlotIndex=%d) - Strange slot index", dwSlotIndex);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*pdwItemID = m_MallItemInstanceVector[dwSlotIndex].vnum;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
DWORD CPythonSafeBox::GetMallSize()
|
||||
{
|
||||
return m_MallItemInstanceVector.size();
|
||||
}
|
||||
|
||||
CPythonSafeBox::CPythonSafeBox()
|
||||
{
|
||||
m_dwMoney = 0;
|
||||
}
|
||||
|
||||
CPythonSafeBox::~CPythonSafeBox()
|
||||
{
|
||||
}
|
||||
|
||||
PyObject * safeboxGetCurrentSafeboxSize(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
return Py_BuildValue("i", CPythonSafeBox::Instance().GetCurrentSafeBoxSize());
|
||||
}
|
||||
|
||||
PyObject * safeboxGetItemID(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int ipos;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &ipos))
|
||||
return Py_BadArgument();
|
||||
|
||||
TItemData * pInstance;
|
||||
if (!CPythonSafeBox::Instance().GetItemDataPtr(ipos, &pInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pInstance->vnum);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetItemCount(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int ipos;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &ipos))
|
||||
return Py_BadArgument();
|
||||
|
||||
TItemData * pInstance;
|
||||
if (!CPythonSafeBox::Instance().GetItemDataPtr(ipos, &pInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pInstance->count);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetItemFlags(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int ipos;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &ipos))
|
||||
return Py_BadArgument();
|
||||
|
||||
TItemData * pInstance;
|
||||
if (!CPythonSafeBox::Instance().GetItemDataPtr(ipos, &pInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pInstance->flags);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetItemMetinSocket(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
|
||||
return Py_BadArgument();
|
||||
int iSocketIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iSocketIndex))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (iSocketIndex >= ITEM_SOCKET_SLOT_MAX_NUM)
|
||||
return Py_BuildException();
|
||||
|
||||
TItemData * pItemData;
|
||||
if (!CPythonSafeBox::Instance().GetItemDataPtr(iSlotIndex, &pItemData))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pItemData->alSockets[iSocketIndex]);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetItemAttribute(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
|
||||
return Py_BuildException();
|
||||
int iAttrSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iAttrSlotIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
if (iAttrSlotIndex >= 0 && iAttrSlotIndex < ITEM_ATTRIBUTE_SLOT_MAX_NUM)
|
||||
{
|
||||
TItemData * pItemData;
|
||||
if (CPythonSafeBox::Instance().GetItemDataPtr(iSlotIndex, &pItemData))
|
||||
return Py_BuildValue("ii", pItemData->aAttr[iAttrSlotIndex].bType, pItemData->aAttr[iAttrSlotIndex].sValue);
|
||||
}
|
||||
|
||||
return Py_BuildValue("ii", 0, 0);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMoney(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
return Py_BuildValue("i", CPythonSafeBox::Instance().GetMoney());
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMallItemID(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int ipos;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &ipos))
|
||||
return Py_BadArgument();
|
||||
|
||||
TItemData * pInstance;
|
||||
if (!CPythonSafeBox::Instance().GetMallItemDataPtr(ipos, &pInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pInstance->vnum);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMallItemCount(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int ipos;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &ipos))
|
||||
return Py_BadArgument();
|
||||
|
||||
TItemData * pInstance;
|
||||
if (!CPythonSafeBox::Instance().GetMallItemDataPtr(ipos, &pInstance))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pInstance->count);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMallItemMetinSocket(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
|
||||
return Py_BadArgument();
|
||||
int iSocketIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iSocketIndex))
|
||||
return Py_BadArgument();
|
||||
|
||||
if (iSocketIndex >= ITEM_SOCKET_SLOT_MAX_NUM)
|
||||
return Py_BuildException();
|
||||
|
||||
TItemData * pItemData;
|
||||
if (!CPythonSafeBox::Instance().GetMallItemDataPtr(iSlotIndex, &pItemData))
|
||||
return Py_BuildException();
|
||||
|
||||
return Py_BuildValue("i", pItemData->alSockets[iSocketIndex]);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMallItemAttribute(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
int iSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &iSlotIndex))
|
||||
return Py_BuildException();
|
||||
int iAttrSlotIndex;
|
||||
if (!PyTuple_GetInteger(poArgs, 1, &iAttrSlotIndex))
|
||||
return Py_BuildException();
|
||||
|
||||
if (iAttrSlotIndex >= 0 && iAttrSlotIndex < ITEM_ATTRIBUTE_SLOT_MAX_NUM)
|
||||
{
|
||||
TItemData * pItemData;
|
||||
if (CPythonSafeBox::Instance().GetMallItemDataPtr(iSlotIndex, &pItemData))
|
||||
return Py_BuildValue("ii", pItemData->aAttr[iAttrSlotIndex].bType, pItemData->aAttr[iAttrSlotIndex].sValue);
|
||||
}
|
||||
|
||||
return Py_BuildValue("ii", 0, 0);
|
||||
}
|
||||
|
||||
PyObject * safeboxGetMallSize(PyObject * poSelf, PyObject * poArgs)
|
||||
{
|
||||
return Py_BuildValue("i", CPythonSafeBox::Instance().GetMallSize());
|
||||
}
|
||||
|
||||
void initsafebox()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
{
|
||||
// SafeBox
|
||||
{ "GetCurrentSafeboxSize", safeboxGetCurrentSafeboxSize, METH_VARARGS },
|
||||
{ "GetItemID", safeboxGetItemID, METH_VARARGS },
|
||||
{ "GetItemCount", safeboxGetItemCount, METH_VARARGS },
|
||||
{ "GetItemFlags", safeboxGetItemFlags, METH_VARARGS },
|
||||
{ "GetItemMetinSocket", safeboxGetItemMetinSocket, METH_VARARGS },
|
||||
{ "GetItemAttribute", safeboxGetItemAttribute, METH_VARARGS },
|
||||
{ "GetMoney", safeboxGetMoney, METH_VARARGS },
|
||||
|
||||
// Mall
|
||||
{ "GetMallItemID", safeboxGetMallItemID, METH_VARARGS },
|
||||
{ "GetMallItemCount", safeboxGetMallItemCount, METH_VARARGS },
|
||||
{ "GetMallItemMetinSocket", safeboxGetMallItemMetinSocket, METH_VARARGS },
|
||||
{ "GetMallItemAttribute", safeboxGetMallItemAttribute, METH_VARARGS },
|
||||
{ "GetMallSize", safeboxGetMallSize, METH_VARARGS },
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
PyObject * poModule = Py_InitModule("safebox", s_methods);
|
||||
PyModule_AddIntConstant(poModule, "SAFEBOX_SLOT_X_COUNT", CPythonSafeBox::SAFEBOX_SLOT_X_COUNT);
|
||||
PyModule_AddIntConstant(poModule, "SAFEBOX_SLOT_Y_COUNT", CPythonSafeBox::SAFEBOX_SLOT_Y_COUNT);
|
||||
PyModule_AddIntConstant(poModule, "SAFEBOX_PAGE_SIZE", CPythonSafeBox::SAFEBOX_PAGE_SIZE);
|
||||
}
|
Reference in New Issue
Block a user