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