All pastes #707494 Raw Edit

COCKEN I BOCKEN

public cpp v1 · immutable
#707494 ·published 2007-09-22 23:40 UTC
rendered paste body
#include <zahu/zahu.h>#include <zahu/basic_app.h>#include <cstdlib>#include <ctime>#include <zahu/opengl/static_font.h>#include <zahu/opengl/utils.h>//#include "lib/minifmod.h"#define CP_MAX 64#define SF_MAX 256using namespace zahu;using namespace zahu::Imaging;using namespace zahu::OpenGL;class Scene{private:public:	virtual void Init() pure;	virtual void Deinit() pure;	virtual void Update(const fp32 delta) pure;};class TestScene : public Scene{public:	virtual void Init()	{			}		virtual void Deinit()	{			}		virtual void Update(const fp32 delta)	{			}};class App : public zahu::IBasicApp{private:	StaticFont fnt, fnt_cp;	Time::Timer timer;	Array<Scene*> m_Scenes;	int x;	fp32 r, g, b, a;	int offset_t, height;		Texture cp_tex;	float cp_width;	float cp_hight;	float cp_angle;	float cp_y, cp_x;		float cp_possy[CP_MAX+1]; // lol	// starfield	struct s_star {		float x,y,a,s;	};	s_star sf_stars[SF_MAX];		// music	/*char music[42069];	FMUSIC_MODULE *m;*/	public:	App() : fnt(), fnt_cp(), timer() { x = 0; };	void Setup(char *filename)	{		glShadeModel(GL_SMOOTH);		glEnable(GL_BLEND);		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);		glEnable(GL_DEPTH_TEST);		glDepthFunc(GL_LEQUAL);		glMatrixMode(GL_PROJECTION);		glLoadIdentity();		glOrtho(0, 800, 600, 0, -1, 1);		glViewport(0, 0, m_width, m_height);		glClearColor(0.f, 0.f, 0.f, 1.f);		glMatrixMode(GL_MODELVIEW);		glLoadIdentity();		Input::SetStickyKeys(true);		Input::SetKeyRepeat(true);		Input::HandleSystemKeys(true);		if(!fnt.LoadFont("fonts/retro.fnt"))		{			LOGERROR("Failed to load font");			Terminate();			return;		}				if(!fnt_cp.LoadFont("fonts/retro01.fnt"))		{			LOGERROR("Failed to load retro01 font");			Terminate();			return;		}				fnt_cp.Set("COCK!!!");		fnt.Set("fags:\n jonte\n sweetfish\n acura\n {LOL ? erland : 3==D}");		r = jda_rand_fp32();		g = jda_rand_fp32();		b = jda_rand_fp32();		a = jda_rand_fp32();		offset_t = jda_rand_int32() % 200;		height   = 600-offset_t;				// sinuskuk stuff:		cp_width = 5.0f;		cp_hight = 160.0f;		cp_angle = 0.0f;		cp_y = m_height/2-cp_hight/2;		cp_x = m_width;//+(cp_width*CP_MAX);				for (int i = 0; i < CP_MAX+1; i++)		{			cp_possy[i] = cp_y;		}				// starfieldshits		for (int i = 0; i < SF_MAX; i++)		{		 	GenerateStar(&sf_stars[i]);			sf_stars[i].x = jda_rand_fp32()*m_width;		}				if(!cp_tex.Load("data/cock.png"))		{			LOGERROR("Failed to load cock texture, terminating.");			Terminate();			return;		}				/*		 * init fmod		 *		if (FSOUND_Init( 44100,0 ) == 0) {			LOGERROR("Unable to initialize minifmod." );			Terminate();			return;		}				FILE *f = fopen("racers - green flag.xm", "rb");		fread(music, sizeof(music), 1, f);		fclose(f);				FMUSIC_LoadSong(music, sizeof(music), NULL);		FMUSIC_PlaySong(m);*/			}		virtual void RenderStar(float x, float y, float s, float a)	{		glBegin(GL_QUADS);			glColor3f(jda_abs(sin(a)), jda_abs(sin(a+3.14f)), jda_abs(sin(a-1.0f)));			glVertex2f(x,y);			glVertex2f(x+s,y);			glVertex2f(x+s,y+s);			glVertex2f(x,y+s);		glEnd();	}		virtual void GenerateStar(s_star *s)	{		s->s = 1.0f + jda_rand_fp32()*2.0f;		s->a = jda_rand_fp32()*3.14f;		s->y = jda_rand_fp32()*m_height;		s->x = m_width + s->s;	}	virtual void Update(const fp32 delta)	{		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		glLoadIdentity();		glDisable(GL_TEXTURE_2D);		// THE SINUSKUK! aka Snake 3.0		if (timer.Diff() > 0.01f)		{				cp_angle+=0.1f;			cp_possy[0] = sin(cp_angle)*70.0f;						// fix position for every other piece of the huge awesome cock			for (int i = CP_MAX; i > 0; i--)			{				cp_possy[i] = (cp_possy[i-1])*0.96f;			}						//if (cp_x > m_width) cp_x-= cp_x / 64.0f;			if (cp_x > m_width - ((CP_MAX-1)*cp_width)) cp_x = cp_x - (m_width - cp_x*0.1f) / 256.0f;						// starfield fucks			for (int i = 0; i < SF_MAX; i++)			{				sf_stars[i].x -= 1.2 * sf_stars[i].s;				sf_stars[i].a += 1.0f;				if (sf_stars[i].x + sf_stars[i].s < 0) GenerateStar(&sf_stars[i]);			}						timer.Reset();		}				/*		 * render starfield		 *		 */		for (int i = 0; i < SF_MAX; i++)		{			RenderStar(sf_stars[i].x, sf_stars[i].y, sf_stars[i].s, sf_stars[i].a);		}					/*		 * render the cock!		 *		 */		glEnable(GL_TEXTURE_2D);		cp_tex.Bind();		glBegin(GL_QUADS);			glColor3f(jda_abs(sin(cp_angle)), 0.8f, 0.8f);			for (int i = 1; i < CP_MAX; i++)			{				glTexCoord2d((0.999f / CP_MAX)*i,0);				glVertex2f(cp_x + (float)i*cp_width,          cp_possy[i-1] + cp_y);								glTexCoord2d((0.999f / CP_MAX)*i + (0.999f / CP_MAX),0);				glVertex2f(cp_x + (float)i*cp_width+cp_width, cp_possy[i] + cp_y);								glTexCoord2d((0.999f / CP_MAX)*i + (0.999f / CP_MAX),1);				glVertex2f(cp_x + (float)i*cp_width+cp_width, cp_possy[i] + cp_hight + cp_y);								glTexCoord2d((0.999f / CP_MAX)*i,1);				glVertex2f(cp_x + (float)i*cp_width,          cp_possy[i-1] + cp_hight + cp_y);			}					glEnd();				timer.Tick();	}	virtual void HandleInput()	{		int k = Input::GetLastKey();		if (k == Input::ESC)			Terminate();					Input::ClearLastKey();	}		virtual ~App()	{		//FMUSIC_StopSong(m);		//FMUSIC_FreeSong(m);	}};int main(int argc, char **argv)//int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int Cmd ){	App a;	if (!a.Init(800, 600, 32, FLAG_NO_RESIZE | FLAG_VSYNC))		return false;	a.SetTitle("test app");	a.Setup("");	return a.Run();	return 0;}