#include "Fire.h" #include "Engine.h" //================================================================================================// /******************************************************** ** Doesnt really do anything, more like a dummy entity ** *********************************************************/ //================================================================================================// Fire::Fire() { } void Fire::Spawn(Vec2 pos) { IsActive = true; oPos = Pos = pos; } Fire* Fire::Clone()const { return new Fire(*this); } void Fire::Update() { } void Fire::Draw(const float interp) { glColor4f(1,1,1,1); UTIL_GL::SetBlend(GL_SRC_ALPHA,GL_ONE); UTIL_GL::BindTexture(GL_TEXTURE_2D,gpEngine->imgSplashFire); for(int f=0;f<1;f++) { float x = Pos.x; float y = Pos.y; float sinus=0.3f; float fire; float t=gpEngine->mTimer.GetTime(); if(f>0) fire = sin(t*=1.5f)*10; else fire = sin(t*5)*10; glBegin(GL_QUADS); if(!bTop) { glTexCoord2f((float)(f?1:0),0); glVertex2f(x+fire, y); glTexCoord2f((float)(f?0:1),0); glVertex2f(x+512+fire, y); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.25f); glVertex2f(x+512+fire*0.75f, y+32); glTexCoord2f((float)(f?1:0),0.25f); glVertex2f(x+fire*0.75f, y+32); glTexCoord2f((float)(f?1:0),0.25f); glVertex2f(x+fire*0.75f, y+32); glTexCoord2f((float)(f?0:1),0.25f); glVertex2f(x+512+fire*0.75f, y+32); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.5f); glVertex2f(x+512+fire*0.5f, y+64); glTexCoord2f((float)(f?1:0),0.5f); glVertex2f(x+fire*0.5f, y+64); glTexCoord2f((float)(f?1:0),0.5f); glVertex2f(x+fire*0.5f, y+64); glTexCoord2f((float)(f?0:1),0.5f); glVertex2f(x+512+fire*0.5f, y+64); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.75f); glVertex2f(x+512+fire*0.25f, y+96); glTexCoord2f((float)(f?1:0),0.75f); glVertex2f(x+fire*0.25f, y+96); glTexCoord2f((float)(f?1:0),0.75f); glVertex2f(x+fire*0.25f, y+96); glTexCoord2f((float)(f?0:1),0.75f); glVertex2f(x+512+fire*0.25f, y+96); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),1); glVertex2f(x+512, y+128); glTexCoord2f((float)(f?1:0),1); glVertex2f(x, y+128); glEnd(); } else { y=y+96; glTexCoord2f((float)(f?1:0),0); glVertex2f(x+fire, y); glTexCoord2f((float)(f?0:1),0); glVertex2f(x+512+fire, y); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.25f); glVertex2f(x+512+fire*0.75f, y-32); glTexCoord2f((float)(f?1:0),0.25f); glVertex2f(x+fire*0.75f, y-32); glTexCoord2f((float)(f?1:0),0.25f); glVertex2f(x+fire*0.75f, y-32); glTexCoord2f((float)(f?0:1),0.25f); glVertex2f(x+512+fire*0.75f, y-32); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.5f); glVertex2f(x+512+fire*0.5f, y-64); glTexCoord2f((float)(f?1:0),0.5f); glVertex2f(x+fire*0.5f, y-64); glTexCoord2f((float)(f?1:0),0.5f); glVertex2f(x+fire*0.5f, y-64); glTexCoord2f((float)(f?0:1),0.5f); glVertex2f(x+512+fire*0.5f, y-64); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),0.75f); glVertex2f(x+512+fire*0.25f, y-96); glTexCoord2f((float)(f?1:0),0.75f); glVertex2f(x+fire*0.25f, y-96); glTexCoord2f((float)(f?1:0),0.75f); glVertex2f(x+fire*0.25f, y-96); glTexCoord2f((float)(f?0:1),0.75f); glVertex2f(x+512+fire*0.25f, y-96); fire = sin((t+=sinus)*5)*10; glTexCoord2f((float)(f?0:1),1); glVertex2f(x+512, y-128); glTexCoord2f((float)(f?1:0),1); glVertex2f(x, y-128); glEnd(); } } glDisable(GL_BLEND); } void Fire::NeedsToBeRemoved() { if(Pos.x+512<=gpEngine->Scroll) IsActive = false; } bool Fire::CheckCollided(Sphere s, float damage) { return false; } void Fire::LoadFromFile(CFileIO &fIO) { fIO.ReadBinary(&bTop,1); } void Fire::WriteToFile(CFileIO &fIO) { fIO.WriteBinary(&bTop,1); } int Fire::InWater() { return 0; }