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
 | ||||
| */ | ||||
| 
 | ||||
| PyObjectsEnum UIFrame::derived_type() | ||||
| { | ||||
|     return PyObjectsEnum::UIFRAME; | ||||
| } | ||||
| 
 | ||||
| void UIFrame::render(sf::Vector2f offset) | ||||
| { | ||||
|  | @ -86,3 +90,48 @@ void UISprite::render(sf::Vector2f offset) | |||
|     Resources::game->getWindow().draw(sprite); | ||||
|     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 "structmember.h" | ||||
| 
 | ||||
| enum PyObjectsEnum | ||||
| { | ||||
|     UIFRAME = 1, | ||||
|     UICAPTION, | ||||
|     UISPRITE, | ||||
|     UIGRID | ||||
| }; | ||||
| 
 | ||||
| class UIDrawable | ||||
| { | ||||
| public: | ||||
|  | @ -13,6 +21,7 @@ public: | |||
|     //virtual sf::Vector2i position();
 | ||||
|     bool handle_event(/* ??? click, scroll, keystroke*/); | ||||
|     std::string action; | ||||
|     virtual PyObjectsEnum derived_type() = 0; | ||||
| }; | ||||
| 
 | ||||
| //Python object types & forward declarations
 | ||||
|  | @ -42,6 +51,7 @@ public: | |||
|     void render(sf::Vector2f) override final; | ||||
|     void move(sf::Vector2f); | ||||
|      | ||||
|     PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UIFrame;  };
 | ||||
|     /*
 | ||||
|     sf::Color fillColor(); // getter
 | ||||
|     void fillColor(sf::Color c); // C++ setter
 | ||||
|  | @ -65,6 +75,7 @@ class UICaption: public UIDrawable | |||
| public: | ||||
|     sf::Text text; | ||||
|     void render(sf::Vector2f) override final; | ||||
|     PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UICaption;  };
 | ||||
| }; | ||||
| 
 | ||||
| class UISprite: public UIDrawable | ||||
|  | @ -74,6 +85,7 @@ public: | |||
|     int texture_index, sprite_index; | ||||
|     float scale; | ||||
|     sf::Sprite sprite; | ||||
|     PyObjectsEnum derived_type() override final; // { return PyObjectsEnum::UISprite;  };
 | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  | @ -101,8 +113,9 @@ typedef struct { | |||
|     std::shared_ptr<UISprite> data; | ||||
| } PyUISpriteObject; | ||||
| 
 | ||||
| PyObject* py_instance(std::shared_ptr<UIDrawable> source); | ||||
| 
 | ||||
| namespace mcrfpydef { | ||||
|      | ||||
|     // Color Definitions
 | ||||
|     // 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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue