Update README.md
This commit is contained in:
		
							parent
							
								
									a379a5b564
								
							
						
					
					
						commit
						c12633143c
					
				
							
								
								
									
										26
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								README.md
									
									
									
									
									
								
							|  | @ -2,51 +2,53 @@ | |||
| 
 | ||||
| > Specifically for use with [godot-cpp-template](https://git.objectionable.solutions/hertog/godot-module-template). | ||||
| 
 | ||||
| ## Headers | ||||
| ## Header Files | ||||
| 
 | ||||
| ```cpp | ||||
| // always use #define-based header guards, | ||||
| // the name has to match the filename | ||||
| // #define-based header guards are required, | ||||
| // and have to match the name has to match the filename | ||||
| #ifndef MY_CLASS_H | ||||
| #define MY_CLASS_H | ||||
| 
 | ||||
| // PascalCase for all types | ||||
| class MyClass : public Object { | ||||
|     GDCLASS(MyClass, Object); | ||||
|     // functions are always snake_cased | ||||
|     // functions have to be snake_cased | ||||
|     static void _bind_methods(); | ||||
|     void on_some_signal(); // signal listeners are private unless otherwise called | ||||
|     void on_some_signal(); // signal listeners have to be private unless they have to be publicly accessible otherwise | ||||
| public: | ||||
|     void do_things(); | ||||
|     // getters and setters go after other types of functions, closest to the variables. | ||||
|     void set_my_var(int value); // set first | ||||
|     int get_my_var() const; // get second, and const except when it can't be | ||||
|     int get_my_var() const; // get function goes second, and should be const if possible | ||||
| // private variables go at the bottom | ||||
| private: | ||||
|     int myvar{1}; // variables are snake_case, and always initialized in headers unless impossible | ||||
|     int myvar{ 1 }; // variables are snake_case, and always initialized in headers unless impossible | ||||
|                   // (e.g, const vars that get initialized in constructors) | ||||
|     String const sig_some_signal{"some_signal"}; // store signal names in a variable to make them easier to keep track of | ||||
|     String const sig_some_signal{ "some_signal" }; // store signal names in a variable to make them easier to keep track of | ||||
| }; | ||||
| #endif // !MY_CLASS_H // end #if/#ifdef/#ifndef directives with a repeat of the condition | ||||
| ``` | ||||
| 
 | ||||
| # Implementations | ||||
| # Implementation Files | ||||
| 
 | ||||
| ```cpp | ||||
| #include "my_class.h" | ||||
| // the matching header always goes on top, other header includes come after in alphabetical order | ||||
| #include "macros.h" | ||||
| void MyClass::_bind_methods() { | ||||
|     BIND_PROPERTY(Variant::INT, my_var); // use macros.h simplified binding tools when possible | ||||
|     BIND_PROPERTY(Variant::INT, my_var); // use macros.h simplified property binding macros when possible | ||||
| } | ||||
| 
 | ||||
| void MyClass::do_things() { | ||||
|     set_my_var(10); // this-> is not required for class methods | ||||
|     cast_to<Object>(this); // nor for static class methods. | ||||
|     cast_to<Object>(this); // static class methods don't require scope specification. | ||||
|     // use self_type when referring to the type of 'this' | ||||
|     this->connect(this->sig_some_signal, callable_mp(this, &self_type::on_some_signal)); | ||||
| } | ||||
| 
 | ||||
| void MyClass::set_my_var(int value) { | ||||
|     // for all uses of member variables, use this-> | ||||
|     // all uses of member variables REQUIRE this-> | ||||
|     this->my_var = value; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue