feat: started work on enemy rifleman
This commit is contained in:
		
							parent
							
								
									2f6c7e13e5
								
							
						
					
					
						commit
						c4bd5edb54
					
				
							
								
								
									
										26
									
								
								modules/wave_survival/enemies/enemy_rifleman.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								modules/wave_survival/enemies/enemy_rifleman.cpp
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| #include "enemy_rifleman.h" | ||||
| 
 | ||||
| void EnemyRifleman::_bind_methods() { | ||||
| } | ||||
| 
 | ||||
| void EnemyRifleman::on_child_entered() { | ||||
| } | ||||
| 
 | ||||
| void EnemyRifleman::ready() { | ||||
| } | ||||
| 
 | ||||
| void EnemyRifleman::_notification(int what) { | ||||
| 	if (Engine::get_singleton()->is_editor_hint()) { | ||||
| 		return; | ||||
| 	} | ||||
| 	switch (what) { | ||||
| 		default: | ||||
| 			return; | ||||
| 		case NOTIFICATION_ENTER_TREE: | ||||
| 			enter_tree(); | ||||
| 			return; | ||||
| 		case NOTIFICATION_READY: | ||||
| 			ready(); | ||||
| 			return; | ||||
| 	} | ||||
| } | ||||
|  | @ -2,10 +2,55 @@ | |||
| #define ENEMY_RIFLEMAN_H | ||||
| 
 | ||||
| #include "wave_survival/enemy_body.h" | ||||
| #include "wave_survival/state.h" | ||||
| class AnimationPlayer; | ||||
| class NavigationAgent3D; | ||||
| 
 | ||||
| class EnemyRifleman : public EnemyBody { | ||||
| 	GDCLASS(EnemyRifleman, EnemyBody); | ||||
| 	static void _bind_methods(); | ||||
| 	void on_child_entered(); | ||||
| 	void enter_tree(); | ||||
| 	void ready(); | ||||
| 
 | ||||
| protected: | ||||
| 	void _notification(int what); | ||||
| }; | ||||
| 
 | ||||
| /* ============================== STATES ============================== */ | ||||
| 
 | ||||
| class RiflemanState : public State { | ||||
| 	GDCLASS(RiflemanState, State); | ||||
| 	static void _bind_methods(); | ||||
| 
 | ||||
| public: | ||||
| 	virtual void set_target(Node *target) override; | ||||
| 	EnemyRifleman *get_target() const; | ||||
| 	NpcUnit *get_unit() const; | ||||
| 	NavigationAgent3D *get_agent() const; | ||||
| 	AnimationPlayer *get_anim() const; | ||||
| 
 | ||||
| private: | ||||
| 	EnemyRifleman *target{ nullptr }; | ||||
| }; | ||||
| 
 | ||||
| class RiflemanPatrolState : public RiflemanState { | ||||
| 	GDCLASS(RiflemanPatrolState, RiflemanState); | ||||
| 	static void _bind_methods(); | ||||
| 
 | ||||
| public: | ||||
| 	virtual void enter_state() override; | ||||
| 	virtual void process(double delta) override; | ||||
| }; | ||||
| 
 | ||||
| class RiflemanSeekState : public RiflemanState { | ||||
| 	GDCLASS(RiflemanSeekState, RiflemanState); | ||||
| 	static void _bind_methods(); | ||||
| }; | ||||
| 
 | ||||
| class RiflemanFireState : public RiflemanState { | ||||
| 	GDCLASS(RiflemanFireState, RiflemanState); | ||||
| 	static void _bind_methods(); | ||||
| }; | ||||
| 
 | ||||
| #endif // !ENEMY_RIFLEMAN_H
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue