446 lines
13 KiB
C++
446 lines
13 KiB
C++
#include "StdAfx.h"
|
|
#include "PythonSystem.h"
|
|
|
|
PyObject * systemGetWidth(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetWidth());
|
|
}
|
|
|
|
PyObject * systemGetHeight(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetHeight());
|
|
}
|
|
|
|
PyObject * systemSetInterfaceHandler(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
PyObject* poHandler;
|
|
if (!PyTuple_GetObject(poArgs, 0, &poHandler))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetInterfaceHandler(poHandler);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemDestroyInterfaceHandler(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
CPythonSystem::Instance().DestroyInterfaceHandler();
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemReserveResource(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
std::set<std::string> ResourceSet;
|
|
CResourceManager::Instance().PushBackgroundLoadingSet(ResourceSet);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemisInterfaceConfig(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
int isInterfaceConfig = CPythonSystem::Instance().isInterfaceConfig();
|
|
return Py_BuildValue("i", isInterfaceConfig);
|
|
}
|
|
|
|
PyObject * systemSaveWindowStatus(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
int iIndex;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
|
return Py_BuildException();
|
|
|
|
int iVisible;
|
|
if (!PyTuple_GetInteger(poArgs, 1, &iVisible))
|
|
return Py_BuildException();
|
|
|
|
int iMinimized;
|
|
if (!PyTuple_GetInteger(poArgs, 2, &iMinimized))
|
|
return Py_BuildException();
|
|
|
|
int ix;
|
|
if (!PyTuple_GetInteger(poArgs, 3, &ix))
|
|
return Py_BuildException();
|
|
|
|
int iy;
|
|
if (!PyTuple_GetInteger(poArgs, 4, &iy))
|
|
return Py_BuildException();
|
|
|
|
int iHeight;
|
|
if (!PyTuple_GetInteger(poArgs, 5, &iHeight))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SaveWindowStatus(iIndex, iVisible, iMinimized, ix, iy, iHeight);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemGetWindowStatus(PyObject* poSelf, PyObject* poArgs)
|
|
{
|
|
int iIndex;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iIndex))
|
|
return Py_BuildException();
|
|
|
|
const CPythonSystem::TWindowStatus & c_rWindowStatus = CPythonSystem::Instance().GetWindowStatusReference(iIndex);
|
|
return Py_BuildValue("iiiii", c_rWindowStatus.isVisible,
|
|
c_rWindowStatus.isMinimized,
|
|
c_rWindowStatus.ixPosition,
|
|
c_rWindowStatus.iyPosition,
|
|
c_rWindowStatus.iHeight);
|
|
}
|
|
|
|
PyObject * systemGetConfig(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
CPythonSystem::TConfig *tmp = CPythonSystem::Instance().GetConfig();
|
|
|
|
int iRes = CPythonSystem::Instance().GetResolutionIndex(tmp->width, tmp->height, tmp->bpp);
|
|
int iFrequency = CPythonSystem::Instance().GetFrequencyIndex(iRes, tmp->frequency);
|
|
|
|
return Py_BuildValue("iiiiiiii", iRes,
|
|
iFrequency,
|
|
tmp->is_software_cursor,
|
|
tmp->is_object_culling,
|
|
tmp->music_volume,
|
|
tmp->voice_volume,
|
|
tmp->gamma,
|
|
tmp->iDistance);
|
|
}
|
|
|
|
PyObject * systemSetSaveID(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int iValue;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iValue))
|
|
return Py_BuildException();
|
|
|
|
char * szSaveID;
|
|
if (!PyTuple_GetString(poArgs, 1, &szSaveID))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetSaveID(iValue, szSaveID);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemisSaveID(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int value = CPythonSystem::Instance().IsSaveID();
|
|
return Py_BuildValue("i", value);
|
|
}
|
|
|
|
PyObject * systemGetSaveID(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
const char * c_szSaveID = CPythonSystem::Instance().GetSaveID();
|
|
return Py_BuildValue("s", c_szSaveID);
|
|
}
|
|
|
|
PyObject * systemGetMusicVolume(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("f", CPythonSystem::Instance().GetMusicVolume());
|
|
}
|
|
|
|
PyObject * systemGetSoundVolume(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetSoundVolume());
|
|
}
|
|
|
|
PyObject * systemSetMusicVolume(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
float fVolume;
|
|
if (!PyTuple_GetFloat(poArgs, 0, &fVolume))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetMusicVolume(fVolume);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemSetSoundVolumef(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
float fVolume;
|
|
if (!PyTuple_GetFloat(poArgs, 0, &fVolume))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetSoundVolumef(fVolume);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemIsSoftwareCursor(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().IsSoftwareCursor());
|
|
}
|
|
|
|
PyObject * systemSetViewChatFlag(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int iFlag;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetViewChatFlag(iFlag);
|
|
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemIsViewChat(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().IsViewChat());
|
|
}
|
|
|
|
PyObject * systemSetAlwaysShowNameFlag(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int iFlag;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetAlwaysShowNameFlag(iFlag);
|
|
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemSetShowDamageFlag(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int iFlag;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetShowDamageFlag(iFlag);
|
|
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemSetShowSalesTextFlag(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int iFlag;
|
|
if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().SetShowSalesTextFlag(iFlag);
|
|
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemIsAlwaysShowName(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().IsAlwaysShowName());
|
|
}
|
|
|
|
PyObject * systemIsShowDamage(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().IsShowDamage());
|
|
}
|
|
|
|
PyObject * systemIsShowSalesText(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().IsShowSalesText());
|
|
}
|
|
|
|
PyObject * systemSetConfig(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int res_index;
|
|
int width;
|
|
int height;
|
|
int bpp;
|
|
int frequency_index;
|
|
int frequency;
|
|
int software_cursor;
|
|
int shadow;
|
|
int object_culling;
|
|
int music_volume;
|
|
int voice_volume;
|
|
int gamma;
|
|
int distance;
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 0, &res_index))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 1, &frequency_index))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 2, &software_cursor))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 3, &shadow))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 4, &object_culling))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 5, &music_volume))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 6, &voice_volume))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 7, &gamma))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 8, &distance))
|
|
return Py_BuildException();
|
|
|
|
if (!CPythonSystem::Instance().GetResolution(res_index, (DWORD *) &width, (DWORD *) &height, (DWORD *) &bpp))
|
|
return Py_BuildNone();
|
|
|
|
if (!CPythonSystem::Instance().GetFrequency(res_index,frequency_index, (DWORD *) &frequency))
|
|
return Py_BuildNone();
|
|
|
|
CPythonSystem::TConfig tmp;
|
|
|
|
memcpy(&tmp, CPythonSystem::Instance().GetConfig(), sizeof(tmp));
|
|
|
|
tmp.width = width;
|
|
tmp.height = height;
|
|
tmp.bpp = bpp;
|
|
tmp.frequency = frequency;
|
|
tmp.is_software_cursor = software_cursor ? true : false;
|
|
tmp.is_object_culling = object_culling ? true : false;
|
|
tmp.music_volume = (char) music_volume;
|
|
tmp.voice_volume = (char) voice_volume;
|
|
tmp.gamma = gamma;
|
|
tmp.iDistance = distance;
|
|
|
|
CPythonSystem::Instance().SetConfig(&tmp);
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemApplyConfig(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
CPythonSystem::Instance().ApplyConfig();
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
PyObject * systemSaveConfig(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int ret = CPythonSystem::Instance().SaveConfig();
|
|
return Py_BuildValue("i", ret);
|
|
}
|
|
|
|
PyObject * systemGetResolutionCount(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetResolutionCount());
|
|
}
|
|
|
|
PyObject * systemGetFrequencyCount(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int index;
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 0, &index))
|
|
return Py_BuildException();
|
|
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetFrequencyCount(index));
|
|
}
|
|
|
|
PyObject * systemGetResolution(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int index;
|
|
DWORD width = 0, height = 0, bpp = 0;
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 0, &index))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().GetResolution(index, &width, &height, &bpp);
|
|
return Py_BuildValue("iii", width, height, bpp);
|
|
}
|
|
|
|
PyObject * systemGetCurrentResolution(PyObject * poSelf, PyObject *poArgs)
|
|
{
|
|
CPythonSystem::TConfig *tmp = CPythonSystem::Instance().GetConfig();
|
|
return Py_BuildValue("iii", tmp->width, tmp->height, tmp->bpp);
|
|
}
|
|
|
|
PyObject * systemGetFrequency(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int index, frequency_index;
|
|
DWORD frequency = 0;
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 0, &index))
|
|
return Py_BuildException();
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 1, &frequency_index))
|
|
return Py_BuildException();
|
|
|
|
CPythonSystem::Instance().GetFrequency(index, frequency_index, &frequency);
|
|
return Py_BuildValue("i", frequency);
|
|
}
|
|
|
|
PyObject * systemGetShadowLevel(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
return Py_BuildValue("i", CPythonSystem::Instance().GetShadowLevel());
|
|
}
|
|
|
|
PyObject * systemSetShadowLevel(PyObject * poSelf, PyObject * poArgs)
|
|
{
|
|
int level;
|
|
|
|
if (!PyTuple_GetInteger(poArgs, 0, &level))
|
|
return Py_BuildException();
|
|
|
|
if (level > 0)
|
|
CPythonSystem::Instance().SetShadowLevel(level);
|
|
|
|
return Py_BuildNone();
|
|
}
|
|
|
|
void initsystem()
|
|
{
|
|
static PyMethodDef s_methods[] =
|
|
{
|
|
{ "GetWidth", systemGetWidth, METH_VARARGS },
|
|
{ "GetHeight", systemGetHeight, METH_VARARGS },
|
|
|
|
{ "SetInterfaceHandler", systemSetInterfaceHandler, METH_VARARGS },
|
|
{ "DestroyInterfaceHandler", systemDestroyInterfaceHandler, METH_VARARGS },
|
|
{ "ReserveResource", systemReserveResource, METH_VARARGS },
|
|
|
|
{ "isInterfaceConfig", systemisInterfaceConfig, METH_VARARGS },
|
|
{ "SaveWindowStatus", systemSaveWindowStatus, METH_VARARGS },
|
|
{ "GetWindowStatus", systemGetWindowStatus, METH_VARARGS },
|
|
|
|
{ "GetResolutionCount", systemGetResolutionCount, METH_VARARGS },
|
|
{ "GetFrequencyCount", systemGetFrequencyCount, METH_VARARGS },
|
|
|
|
{ "GetCurrentResolution", systemGetCurrentResolution, METH_VARARGS },
|
|
|
|
{ "GetResolution", systemGetResolution, METH_VARARGS },
|
|
{ "GetFrequency", systemGetFrequency, METH_VARARGS },
|
|
|
|
{ "ApplyConfig", systemApplyConfig, METH_VARARGS },
|
|
{ "SetConfig", systemSetConfig, METH_VARARGS },
|
|
{ "SaveConfig", systemSaveConfig, METH_VARARGS },
|
|
{ "GetConfig", systemGetConfig, METH_VARARGS },
|
|
|
|
{ "SetSaveID", systemSetSaveID, METH_VARARGS },
|
|
{ "isSaveID", systemisSaveID, METH_VARARGS },
|
|
{ "GetSaveID", systemGetSaveID, METH_VARARGS },
|
|
|
|
{ "GetMusicVolume", systemGetMusicVolume, METH_VARARGS },
|
|
{ "GetSoundVolume", systemGetSoundVolume, METH_VARARGS },
|
|
|
|
{ "SetMusicVolume", systemSetMusicVolume, METH_VARARGS },
|
|
{ "SetSoundVolumef", systemSetSoundVolumef, METH_VARARGS },
|
|
{ "IsSoftwareCursor", systemIsSoftwareCursor, METH_VARARGS },
|
|
|
|
{ "SetViewChatFlag", systemSetViewChatFlag, METH_VARARGS },
|
|
{ "IsViewChat", systemIsViewChat, METH_VARARGS },
|
|
|
|
{ "SetAlwaysShowNameFlag", systemSetAlwaysShowNameFlag, METH_VARARGS },
|
|
{ "IsAlwaysShowName", systemIsAlwaysShowName, METH_VARARGS },
|
|
|
|
{ "SetShowDamageFlag", systemSetShowDamageFlag, METH_VARARGS },
|
|
{ "IsShowDamage", systemIsShowDamage, METH_VARARGS },
|
|
|
|
{ "SetShowSalesTextFlag", systemSetShowSalesTextFlag, METH_VARARGS },
|
|
{ "IsShowSalesText", systemIsShowSalesText, METH_VARARGS },
|
|
|
|
{ "GetShadowLevel", systemGetShadowLevel, METH_VARARGS },
|
|
{ "SetShadowLevel", systemSetShadowLevel, METH_VARARGS },
|
|
|
|
{ NULL, NULL, NULL }
|
|
};
|
|
|
|
PyObject * poModule = Py_InitModule("systemSetting", s_methods);
|
|
|
|
PyModule_AddIntConstant(poModule, "WINDOW_STATUS", CPythonSystem::WINDOW_STATUS);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_INVENTORY", CPythonSystem::WINDOW_INVENTORY);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_ABILITY", CPythonSystem::WINDOW_ABILITY);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_SOCIETY", CPythonSystem::WINDOW_SOCIETY);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_JOURNAL", CPythonSystem::WINDOW_JOURNAL);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_COMMAND", CPythonSystem::WINDOW_COMMAND);
|
|
|
|
PyModule_AddIntConstant(poModule, "WINDOW_QUICK", CPythonSystem::WINDOW_QUICK);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_GAUGE", CPythonSystem::WINDOW_GAUGE);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_MINIMAP", CPythonSystem::WINDOW_MINIMAP);
|
|
PyModule_AddIntConstant(poModule, "WINDOW_CHAT", CPythonSystem::WINDOW_CHAT);
|
|
}
|