void initTexture(gDisplay *d) {
  GLint min_filter;
  char texname[120];

  int i, j;
  update_splash(splash, 0.16, "init texture");
  if(game->settings->use_mipmaps) {
    if(game->settings->mipmap_filter == TRILINEAR)
      min_filter = GL_LINEAR_MIPMAP_LINEAR;
    else
      min_filter = GL_LINEAR_MIPMAP_NEAREST;
  } else
    min_filter = GL_LINEAR;

  checkGLError("texture.c initTexture - start");
  /* todo: move that somewhere else */
  glGenTextures(game_textures, d->textures);
  checkGLError("texture.c initTexture - creating textures");
  for(i = 0; i < n_textures; i++) {
    for( j = 0; j < textures[i].count; j++) {
      glBindTexture(GL_TEXTURE_2D, d->textures[ textures[i].id + j ]);
      /* todo: snprintf would be safer, but win32 doesn't have it */
      if(textures[i].count == 1) {
	sprintf(texname, "%s%s", textures[i].name, TEX_SUFFIX);
      } else {
	sprintf(texname, "%s%d%s", textures[i].name, j, TEX_SUFFIX);
      }
      
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, textures[i].wrap_s);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, textures[i].wrap_t);
      
      loadTexture(texname, textures[i].type);
      checkGLError("texture.c initTextures");
      
      update_splash(splash, 0.16+i/1000, texname);
    }
  }
}
Exemple #2
0
void update(enum e_game_state *game_state, int *end)
{
    static SDL_Event event;
    SDL_PollEvent(&event);

    switch (*game_state)
    {
        case SPLASH:
            update_splash(event, game_state);
            break;
        case MENU:
            update_menu(event, game_state, end);
            break;
        case GAME:
            update_game(event, game_state, end);
            break;
        case PAUSE:
            update_pause(event, game_state);
            break;
        default:
            break;
    }
}
Exemple #3
0
void initGameStructures() { /* called only once */
  /* default art names */
  char *path;
  /* init game screen */
  /* init players. for each player: */
  /*   init model */
  /*   init display */
  /*   init ai */
  /*   create data */
  /*     create trails */
  /*   create camera */

  gDisplay *d;
  int i;
  /* int onScreen; */
  /* Data *data; */
  /* Camera *c; */
  /* Model *m; */
  AI *ai;
  Player *p;

  game->winner = -1;
  game->screen = (gDisplay*) malloc(sizeof(gDisplay));
  d = game->screen;
  d->h = game->settings->height; d->w = game->settings->width;
  d->vp_x = 0; d->vp_y = 0;
  d->vp_w = d->w; d->vp_h = d->h;
  d->blending = 1;
  d->fog = 0;
  d->shademodel = GL_SMOOTH;
  d->wall = 1;
  d->onScreen = -1;
  d->textures = (unsigned int*) malloc(game_textures * sizeof(unsigned int));
  


  //Setup display here
  setupDisplay(game->screen);
  
  game->players = PLAYERS;
  game->player = (Player *) malloc(MAX_PLAYERS * sizeof(Player));
  for(i = 0; i < game->players; i++) {
    p = (game->player + i);
    p->model = (Model*) malloc(sizeof(Model));
    p->display = (gDisplay*) malloc(sizeof(gDisplay));
    p->ai = (AI*) malloc(sizeof(AI));
    p->data = (Data*) malloc(sizeof(Data));
    p->data->trails = (line*) malloc(MAX_TRAIL * sizeof(line));
    p->camera = (Camera*) malloc(sizeof(Camera));
    p->camera->type = (CameraType*) malloc(sizeof(CameraType));

    /* init model & display & ai */
    update_splash(splash, 0.3+i*.1, "init model");
    initModel(p, i);

    ai = p->ai;
    if(game->settings->screenSaver) {
      ai->active = AI_COMPUTER;
    } else {
      switch(i) {
      case 0: ai->active = game->settings->ai_player1; break;
      case 1: ai->active = game->settings->ai_player2; break;
      case 2: ai->active = game->settings->ai_player3; break;
      case 3: ai->active = game->settings->ai_player4; break;
      default:
	fprintf(stderr, "player index #%d not caught!\n", i);
	ai->active = AI_NONE;
      }
    }
    ai->tdiff = 0;
    ai->moves = 0;
    ai->danger = 0;
    ai->lastx = 0;
    ai->lasty = 0;
  }

  /* load recognizer model */
  update_splash(splash, 0.7, "loading recognizer");
  path = getFullPath("recognizer.obj");
  if(path != NULL)
    // recognizer = loadModel(path, RECOGNIZER_HEIGHT, 0);
    // recognizer = loadModel(path, 60, MODEL_NORMALIZE | MODEL_INVERT_NORMALS);
    recognizer = loadModel(path, 60, MODEL_NORMALIZE );
  else {
    printf("fatal: could not load recognizer - exiting...\n");
    exit(1);
  }
  free(path);


  changeDisplay();

  game2->events.next = NULL;
  game2->mode = GAME_SINGLE;
}