From cbceb6c8b2806587a45e05946cb591bd119cc801 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Tue, 30 Dec 2008 16:44:34 +0000 Subject: BGE API cleanup: more consistent type check on set attribute (mouse and keyboard so far). Check type after name so that the user get a type error when assigning a wrong type to a built-in attribute. --- source/gameengine/GameLogic/SCA_KeyboardSensor.cpp | 77 +++++++++++++--------- 1 file changed, 46 insertions(+), 31 deletions(-) (limited to 'source/gameengine/GameLogic/SCA_KeyboardSensor.cpp') diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp index f880cd7768e..0e014628ac7 100644 --- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp +++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp @@ -846,49 +846,64 @@ SCA_KeyboardSensor::_getattr(const STR_String& attr) int SCA_KeyboardSensor::_setattr(const STR_String& attr, PyObject *value) { - if (PyInt_Check(value)) + if (attr == "key") { - int val = PyInt_AsLong(value); - - if (attr == "key") - { - m_hotkey = val; - return 0; + if (!PyInt_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected an integer"); + return 1; } + m_hotkey = PyInt_AsLong(value); + return 0; + } - if (attr == "hold1") - { - m_qual = val; - return 0; + if (attr == "hold1") + { + if (!PyInt_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected an integer"); + return 1; } - - if (attr == "hold2") - { - m_qual2 = val; - return 0; + m_qual = PyInt_AsLong(value); + return 0; + } + + if (attr == "hold2") + { + if (!PyInt_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected an integer"); + return 1; } + m_qual2 = PyInt_AsLong(value); + return 0; + } - if (attr == "useAllKeys") - { - m_bAllKeys = (val != 0); - return 0; + if (attr == "useAllKeys") + { + if (!PyInt_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected an integer"); + return 1; } + m_bAllKeys = (PyInt_AsLong(value) != 0); + return 0; } - - if (PyString_Check(value)) + + if (attr == "logToggleProperty") { - STR_String val = PyString_AsString(value); - if (attr == "logToggleProperty") - { - m_toggleprop = val; - return 0; + if (!PyString_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected a string"); + return 1; } + m_toggleprop = PyString_AsString(value); + return 0; + } - if (attr == "logTargetProperty") - { - m_targetprop = val; - return 0; + if (attr == "logTargetProperty") + { + if (!PyString_Check(value)){ + PyErr_SetString(PyExc_TypeError, "expected a string"); + return 1; } + m_targetprop = PyString_AsString(value); + return 0; } return SCA_ISensor::_setattr(attr, value); -- cgit v1.2.3