Пример #1
0
static void draw(void)
{
	drawBackground(background);
	
	drawStars();
	
	blit(earthTexture, earth.x, earth.y, 1);
	
	drawFighters();
	
	drawEffects();
	
	blit(logo, SCREEN_WIDTH / 2, 50, 1);
	
	blit(pandoranWar, SCREEN_WIDTH / 2, 110, 1);
	
	drawText(10, SCREEN_HEIGHT - 25, 14, TA_LEFT, colors.white, "Copyright Parallel Realities, 2015-2016");
	drawText(SCREEN_WIDTH - 10, SCREEN_HEIGHT - 25, 14, TA_RIGHT, colors.white, "Version %.2f.%d", VERSION, REVISION);
	
	switch (show)
	{
		case SHOW_TITLE:
			drawWidgets("title");
			break;
			
		case SHOW_STATS:
			drawStats();
			break;
			
		case SHOW_OPTIONS:
			drawOptions();
			break;
	}
}
Пример #2
0
/* **********************************
@ Implemented by Daniel Santos & Hung Q Nguyen
@ Note:
* ***********************************/
void Universe::Universe::run() {
  while (window_.isOpen() && elapsedTime_ < uni_total_times) {
    sf::Event event;
    while (window_.pollEvent(event)) {
      switch (event.type) {
        case sf::Event::Closed:
          window_.close();
          break;
        case sf::Event::KeyPressed:
          shipMove(event.key);
          break;
        default:
          break;
      }
    }
    window_.clear();
    // Update and draw
    checkClickOnSprite();
    updateDialog(selectedPlanet_);
    updateUniverse();
    window_.draw(dialogBox_);
    window_.draw(dialogText_);
    window_.draw(textTime_);
    drawStars();
    window_.draw(*ship_);
    window_.display();

    // Update current
    updateTime(step_time);
  }
  printState();
}
Пример #3
0
bool drawGame()
{
    arduboy.clear();
    drawScore();
    drawLives();
    drawEnemies();
    if(player.alive)
        drawPlayer();
    drawSupply();
    drawBullets();
    drawStars();
    bool finished = drawExplosions();
    arduboy.display();
    return finished;
}
Пример #4
0
void starBurst::draw(float lerp, HyperspaceSaverSettings *inSettings){
	drawStars(inSettings);
	
	size += inSettings->frameTime * 0.5f;
	if(size >= 3.0f)
		return;

	// draw flare
	float brightness = 1.0f - (size * 0.333333f);
	if(brightness > 0.0f){
		float p[3];
		p[0] = pos[0];
		p[1] = pos[1];
		p[2] = pos[2];
		flare(p, 1.0f, 1.0f, 1.0f, brightness, inSettings);
	}

	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glTranslatef(pos[0], pos[1], pos[2]);
	glScalef(size, size, size);

	// draw sphere
	glDisable(GL_TEXTURE_2D);
	glEnable(GL_TEXTURE_CUBE_MAP_ARB);
	glActiveTextureARB(GL_TEXTURE2_ARB);
	glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, inSettings->nebulatex);
	glActiveTextureARB(GL_TEXTURE1_ARB);
	glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, inSettings->theWNCM->texture[(inSettings->whichTexture + 1) % inSettings->numAnimTexFrames]);
	glActiveTextureARB(GL_TEXTURE0_ARB);
	glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, inSettings->theWNCM->texture[inSettings->whichTexture]);
	glUseProgramObjectARB(gooProgram);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE);
	glEnable(GL_BLEND);
	glColor4f(brightness, brightness, brightness, lerp);
	glCallList(call_list);

	glDisable(GL_TEXTURE_CUBE_MAP_ARB);
	glUseProgramObjectARB(0);

	glPopMatrix();
}
Пример #5
0
/* draw display */
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT);

	float center[2];
	center[0]=600;
	center[1]=400;

	drawGreenTriangles();
	drawRedTriangles();
	glColor3f(1,1,1);
	drawCircle(center, 150);
	drawStars(center);
	drawFlageOutline();
	burundi();


	glFlush();
}
Пример #6
0
static void draw(void)
{
	drawBackground(background);

	blit(planetTexture, planet.x, planet.y, 1);

	drawStars();
	
	drawText(SCREEN_WIDTH / 2, 40, 28, TA_CENTER, colors.white, CHALLENGES_TEXT);
	drawText(SCREEN_WIDTH / 2, 83, 16, TA_CENTER, colors.lightGrey, COMPLETED_TEXT, game.completedChallenges, game.totalChallenges);
	drawText(SCREEN_WIDTH / 2, 110, 16, TA_CENTER, colors.lightGrey, PAGE_TEXT, page + 1, (int)maxPages);

	drawChallenges();

	switch (show)
	{
		case SHOW_CHALLENGES:
			drawWidgets("challenges");
			break;

		case SHOW_MENU:
			drawMenu();
			break;

		case SHOW_STATS:
			drawStats();
			break;
			
		case SHOW_TROPHIES:
			drawTrophies();
			break;

		case SHOW_OPTIONS:
			drawOptions();
			break;
			
		case SHOW_FIGHTER_DB:
			drawFighterDatabase();
			break;
	}
}
Пример #7
0
void starBurst::draw(HyperspaceSaverSettings *inSettings){
	drawStars(inSettings);
	
	size += inSettings->frameTime * 0.5f;
	if(size >= 3.0f)
		return;

	// draw flare
	float brightness = 1.0f - (size * 0.333333f);
	if(brightness > 0.0f){
		float p[3];
		p[0] = pos[0];
		p[1] = pos[1];
		p[2] = pos[2];
		flare(p, 1.0f, 1.0f, 1.0f, brightness, inSettings);
	}

	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glTranslatef(pos[0], pos[1], pos[2]);
	glScalef(size, size, size);

	// draw sphere
	glBindTexture(GL_TEXTURE_2D, inSettings->nebulatex);
	glEnable(GL_TEXTURE_2D);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);

	glBlendFunc(GL_SRC_ALPHA, GL_ONE);
	glEnable(GL_BLEND);
	glColor4f(brightness, brightness, brightness, 1.0f);
	glCallList(call_list);

	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);

	glPopMatrix();
}
Пример #8
0
void drawScene(void) {
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
	glLoadIdentity();
	gluLookAt(camera.x, camera.y, camera.z, 0, 0, 0, 0, 1, 0);
	glMatrixMode(GL_MODELVIEW);

	drawStars();

	glLightfv(GL_LIGHT0, GL_AMBIENT, light1_ambient);
	glLightfv(GL_LIGHT0, GL_SPECULAR, light1_specular);

	// Draw the sun
	glLightfv(GL_LIGHT0, GL_POSITION, spotPos);
	glDisable(GL_LIGHTING);
	glPushMatrix();
		glColor3f(1, 1, 0.2);
		glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, aMaterial);
		glutSolidSphere(2, 30, 30);
	glPopMatrix();
	glEnable(GL_LIGHTING);

	// Draw Mercury
	glColor3f(0.8, 0.4, 0.0);
	drawOrbit(3, 7);
	glPushMatrix();
		glRotatef(3, 1, 0, 0);
		glPushMatrix();
			glColor3f(0.8, 0.4, 0.0);
			glRotatef(t * 0.047, 0,1, 0);
			glTranslatef(0, 0, 7);
			drawString(0, 0, 0, "Mercury");
			glutSolidSphere(0.3, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Venus
	glColor3f(0.28, 0.46, 1.0);
	drawOrbit(9, 10);
	glPushMatrix();
		glRotatef(9,1, 0, 0);
		glPushMatrix();
			glColor3f(0.28, 0.46, 1.0);
			glRotatef(t * 0.035, 0, 1, 0);
			glTranslatef(0, 0, 10);
			drawString(0, 0, 0, "Venus");
			glutSolidSphere(0.7, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw The Earth
	glColor3f(0.15, 0.25, 0.54);
	drawOrbit(8, 13);
		glPushMatrix();
		glRotatef(8, 1, 0, 0);
		glPushMatrix();
			glColor3f(0.15, 0.25, 0.54);
			glRotatef(t * 0.029, 0, 1, 0);
			glTranslatef(0, 0, 13);
			drawString(0, 0, 0, "Earth");
			glutSolidSphere(0.7, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Mars
	glColor3f(1, 0.0, 0.0);
	drawOrbit(5, 16);
	glPushMatrix();
		glRotatef(5, 1, 0, 0);
		glPushMatrix();
			glColor3f(1, 0.0, 0.0);
			glRotatef(t * 0.024, 0, 1, 0);
			glTranslatef(0, 0, 16);
			drawString(0, 0, 0, "Mars");
			glutSolidSphere(0.6, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Jupiter
	glColor3f(0.8, 0.58, 0.047);
	drawOrbit(8, 24);
	glPushMatrix();
		glRotatef(8, 1, 0, 0);
		glPushMatrix();
			glColor3f(0.8, 0.58, 0.047);
			glRotatef(t * 0.013, 0, 1, 0);
			glTranslatef(0, 0, 24);
			drawString(0, 0, 0, "Jupiter");
			glutSolidSphere(1.2, RES_PLANET,RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Saturn
	glColor3f(0.8, 0.58, 0.047);
	drawOrbit(5, 30);
	glPushMatrix();
		glRotatef(5, 1, 0, 0);
		glPushMatrix();
			glColor3f(0.6, 0.4, 0.030);
			glRotatef(t * 0.009, 0, 1, 0);
			glTranslatef(0, 0, 30);
			glRotatef(90, 1, 0.5, 0);
			glScalef(1, 1, 0.1);
			glutSolidTorus(0.6, 1.8, 5, 50);
		glPopMatrix();
		glPushMatrix();
			glColor3f(0.8, 0.58, 0.047);
			glRotatef(t * 0.009, 0, 1, 0);
			glTranslatef(0, 0, 30);
			drawString(0, 0, 0, "Saturn");
			glutSolidSphere(1, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Uranus
	glColor3f(0, 0.1, 1);
	drawOrbit(7, 40);
	glPushMatrix();
		glRotatef(7, 1, 0, 0);
		glPushMatrix();
			glColor3f(0, 0.1, 1);
			glRotatef(t * 0.006, 0, 1, 0);
			glTranslatef(0, 0, 40);
			glRotatef(3, 1, 0.5, 0);
			glScalef(1, 1, 0.1);
			glutSolidTorus(0.1, 1, 5, 50);
		glPopMatrix();
		glPushMatrix();
			glColor3f(0, 0.6, 0.8);
			glRotatef(t * 0.006, 0, 1, 0);
			glTranslatef(0, 0, 40);
			drawString(0, 0, 0, "Uranus");
			glutSolidSphere(0.7, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Draw Neptune
	glColor3f(0.0, 0.89, 0.93);
	drawOrbit(8, 48);
	glPushMatrix();
		glRotatef(8, 1, 0, 0);
		glPushMatrix();
			glColor3f(0.0, 0.89, 0.93);
			glRotatef(t * 0.005, 0, 1, 0);
			glTranslatef(0, 0, 48);
			drawString(0, 0, 0, "Neptune");
			glutSolidSphere(0.7, RES_PLANET, RES_PLANET);
		glPopMatrix();
	glPopMatrix();

	// Almost forgot, let's draw the Moon!
	glPushMatrix();
		glRotatef(8,1,0,0);
		glPushMatrix();
			glColor3f(0.7,0.8,0.8);
			glRotatef(t*0.029,0,1,0);
			glTranslatef(0,0,13);
			glPushMatrix();
				glRotatef(t*0.348,0,1,0);
				glTranslatef(0,0,1.3);
				glutSolidSphere(0.1,RES_PLANET,10);
			glPopMatrix();
   		glPopMatrix();
	glPopMatrix();

	//Sorry Pluto, you're not a planet anymore :(

	// Meteors
	drawMeteors();

	if (a < -500) {
		a = -20;
	}

	glutSwapBuffers();

}
Пример #9
0
static void drawScene() {
	++fps_counter;

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	const mn::gl::Camera &camera = *mn::gl::Camera::camera;
	const mn::gl::Vector<float> &eye = camera.getEye();

	{
		pushMatrix pm;

		camera.doRotate();
		drawStars();
		camera.doMove();

		glEnable(GL_DEPTH_TEST);
		glEnable(GL_CULL_FACE);
		glEnable(GL_LIGHTING);

		sun->draw(mn::gl::Camera::ticks, mn::gl::Vector<float>(0, 0, 0));

		glDisable(GL_LIGHTING);
		glDisable(GL_CULL_FACE);
		glDisable(GL_DEPTH_TEST);
	}

	{
		pushMatrix pm;

		glTranslatef(-0.4 * mn::gl::Camera::aspect(), -0.4, -1.2);
		camera.doRotate();

		glBegin(GL_LINES);
		glColor3f(1, 0, 0); glVertex3f(0, 0, 0); glVertex3f(0.05, 0, 0);
		glColor3f(0, 1, 0); glVertex3f(0, 0, 0); glVertex3f(0, 0.05, 0);
		glColor3f(0, 0, 1); glVertex3f(0, 0, 0); glVertex3f(0, 0, 0.05);
		glEnd();
	}

	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glOrtho(-mn::gl::Camera::aspect(), mn::gl::Camera::aspect(), -1,1, -1,1);
	glMatrixMode(GL_MODELVIEW);

	glColor3f(0, 0.5, 0);
	glBegin(GL_LINES);
	glVertex3f(-0.01,  0.01, 0); glVertex3f(-0.02,  0.02, 0);
	glVertex3f(-0.01, -0.01, 0); glVertex3f(-0.02, -0.02, 0);
	glVertex3f( 0.01, -0.01, 0); glVertex3f( 0.02, -0.02, 0);
	glVertex3f( 0.01,  0.01, 0); glVertex3f( 0.02,  0.02, 0);
	glEnd();

	glTranslatef(0.1-mn::gl::Camera::aspect(), 0.9, 0);
	glScalef(0.03, 0.03, 0.03);
	char buffer[1024];
	sprintf(buffer, "position = (%6.2f, %6.2f, %6.2f)\ndistance = %6.2f\nrotation = (%2.2f, %2.2f, %2.2f)\nfps = %3.1f\nspeed = %lu", eye.x, eye.y, eye.z, eye.length(), camera.getRotX() * MN_180_PI, camera.getRotY() * MN_180_PI, 0.0, fps, mn::gl::Camera::countTicks * mn::gl::Camera::tickIncrement);
	glColor3f(1, 1, 1);
	t3d::draw2D(std::string(buffer), -1, -1);

	glMatrixMode(GL_PROJECTION);
	glPopMatrix();

	glutSwapBuffers();
}
Пример #10
0
//--------------------------------------------------
void Skybox::render(bool activateShaders)
{
	Shader::disable();
	//configuration:
	float skySize = 30000.0f;
	float sunOrbit = 28000.0f;
	float orbitBias = 0.05f;
	float orbitRotation = 0.1f;
	int numberOfStars = 1000;

	//Rotate the sun ----------------------------------------
	Vector3f sunPosition = Vector3f(sunOrbit, 0.0f, 0.0f);

	Matrix3f m3 = Matrix3f::createRotationAroundAxis(0.0f, orbitRotation * 2.0f * (float)M_PI, 0.0f);
	Matrix3f m1 = Matrix3f::createRotationAroundAxis(0.0f, 0.0f, dayTime * 2.0f * (float)M_PI);
	Matrix3f m2 = Matrix3f::createRotationAroundAxis(orbitBias * 2.0f * (float)M_PI, 0.0f, 0.0f);

	sunPosition = m1 * sunPosition;
	sunPosition = m2 * sunPosition;
	sunPosition = m3 * sunPosition;

	//direction:
	sunDirection = sunPosition;
	sunDirection.normalize();

	//sky colors:
	Vector4f blue = Vector4f(0.2f, 0.4f, 0.8f, 1.0f);
	Vector4f white = Vector4f(0.52f, 0.63f, 0.87f, 1.0f);

	Vector4f orange = Vector4f(0.75f, 0.35f, 0.0f, 1.0f);
	Vector4f red = Vector4f(0.85f, 0.15f, 0.0f, 1.0f);

	Vector4f black = Vector4f(0.0f, 0.0f, 0.0f, 0.0f);

	//mix sky colors:
	Vector4f color1 = Vector4f(0.0f, 0.0f, 0.0f, 0.0f);
	Vector4f color2 = Vector4f(0.0f, 0.0f, 0.0f, 0.0f);
	float d = sunDirection.y;

	if (d >= 0.3f)
	{
		color1 = blue;
		color2 = white;
	}
	else
	{
		if (d >= 0.2f)
		{
			color1 = blue * (d - 0.2f) * 10.0f + orange * (1 - (d - 0.2f) * 10.0f);
			color2 = white * (d - 0.2f) * 10.0f + red * (1 - (d - 0.2f) * 10.0f);
		}
		else
		{
			color1 = orange * d * 5.0f + black * (1 - d * 5.0f);
			color2 = red * d * 5.0f  + black * (1 - d * 5.0f);
		}
	}

	//weapon (this is an easter egg)
	/*glPushMatrix();
	glLoadIdentity();
	glRotatef(20.0, 0, 0, 1);
	glRotatef(-20.0, 1, 0, 0);
	glTranslatef(20.0, 10.0, -50.0);
	weapon->showS();
	glPopMatrix();*/

	//draw everything ------------------------------------------
	glPushMatrix();
	glPushAttrib(GL_ENABLE_BIT);

	glDisable(GL_LIGHTING);
	glDisable(GL_TEXTURE_2D);
	glEnable(GL_POINT_SMOOTH);

	resetTranslation();
	drawStars(numberOfStars);
	drawSky(skySize, color1, color2);
	drawSun(sunPosition);

	//restore matrix and attributes
	glPopAttrib();
	glPopMatrix();
	Shader::useDefaultShader();
}