1 /*
2  * Copyright (c) 2000 Mark B. Allan. All rights reserved.
3  *
4  * "Chromium B.S.U." is free software; you can redistribute
5  * it and/or use it and/or modify it under the terms of the
6  * "Clarified Artistic License"
7  */
8 #ifndef EnemyFleet_h
9 #define EnemyFleet_h
10 
11 #ifdef HAVE_CONFIG_H
12 #include <chromium-bsu-config.h>
13 #endif
14 
15 #include "compatibility.h"
16 
17 #if defined(HAVE_APPLE_OPENGL_FRAMEWORK) || defined(HAVE_OPENGL_GL_H)
18 #include <OpenGL/gl.h>
19 #else
20 #include <GL/gl.h>
21 #endif
22 
23 #include "EnemyAircraft.h"
24 
25 class Global;
26 
27 //====================================================================
28 class EnemyFleet
29 {
30 public:
31 	EnemyFleet();
32 	~EnemyFleet();
33 
34 	void	drawGL();
35 	void	clear();
36 
37 	void	addEnemy(EnemyAircraft *);
38 	void	killEnemy(EnemyAircraft *);
39 
40 	void	destroyAll();
41 	void	retarget(EnemyType et, ScreenItem *newTarget);
42 
43 	void			toFirst();
44 	EnemyAircraft	*getShip();
45 
46 	void	update();
47 
48 	void	loadTextures();
49 	void	deleteTextures();
50 
51 private:
drawQuad(float szx,float szy)52 	inline void drawQuad(float szx, float szy)
53 	{
54 		glBegin(GL_TRIANGLE_STRIP);
55 			glTexCoord2f(1.0, 0.0); glVertex3f( szx,  szy, 0.0);
56 			glTexCoord2f(0.0, 0.0); glVertex3f(-szx,  szy, 0.0);
57 			glTexCoord2f(1.0, 1.0); glVertex3f( szx, -szy, 0.0);
58 			glTexCoord2f(0.0, 1.0); glVertex3f(-szx, -szy, 0.0);
59 		glEnd();
60 	}
61 
62 	void	bossExplosion(EnemyAircraft *);
63 
64 private:
65 	GLuint			shipTex[NumEnemyTypes];
66 	GLuint			extraTex[NumEnemyTypes];
67 
68 	EnemyAircraft	*squadRoot;
69 	EnemyAircraft	*currentShip;
70 
71 private:
72 	Global	*game;
73 };
74 
75 #endif // EnemyFleet_h
76