UIDrawable to Python object (untested, but compiling)
This commit is contained in:
parent
0ef0a5d506
commit
b8af8bc870
49
src/UI.cpp
49
src/UI.cpp
|
@ -52,6 +52,10 @@ UIFrame::~UIFrame()
|
||||||
void outlineColor(PyObject* pyColor); // Python setter
|
void outlineColor(PyObject* pyColor); // Python setter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
PyObjectsEnum UIFrame::derived_type()
|
||||||
|
{
|
||||||
|
return PyObjectsEnum::UIFRAME;
|
||||||
|
}
|
||||||
|
|
||||||
void UIFrame::render(sf::Vector2f offset)
|
void UIFrame::render(sf::Vector2f offset)
|
||||||
{
|
{
|
||||||
|
@ -86,3 +90,48 @@ void UISprite::render(sf::Vector2f offset)
|
||||||
Resources::game->getWindow().draw(sprite);
|
Resources::game->getWindow().draw(sprite);
|
||||||
sprite.move(-offset);
|
sprite.move(-offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObjectsEnum UICaption::derived_type()
|
||||||
|
{
|
||||||
|
return PyObjectsEnum::UICAPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
PyObjectsEnum UISprite::derived_type()
|
||||||
|
{
|
||||||
|
return PyObjectsEnum::UISPRITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
PyObject* py_instance(std::shared_ptr<UIDrawable> source)
|
||||||
|
{
|
||||||
|
// takes a UI drawable, calls its derived_type virtual function, and builds a Python object based on the return value.
|
||||||
|
using namespace mcrfpydef;
|
||||||
|
PyObject* newobj;
|
||||||
|
switch (source->derived_type())
|
||||||
|
{
|
||||||
|
case PyObjectsEnum::UIFRAME:
|
||||||
|
{
|
||||||
|
PyUIFrameObject* o = (PyUIFrameObject*)PyUIFrameType.tp_alloc(&PyUIFrameType, 0);
|
||||||
|
if (o)
|
||||||
|
o->data = std::static_pointer_cast<UIFrame>(source);
|
||||||
|
newobj = (PyObject*)o;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* not yet implemented
|
||||||
|
case PyObjectsEnum::UICAPTION:
|
||||||
|
PyUICaptionObject* o = (PyUICaptionObject*)PyUICaptionType.tp_alloc(&PyUICaptionType, 0);
|
||||||
|
if (o)
|
||||||
|
o->data = std::static_pointer_cast<UICaption>(source);
|
||||||
|
break;
|
||||||
|
case PyObjectsEnum::UISPRITE:
|
||||||
|
PyUISpriteObject* o = (PyUISpriteObject*)PyUISpriteType.tp_alloc(&PyUISpriteType, 0);
|
||||||
|
if (o)
|
||||||
|
o->data = std::static_pointer_cast<UISprite>(source);
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newobj;
|
||||||
|
}
|
||||||
|
|
34
src/UI.h
34
src/UI.h
|
@ -3,6 +3,14 @@
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
|
enum PyObjectsEnum
|
||||||
|
{
|
||||||
|
UIFRAME = 1,
|
||||||
|
UICAPTION,
|
||||||
|
UISPRITE,
|
||||||
|
UIGRID
|
||||||
|
};
|
||||||
|
|
||||||
class UIDrawable
|
class UIDrawable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -13,6 +21,7 @@ public:
|
||||||
//virtual sf::Vector2i position();
|
//virtual sf::Vector2i position();
|
||||||
bool handle_event(/* ??? click, scroll, keystroke*/);
|
bool handle_event(/* ??? click, scroll, keystroke*/);
|
||||||
std::string action;
|
std::string action;
|
||||||
|
virtual PyObjectsEnum derived_type() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Python object types & forward declarations
|
//Python object types & forward declarations
|
||||||
|
@ -42,6 +51,7 @@ public:
|
||||||
void render(sf::Vector2f) override final;
|
void render(sf::Vector2f) override final;
|
||||||
void move(sf::Vector2f);
|
void move(sf::Vector2f);
|
||||||
|
|
||||||
|
PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UIFrame; };
|
||||||
/*
|
/*
|
||||||
sf::Color fillColor(); // getter
|
sf::Color fillColor(); // getter
|
||||||
void fillColor(sf::Color c); // C++ setter
|
void fillColor(sf::Color c); // C++ setter
|
||||||
|
@ -65,6 +75,7 @@ class UICaption: public UIDrawable
|
||||||
public:
|
public:
|
||||||
sf::Text text;
|
sf::Text text;
|
||||||
void render(sf::Vector2f) override final;
|
void render(sf::Vector2f) override final;
|
||||||
|
PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UICaption; };
|
||||||
};
|
};
|
||||||
|
|
||||||
class UISprite: public UIDrawable
|
class UISprite: public UIDrawable
|
||||||
|
@ -74,6 +85,7 @@ public:
|
||||||
int texture_index, sprite_index;
|
int texture_index, sprite_index;
|
||||||
float scale;
|
float scale;
|
||||||
sf::Sprite sprite;
|
sf::Sprite sprite;
|
||||||
|
PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UISprite; };
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -101,8 +113,9 @@ typedef struct {
|
||||||
std::shared_ptr<UISprite> data;
|
std::shared_ptr<UISprite> data;
|
||||||
} PyUISpriteObject;
|
} PyUISpriteObject;
|
||||||
|
|
||||||
namespace mcrfpydef {
|
PyObject* py_instance(std::shared_ptr<UIDrawable> source);
|
||||||
|
|
||||||
|
namespace mcrfpydef {
|
||||||
// Color Definitions
|
// Color Definitions
|
||||||
// struct, members, new, set_member, PyTypeObject
|
// struct, members, new, set_member, PyTypeObject
|
||||||
|
|
||||||
|
@ -451,6 +464,25 @@ namespace mcrfpydef {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Begin Python Class Instantiator (iterator helper)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* // definition can't go in the header file
|
||||||
|
PyObject* py_instance(UIDrawable* obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* End Python Class Instantitator (iterator helper)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Begin PyUICollectionIter defs
|
* Begin PyUICollectionIter defs
|
||||||
|
|
Loading…
Reference in New Issue