1 #ifndef _UNDEADCORE_BOSS_H
2 #define _UNDEADCORE_BOSS_H
3 
4 #include "../../object.h"
5 #include "../../stageboss.h"
6 
7 #define NUM_ROTATORS 4
8 enum BBoxes
9 {
10   BB_UPPER,
11   BB_BACK,
12   BB_LOWER,
13   BB_TARGET,
14   NUM_BBOXES
15 };
16 
17 enum UD_Faces
18 {
19   FACE_SKULL,
20   FACE_TEETH,
21   FACE_MOUTH,
22   FACE_MOUTH_LIT,
23   FACE_NONE
24 };
25 
26 class UDCoreBoss : public StageBoss
27 {
28 public:
29   void OnMapEntry();
30   void OnMapExit();
31   void Run();
32   void RunAftermove();
33 
34 private:
35   bool RunDefeated();
36   void SpawnFaceSmoke();
37   void SpawnPellet(int dir);
38   void RunHurtFlash(int timer);
39 
40   void run_front(Object *o);
41   void run_face(Object *o);
42   void run_back(Object *o);
43 
44   void move_bboxes();
45   void set_bbox_shootable(bool enable);
46 
47   Object *create_rotator(int angle, int front);
48   void run_rotator(Object *o);
49   void SetRotatorStates(int newstate);
50 
51   Object *main;
52   Object *front, *back;
53   Object *face;
54 
55   Object *rotator[NUM_ROTATORS];
56   Object *bbox[NUM_BBOXES];
57 };
58 
59 void onspawn_ud_minicore_idle(Object *o);
60 void ai_udmini_platform(Object *o);
61 void ai_ud_pellet(Object *o);
62 void ai_ud_smoke(Object *o);
63 void ai_ud_spinner(Object *o);
64 void ai_ud_spinner_trail(Object *o);
65 void ai_ud_blast(Object *o);
66 
67 #endif
68