From ae81218470803b0a614c2d8375fbf3d198456977 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Fri, 18 Jul 2008 15:14:53 +0100 Subject: [PATCH] Undo new exhaust graphic --- data/Makefile.am | 2 +- data/images/exhaust.png | Bin 1011 -> 0 bytes src/Game.cpp | 5 ++- src/Ship.cpp | 85 +++++++++++++++++----------------------- src/Ship.hpp | 8 ++-- 5 files changed, 43 insertions(+), 57 deletions(-) delete mode 100644 data/images/exhaust.png diff --git a/data/Makefile.am b/data/Makefile.am index 49ef3e3..45b2ddc 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -13,7 +13,7 @@ EXTRA_DIST = images/ship.png images/star.png images/start_option.png \ images/grass_surface2.png images/fuelmeter.png \ images/fuelbar.png images/speedmeter.png images/particle.png \ images/landingpad.png images/landingpadred.png images/title.png \ - images/gameover.png images/exhaust.png \ + images/gameover.png \ sounds/firework_1.wav sounds/bomb_explosion.wav \ sounds/boing1.wav \ Default_Font.ttf diff --git a/data/images/exhaust.png b/data/images/exhaust.png deleted file mode 100644 index 0739e7b79960e34c898a7ba49db7eca3637bfaac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOM@ z5(OsM_CX>@2HM@dakSAh-}0009{Nklu4!#R~uc8n1W%+FK^>m`E1%h=X zc-B}w>1dAz^URO5t#9>toCP4@3*aL+-|%Gv+R#?NE@w z0dPvyCC1=pBp|eoA{dKQ!hqS;b=}rib!QZnLWfvTsJaU50`^*%c#8lJhACo9=vIj` zj-8-tMCeRYbzGxEf$_Rtpjf{FCiQd#HQLK9YHT9$V9URl*o_RgF+D+8A( zd?{_VVFifumB~^NQZ{>V>V5jxlFW&lH*~V>=JCv{75I zFiXDwS=BeP0QXk4Rccf1nZmD=35e{pl6-!p`{X28cSkhOZd0?qtoz1yYbBb_S zbPjrtJy>c=l19=yeL|yS>174>@BUc(5qnMwPy^x0R7>4Te!0; zutP$=%qOv1u3$b^(XPXnnX70;VoY^M(J7T5RJ@=}o7(1yK-53&LaU*(J7R)Is{2Czp@KRjMNjps4btvI6UhL^6)*=6tx&%E!`Ji%z=j%D3gC4l8-^GhCN z(}nl7qdy%?>3o?b=bpP_ra;>)x!=qn-#Hyyz}Oc)cIO!t=$X)9Q&cu>FMvS+NB8b; z0XrM>j({th&u>&EaJ;cq0&VZ%gM@dE*3rHDv0;CsVzMD?8={N7hYuS6fp`x#gz=`u hy@wCX|M(y8!9TeH`FlK_hVTFY002ovPDHLkV1kLn*P#Fa diff --git a/src/Game.cpp b/src/Game.cpp index 5dfd21c..bb5875e 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -577,12 +577,15 @@ void Game::Display() // Draw the landing pads for (LandingPadListIt it = pads.begin(); it != pads.end(); ++it) (*it).Draw(nKeysRemaining > 0); + + // Draw the exhaust + ship.DrawExhaust(state == gsPaused); if (state != gsDeathWait && state != gsGameOver && state != gsFadeToDeath && state != gsFadeToRestart) { ship.Display(); } - + // Draw the explosion if necessary if (state == gsExplode) { ship.DrawExplosion(true); diff --git a/src/Ship.cpp b/src/Ship.cpp index acdcb7b..da56f8e 100644 --- a/src/Ship.cpp +++ b/src/Ship.cpp @@ -18,12 +18,6 @@ #include "Ship.hpp" #include "OpenGL.hpp" -const double Ship::EXHAUST_ALPHA_DELTA(0.02); -const double Ship::EXHAUST_WIDTH_DELTA(2.0); -const double Ship::EXHAUST_HEIGHT_DELTA(1.0); -const double Ship::EXHAUST_WIDTH_BASE(8.0); -const double Ship::EXHAUST_ALPHA_BASE(0.4); - /* * Defines a simplified polygon representing the ship. */ @@ -33,10 +27,9 @@ const Point Ship::hotspots[] = { Ship::Ship(Viewport *v) - : shipImage("images/ship.png"), exhaustImage("images/exhaust.png"), + : shipImage("images/ship.png"), xpos(0), ypos(0), speedX(0), speedY(0), angle(0), viewport(v), - thrusting(false), exhaust_alpha(0.0), exhaust_width(EXHAUST_WIDTH_BASE), - exhaust_height(0.0), + thrusting(false), boingSound(LocateResource("sounds/boing1.wav")) { @@ -44,37 +37,34 @@ Ship::Ship(Viewport *v) void Ship::Display() { - double dx = xpos - viewport->GetXAdjust(); - double dy = ypos - viewport->GetYAdjust(); + int dx = (int)xpos - viewport->GetXAdjust(); + int dy = (int)ypos - viewport->GetYAdjust(); + + shipImage.Draw(dx, dy, angle); +} - double width = shipImage.GetWidth(); - double height = shipImage.GetHeight(); - double e_width = exhaust_width; - double e_height = exhaust_height; +void Ship::DrawExhaust(bool paused) +{ + static double xlast, ylast; - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBindTexture(GL_TEXTURE_2D, shipImage.GetGLTexture()); - glLoadIdentity(); - glTranslated(dx + width/2, dy + height/2, 0.0); - glRotated(angle, 0.0, 0.0, 1.0); - glColor4d(1.0, 1.0, 1.0, 1.0); - glBegin(GL_QUADS); - glTexCoord2d(0.0, 0.0); glVertex2i(-(width/2), -(height/2)); - glTexCoord2d(0.0, 1.0); glVertex2i(-(width/2), height/2); - glTexCoord2d(1.0, 1.0); glVertex2i(width/2, height/2); - glTexCoord2d(1.0, 0.0); glVertex2i(width/2, -(height/2)); - glEnd(); - - glColor4d(1.0, 1.0, 1.0, exhaust_alpha); - glTranslated(0.0, height/2 + e_height/2, 0.0); - glBindTexture(GL_TEXTURE_2D, exhaustImage.GetGLTexture()); - glBegin(GL_QUADS); - glTexCoord2d(0.0, 0.0); glVertex2i(-(e_width/2), -(e_height/2)); - glTexCoord2d(0.0, 1.0); glVertex2i(-(e_width/2), e_height/2); - glTexCoord2d(1.0, 1.0); glVertex2i(e_width/2, e_height/2); - glTexCoord2d(1.0, 0.0); glVertex2i(e_width/2, -(e_height/2)); - glEnd(); + if (thrusting) { + if (sqrt(speedX*speedX + speedY*speedY) > 2.0f) { + exhaust.NewCluster + ((int)(exhaust.xpos + (exhaust.xpos - xlast)/2), + (int)(exhaust.ypos + (exhaust.ypos - ylast)/2)); + } + exhaust.Draw((double)viewport->GetXAdjust(), + (double)viewport->GetYAdjust(), true); + } + else if (paused) + exhaust.Draw((double)viewport->GetXAdjust(), + (double)viewport->GetYAdjust(), false, false); + else + exhaust.Draw((double)viewport->GetXAdjust(), + (double)viewport->GetYAdjust(), false); + + xlast = exhaust.xpos; + ylast = exhaust.ypos; } void Ship::DrawExplosion(bool createNew) @@ -112,6 +102,12 @@ void Ship::Move() boingSound.Play(); } + exhaust.xpos = xpos + shipImage.GetWidth()/2 + - (shipImage.GetWidth()/2)*(double)sin(angle*(PI/180)); + exhaust.ypos = ypos + shipImage.GetHeight()/2 + + (shipImage.GetHeight()/2)*(double)cos(angle*(PI/180)); + exhaust.yg = speedY; //+ (flGravity * 10); + exhaust.xg = speedX; explosion.xpos = xpos + shipImage.GetWidth()/2; explosion.ypos = ypos + shipImage.GetHeight()/2; } @@ -119,23 +115,11 @@ void Ship::Move() void Ship::ThrustOn() { thrusting = true; - if (exhaust_alpha < 1.0f) - exhaust_alpha += EXHAUST_ALPHA_DELTA; - if (exhaust_width < exhaustImage.GetWidth()) - exhaust_width += EXHAUST_WIDTH_DELTA; - if (exhaust_height < exhaustImage.GetHeight()) - exhaust_height += EXHAUST_HEIGHT_DELTA; } void Ship::ThrustOff() { thrusting = false; - if (exhaust_alpha > EXHAUST_ALPHA_BASE) - exhaust_alpha -= EXHAUST_ALPHA_DELTA; - if (exhaust_width > EXHAUST_WIDTH_BASE) - exhaust_width -= EXHAUST_WIDTH_DELTA; - if (exhaust_height > 0.0) - exhaust_height -= EXHAUST_HEIGHT_DELTA; } void Ship::Thrust(double speed) @@ -176,6 +160,7 @@ void Ship::CentreInViewport() */ void Ship::Reset() { + exhaust.Reset(); explosion.Reset(); xpos = (double)viewport->GetLevelWidth()/2; diff --git a/src/Ship.hpp b/src/Ship.hpp index 883a549..c0630fe 100644 --- a/src/Ship.hpp +++ b/src/Ship.hpp @@ -32,6 +32,7 @@ public: void Reset(); void Display(); + void DrawExhaust(bool paused); void DrawExplosion(bool createNew); void Move(); void ThrustOn(); @@ -58,20 +59,17 @@ private: void RotatePoints(const Point *pPoints, Point *pDest, int nCount, double angle, int adjustx=0, int adjusty=0); - Image shipImage, exhaustImage; + Image shipImage; double xpos, ypos; double speedX, speedY, angle; Viewport *viewport; Explosion explosion; + SmokeTrail exhaust; bool thrusting; - float exhaust_alpha, exhaust_width, exhaust_height; SoundEffect boingSound; - - static const double EXHAUST_ALPHA_DELTA, EXHAUST_WIDTH_DELTA, - EXHAUST_HEIGHT_DELTA, EXHAUST_WIDTH_BASE, EXHAUST_ALPHA_BASE; static const int NUM_HOTSPOTS = 8; Point points[NUM_HOTSPOTS]; -- 2.39.2