Example #1
0
void	OglText	( Display display, char *string, float x, float y, double dir ) {
  
  register OglParams	*params = (OglParams *) display->parameters;
  double c, s;
  
  glprintf( (int) x, (int) y, ogl_font_height, "%s\n", string );
  if ( display->cache_active ) {
    
    DisplayCacheItem *item;
    item = DisplayInsertCacheItem( display );
	item->token = text_token;
    item->param.text.x = x;
    item->param.text.y = y;
    item->param.text.dir = dir;
    item->param.text.string = _strdup( string );
    
  }
  

  if ( params->cpy ) {
    c = cos( dir );
    s = sin( dir );
    fprintf( params->cpy, "[%.2f %.2f %.2f %.2f %.2f %.2f] e\n", 
      c, s, - s, c, ToAiX( x ), ToAiY( y ) );
    fprintf( params->cpy, "(%s ) t\nT\n", string );
  }
}
Example #2
0
File: 21.c Project: manish05/TCR
int drawglscene() {
  int i,j;
  /* remember: positive x is right, positive y is up, positive z is out of the screen */
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /* clear screen and depth buffer */
  glBindTexture(GL_TEXTURE_2D,texture[0]);
  glColor3f(1,.5,1);
  glprintf(207,24,0,"GRID CRAZY");
  glColor3f(1,1,0);
  glprintf(20,20,1,"Level:%2d",level2);
  glprintf(20,40,1,"Stage:%2d",stage);
  if(gameover) {
    glColor3ub(rand()%255,rand()%255,rand()%255);
    glprintf(472,20,1,"GAME OVER");
    glprintf(456,40,1,"PRESS SPACE");
  }
  /* draw n copies of player lives */
  for(i=0;i<lives-1;i++) {
    glLoadIdentity();
    glTranslatef(490+i*40,40,0);
    glRotatef(-player.spin,0,0,1);
    glColor3f(0,1,0);
    glBegin(GL_LINES);
      glVertex2d(-5,-5);
      glVertex2d(5,5);
      glVertex2d(5,-5);
      glVertex2d(-5,5);
    glEnd();
    glRotatef(-player.spin*0.5,0,0,1);
    glColor3f(0,.75,0);
    glBegin(GL_LINES);
      glVertex2d(-7,0);
      glVertex2d(7,0);
      glVertex2d(0,-7);
      glVertex2d(0,7);
    glEnd();
  }
  filled=1;
  glLineWidth(2);
  glDisable(GL_LINE_SMOOTH);
  glLoadIdentity();
  for(i=0;i<11;i++) for(j=0;j<11;j++) {
    if(hline[i][j]) glColor3f(1,1,1);
    else glColor3f(0,.5,1);
    if(i<10) {
      if(!hline[i][j]) filled=0;
      glBegin(GL_LINES);
        glVertex2d(20+i*60,70+j*40);
        glVertex2d(80+i*60,70+j*40);
      glEnd();
    }
    if(vline[i][j]) glColor3f(1,1,1);
    else glColor3f(0,.5,1);
    if(j<10) {
      if(!vline[i][j]) filled=0;
      glBegin(GL_LINES);
        glVertex2d(20+i*60,70+j*40);
        glVertex2d(20+i*60,110+j*40);
      glEnd();
    }
    glEnable(GL_TEXTURE_2D);
    glColor3f(1,1,1);
    glBindTexture(GL_TEXTURE_2D,texture[1]);
    if(i<10 && j<10) {
      if(hline[i][j]&&hline[i][j+1]&&vline[i+1][j]&&vline[i][j]) {
        glBegin(GL_QUADS);
          glTexCoord2f(i/10.0+.1,1-j/10.0);
          glVertex2d(79+i*60,71+j*40);
          glTexCoord2f(i/10.0,1-j/10.0);
          glVertex2d(21+i*60,71+j*40);
          glTexCoord2f(i/10.0,1-j/10.0+0.1);
          glVertex2f(21+i*60,109+j*40);
          glTexCoord2f(i/10.0+0.1,1-j/10.0+0.1);
          glVertex2f(79+i*60,109+j*40);
        glEnd();
      }
    }
    glDisable(GL_TEXTURE_2D);
  }
  glLineWidth(1);
  if(anti) glEnable(GL_LINE_SMOOTH);
  if(hourglass.fx==1) {
    glLoadIdentity(),
    glTranslatef(20+hourglass.x*60,70+hourglass.y*40,0);
    glRotatef(hourglass.spin,0,0,1);
    glColor3ub(rand()%255,rand()%255,rand()%255 );
    glBegin(GL_LINES);
      glVertex2d(-5,-5);
      glVertex2d(5,5);
      glVertex2d(5,-5);
      glVertex2d(-5,5);
      glVertex2d(-5,5);
      glVertex2d(5,5);
      glVertex2d(-5,-5);
      glVertex2d(5,-5);
    glEnd();
  }
  glLoadIdentity();
  glTranslatef(player.fx+20,player.fy+70,0);
  glRotatef(player.spin,0,0,1);
  glColor3f(0,1,0);
  glBegin(GL_LINES);
    glVertex2d(-5,-5);
    glVertex2d(5,5);
    glVertex2d(5,-5);
    glVertex2d(-5,5);
  glEnd();
  glRotatef(player.spin*.5,0,0,1);
  glColor3f(0,.75,0);
  glBegin(GL_LINES);
    glVertex2d(-7,0);
    glVertex2d(7,0);
    glVertex2d(0,-7);
    glVertex2d(0,7);
  glEnd();
  for(i=0;i<stage*level;i++) {
    glLoadIdentity();
    glTranslatef(enemy[i].fx+20,enemy[i].fy+70,0);
    glColor3f(1,.5,.5);
    glBegin(GL_LINES);
      glVertex2d(0,-7);
      glVertex2d(-7,0);
      glVertex2d(-7,0);
      glVertex2d(0,7);
      glVertex2d(0,7);
      glVertex2d(7,0);
      glVertex2d(7,0);
      glVertex2d(0,-7);
    glEnd();
    glRotatef(enemy[i].spin,0,0,1);
    glColor3f(1,0,0);
    glBegin(GL_LINES);
      glVertex2d(-7,-7);
      glVertex2d(7,7);
      glVertex2d(-7,7);
      glVertex2d(7,-7);
    glEnd();
  }
  SDL_GL_SwapBuffers();                     /* show our changes! needed when double buffering is on */
  return 1;
}
Example #3
0
// Draw the comment
void COMMENT::draw(float ypos) {
	// Set the color and draw the string
	glColor4f(comment_colors[color][0],comment_colors[color][1],comment_colors[color][2], alpha);
	glprintf(font1, 0, pos, ypos, -25, text);
}
Example #4
0
// Draw the menu
void draw_menu(int menu_id, int menu_item, int place, float fade, HISCORE_LIST *list) {
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
	//glClear(GL_DEPTH_BUFFER_BIT);

	// Set up the viewport
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(30.0f, 1.333333f, 1, 100);
	glTranslatef(0,0,-32);

	// Draw the background
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	BIND_TEXTURE(menu_bg);
	glDepthMask(GL_FALSE);
	float bx = bx_roll;
	float by = by_roll;
	glBegin(GL_TRIANGLE_STRIP);
		glColor3f(.1f,1,1);
		glTexCoord2f(-bx + 1,-by + 1); glVertex3f(14, 14, -2);
		glTexCoord2f(-bx + 0,-by + 1); glVertex3f(-14, 14, -2);
		glColor3f(0,0.4f,0.7f);
		glTexCoord2f(-bx + 1,-by + 0); glVertex3f(14, -14, -2);
		glTexCoord2f(-bx + 0,-by + 0); glVertex3f(-14, -14, -2);
	glEnd();
	float rot = -5.0f;
	glEnable(GL_BLEND);
	for(int f=0; f<5; f++) {
		glRotatef(rot * SIN(back_anim), 0,0,1);
		glBegin(GL_TRIANGLE_STRIP);
			glColor4f(0.1f,1,1,.25f);
			glTexCoord2f(-bx + 1,-by + 1); glVertex3f(14, 14, -2);
			glTexCoord2f(-bx + 0,-by + 1); glVertex3f(-14, 14, -2);
			glColor4f(0,0.4f,0.7f,.25f);
			glTexCoord2f(-bx + 1,-by + 0); glVertex3f(14, -14, -2);
			glTexCoord2f(-bx + 0,-by + 0); glVertex3f(-14, -14, -2);
		glEnd();
		rot += (1.0f * COS(back_anim));
	}

	glDepthMask(GL_TRUE);


	// Begin font drawing
	begin_fonts();
	glLoadIdentity();

	// Draw the logo
	glEnable(GL_BLEND);
	BIND_TEXTURE(logo_tex);
	glPushMatrix();
	glTranslatef(0,4.5f,-13);
	glRotatef(20.0f * COS(back_anim), 1,0,0);
	glColor3f(1,1,1);
	glBegin(GL_TRIANGLE_STRIP);
		glTexCoord2f(1,1); glVertex3f( 4, .5f, 0);
		glTexCoord2f(0,1); glVertex3f(-4, .5f, 0);
		glTexCoord2f(1,0); glVertex3f( 4,-.5f, 0);
		glTexCoord2f(0,0); glVertex3f(-4,-.5f, 0);
	glEnd();
	glPopMatrix();


	// Draw the hiscores/credits
	if(menu_id == MENU_ID_MAIN || menu_id == MENU_ID_START) {
		if(mid_state == 1)
			hiscore_1.draw(-1, mid_fade_amount);
		else if(mid_state == 2)
			hiscore_2.draw(-1, mid_fade_amount);
		else if(mid_state == 3)
			draw_credits(mid_fade_amount);
	}

	// Draw the version number
	set_font_scale(0.3f, 0.3f);
	glColor4f(1,1,1,0.3f);
	glprintf(font1, 0, -7.0f, -5.3f, -13, VERSION);
	set_font_scale(1,1);


	// Draw the hilighted hiscore list if we're typing a name
	if(place != -1 && list != NULL)
		list->draw(place, 1.0f);


	// Draw the menuitem background stripe
	BIND_TEXTURE(0);
	glColor4f(0,0,0,0.1f);
	glPushMatrix();
	glTranslatef(0,-4.0f, -13);
	glBegin(GL_TRIANGLE_STRIP);
		glVertex3f(10,.57f,0);
		glVertex3f(-10,.57f,0);
		glVertex3f(10,-.57f,0);
		glVertex3f(-10,-.57f,0);
	glEnd();
	glPopMatrix();

	// Draw the menuitems
	if(menu_id == MENU_ID_MAIN) {
		// START
		if(menu_item == MENU_START)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		BIND_TEXTURE(button_tex);
		glPushMatrix();
		glTranslatef(-4.0f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,1); glVertex3f( 2, .5f, 0);
			glTexCoord2f(0,1); glVertex3f(-2, .5f, 0);
			glTexCoord2f(1,.75f); glVertex3f( 2,-.5f, 0);
			glTexCoord2f(0,.75f); glVertex3f(-2,-.5f, 0);
		glEnd();
		glPopMatrix();

		// OPTIONS
		if(menu_item == MENU_OPTIONS)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		glPushMatrix();
		glTranslatef(0, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,.75f); glVertex3f( 2, .5f, 0);
			glTexCoord2f(0,.75f); glVertex3f(-2, .5f, 0);
			glTexCoord2f(1,.5f); glVertex3f( 2,-.5f, 0);
			glTexCoord2f(0,.5f); glVertex3f(-2,-.5f, 0);
		glEnd();
		glPopMatrix();


		// EXIT
		if(menu_item == MENU_EXIT)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		glPushMatrix();
		glTranslatef(4.0f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,.5f); glVertex3f( 2, .5f, 0);
			glTexCoord2f(0,.5f); glVertex3f(-2, .5f, 0);
			glTexCoord2f(1,.25f); glVertex3f( 2,-.5f, 0);
			glTexCoord2f(0,.25f); glVertex3f(-2,-.5f, 0);
		glEnd();
		glPopMatrix();
	}
	else if(menu_id == MENU_ID_START) {
		// SINGLE PLAYER
		if(menu_item == MENU_SINGLEPLAY)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		BIND_TEXTURE(button_tex2);
		glPushMatrix();
		glTranslatef(-2.0f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,1); glVertex3f( 2, .85f, 0);
			glTexCoord2f(0,1); glVertex3f(-2, .85f, 0);
			glTexCoord2f(1,.5f); glVertex3f( 2,-.85f, 0);
			glTexCoord2f(0,.5f); glVertex3f(-2,-.85f, 0);
		glEnd();
		glPopMatrix();

		// TWO PLAYERS
		if(menu_item == MENU_MULTIPLAY)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		glPushMatrix();
		glTranslatef(2.0f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,.5f); glVertex3f( 2, .85f, 0);
			glTexCoord2f(0,.5f); glVertex3f(-2, .85f, 0);
			glTexCoord2f(1,0); glVertex3f( 2,-.85f, 0);
			glTexCoord2f(0,0); glVertex3f(-2,-.85f, 0);
		glEnd();
		glPopMatrix();
	}
	else if(menu_id == MENU_ID_OPTIONS) {
		int who = whose_keys;

		// Settings for ...
		set_font_scale(0.6f, 0.5f);
		if(menu_item == MENU_WHOSEKEYS)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, 3.0f, -13, "Settings for:        %s", (whose_keys == 0) ? "PLAYER ONE" : "PLAYER TWO");

		// Moving style
		if(menu_item == MENU_MOVSTYLE)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, 2.5f, -13, "Moving style:        %s", (config.moving_style[who] == 1) ? "RELATIVE" : "ABSOLUTE");

		// Key up
		if(menu_item == MENU_KEYUP)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		if(config.moving_style[who] == 1)
			glprintf(font1, 0, -5.0f, 2.0f, -13, "Move forward:        %s", key_name(config.key_up[who]));
		else
			glprintf(font1, 0, -5.0f, 2.0f, -13, "Move up:             %s", key_name(config.key_up[who]));

		// Key down
		if(menu_item == MENU_KEYDOWN)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		if(config.moving_style[who] == 1)
			glprintf(font1, 0, -5.0f, 1.5f, -13, "Turn around:         %s", key_name(config.key_down[who]));
		else
			glprintf(font1, 0, -5.0f, 1.5f, -13, "Move down:           %s", key_name(config.key_down[who]));

		// Key left
		if(menu_item == MENU_KEYLEFT)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		if(config.moving_style[who] == 1)
			glprintf(font1, 0, -5.0f, 1.0f, -13, "Turn left:           %s", key_name(config.key_left[who]));
		else
			glprintf(font1, 0, -5.0f, 1.0f, -13, "Move left:           %s", key_name(config.key_left[who]));

		// Key right
		if(menu_item == MENU_KEYRIGHT)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		if(config.moving_style[who] == 1)
			glprintf(font1, 0, -5.0f, 0.5f, -13, "Turn right:          %s", key_name(config.key_right[who]));
		else
			glprintf(font1, 0, -5.0f, 0.5f, -13, "Move right:          %s", key_name(config.key_right[who]));

		// Key bomb
		if(menu_item == MENU_KEYBOMB)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, 0.0f, -13, "Throw a bomb:        %s", key_name(config.key_shoot[who]));

		// Key special
		if(menu_item == MENU_KEYSPECIAL)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, -0.5f, -13, "Use a special:       %s", key_name(config.key_special[who]));

		// Sound volume slider
		if(menu_item == MENU_SOUNDVOL)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, -1.5f, -13, "Sound volume:");
		glPushMatrix();
		glTranslatef(2.0f, -1.5f, -13);
		glColor3f(0,0,0.5f);
		BIND_TEXTURE(0);
		glBegin(GL_TRIANGLE_STRIP);
			glColor3f(0,0,0);
			glVertex2f(3, 0.55f);
			glVertex2f(0, 0.55f);
			glColor3f(0,0,0.5f);
			glVertex2f(3, 0.0f);
			glVertex2f(0, 0.0f);
		glEnd();
		glColor3f(0.5f,0.5f,1);
		float vol = (float)config.sound_vol / 255.0f;
		glBegin(GL_TRIANGLE_STRIP);
			glColor3f(0.5f,0.5f,1);
			glVertex2f(2.95f * vol, 0.50f);
			glVertex2f(0.05f, 0.50f);
			glColor3f(0.25f,0.25f,0.5f);
			glVertex2f(2.95f * vol, 0.05f);
			glVertex2f(0.05f, 0.05f);
		glEnd();
		glPopMatrix();

		// Music volume slider
		if(menu_item == MENU_MUSICVOL)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, -2.0f, -13, "Music volume:");
		glPushMatrix();
		glTranslatef(2.0f, -2.0f, -13);
		BIND_TEXTURE(0);
		glBegin(GL_TRIANGLE_STRIP);
			glColor3f(0,0,0);
			glVertex2f(3, 0.55f);
			glVertex2f(0, 0.55f);
			glColor3f(0,0,0.5f);
			glVertex2f(3, 0.0f);
			glVertex2f(0, 0.0f);
		glEnd();
		vol = (float)config.music_vol / 255.0f;
		glBegin(GL_TRIANGLE_STRIP);
			glColor3f(0.5f,0.5f,1);
			glVertex2f(2.95f * vol, 0.50f);
			glVertex2f(0.05f, 0.50f);
			glColor3f(0.25f,0.25f,0.5f);
			glVertex2f(2.95f * vol, 0.05f);
			glVertex2f(0.05f, 0.05f);
		glEnd();
		glPopMatrix();


		// Toggle perspective mode
		if(menu_item == MENU_PERSPECTIVE)
			glColor3fv(col_selected2);
		else
			glColor3fv(col_normal2);
		glprintf(font1, 0, -5.0f, -3.0f, -13, "Perspective mode:    %s", (config.perspective_mode) ? "ON" : "OFF");


		set_font_scale(1,1);

		// OK
		if(menu_item == MENU_OK)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		BIND_TEXTURE(button_tex);
		glPushMatrix();
		glTranslatef(-2.25f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(.25f,.25f); glVertex3f( .5f, .5f, 0);
			glTexCoord2f(0,.25f); glVertex3f(-.5f, .5f, 0);
			glTexCoord2f(.25f,0); glVertex3f( .5f,-.5f, 0);
			glTexCoord2f(0,0); glVertex3f(-.5f,-.5f, 0);
		glEnd();
		glPopMatrix();

		// CANCEL
		if(menu_item == MENU_CANCEL)
			glColor3fv(col_selected);
		else
			glColor3fv(col_normal);
		glPushMatrix();
		glTranslatef(2.25f, -4.0f, -13);
		glRotatef(20.0f * SIN(back_anim), 1,0,0);
		glBegin(GL_TRIANGLE_STRIP);
			glTexCoord2f(1,.25f); glVertex3f( 1.5f, .5f, 0);
			glTexCoord2f(.25f,.25f); glVertex3f(-1.5f, .5f, 0);
			glTexCoord2f(1,0); glVertex3f( 1.5f,-.5f, 0);
			glTexCoord2f(.25f,0); glVertex3f(-1.5f,-.5f, 0);
		glEnd();
		glPopMatrix();
	}

	// Draw the fade
	if(fade != 0.0f) {
		glLoadIdentity();
		BIND_TEXTURE(0);
		glColor4f(0,0,0,fade_amount);
		glBegin(GL_TRIANGLE_STRIP);
			glVertex3f(4, 3, -2);
			glVertex3f(-4, 3, -2);
			glVertex3f(4,-3,-2);
			glVertex3f(-4,-3,-2);
		glEnd();
	}

	end_fonts();
}