PyVector init should be pretty reliable now
This commit is contained in:
parent
c13e185289
commit
5edebdd643
|
@ -56,28 +56,19 @@ int PyVector::init(PyVectorObject* self, PyObject* args, PyObject* kwds)
|
||||||
using namespace mcrfpydef;
|
using namespace mcrfpydef;
|
||||||
static const char* keywords[] = { "x", "y", nullptr };
|
static const char* keywords[] = { "x", "y", nullptr };
|
||||||
PyObject* leader = NULL;
|
PyObject* leader = NULL;
|
||||||
double x=0, y=0;
|
float x=0, y=0;
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Of", const_cast<char**>(keywords), &leader, &y))
|
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Of", const_cast<char**>(keywords), &leader, &y))
|
||||||
{
|
{
|
||||||
//PyErr_SetString(PyExc_TypeError, "mcrfpy.Vector requires a 2-tuple or two numeric values");
|
//PyErr_SetString(PyExc_TypeError, "mcrfpy.Vector requires a 2-tuple or two numeric values");
|
||||||
self->data = sf::Vector2f();
|
return -1;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
else if (leader == NULL || leader == Py_None)
|
if (leader == NULL || leader == Py_None)
|
||||||
{
|
{
|
||||||
self->data = sf::Vector2f();
|
self->data = sf::Vector2f();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the "r" arg is already a vector, yoink that color value
|
if (PyTuple_Check(leader))
|
||||||
else if (PyObject_IsInstance(leader, (PyObject*)&PyVectorType))
|
|
||||||
{
|
|
||||||
self->data = ((PyVectorObject*)leader)->data;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
// else if the "r" arg is a 3-tuple, initialize to (r, g, b, 255)
|
|
||||||
// (if the "r" arg is a 4-tuple, initialize to (r, g, b, a))
|
|
||||||
else if (PyTuple_Check(leader))
|
|
||||||
{
|
{
|
||||||
if (PyTuple_Size(leader) != 2)
|
if (PyTuple_Size(leader) != 2)
|
||||||
{
|
{
|
||||||
|
@ -88,6 +79,7 @@ int PyVector::init(PyVectorObject* self, PyObject* args, PyObject* kwds)
|
||||||
y = PyFloat_AsDouble(PyTuple_GetItem(leader, 1));
|
y = PyFloat_AsDouble(PyTuple_GetItem(leader, 1));
|
||||||
|
|
||||||
self->data = sf::Vector2f(x, y);
|
self->data = sf::Vector2f(x, y);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
// else -
|
// else -
|
||||||
else if (!PyFloat_Check(leader) && !(PyLong_Check(leader)))
|
else if (!PyFloat_Check(leader) && !(PyLong_Check(leader)))
|
||||||
|
|
Loading…
Reference in New Issue