예제 #1
0
파일: bootstrap.c 프로젝트: pyrated/gamejam
void boot_init(int* argc, char** argv) {

  int error;

  fail_if(glfwInit() == false);

  // OpenGL version 3
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0);

  // No window resize
  glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, true);
  // 400% gameboy scale, 5 bit rgb with 1 bit alpha, 8 bit z buffer
  fail_if(glfwOpenWindow(160 * 4, 144 * 4, 5, 5, 5, 1, 8, 0, GLFW_WINDOW) == false);

  glfwSetWindowTitle("");

  glfwEnable(GLFW_AUTO_POLL_EVENTS); // Automatically poll input on swap
  glfwSwapInterval(1); // 0: vsync off, 1: vsync on 

  printf("Renderer: %s\n", glGetString(GL_RENDERER));
  printf("GL Version: %s\n", glGetString(GL_VERSION));
  printf("Using GLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));

  error = glewInit();

  if (error != GLEW_OK) {
    fprintf(stderr, "GLEW error: %s\n", glewGetErrorString(error));
  }

  printf("GL Extension Wrangler: %s\n", glewGetString(GLEW_VERSION));

  // Load audio
  fail_if(alutInit(argc, argv) == false);

  glClearColor(206.0/255.0, 230.0/255.0, 165.0/255.0, 1.0f);
  glEnable(GL_SCISSOR_TEST); // For geom culling
  
  // transparency
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  // z-buffer
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);

  // Set up perspective
  glOrtho(0, 160, 144, 0, -1.0, 1.0);
  glDepthRange(-1.0f, 1.0f);
  glViewport(0, 0, 160 * 4, 144 * 4);

  // This is where Ill put the logo thing
  unsigned logo = bitmap_load("bmp/logo.bmp");
  unsigned logo_vbo;
  float t0, t1, dt;
  float logo_x = 16, logo_y = -80;
  float logo_v[] = {
    0,     0, 0, 1.0 - 0,
    0,   128, 0, 1.0 - 1,
    128, 128, 1, 1.0 - 1,
    128,   0, 1, 1.0 - 0,
  };

  glGenBuffers(1, &logo_vbo);
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glBufferData(GL_ARRAY_BUFFER, sizeof(logo_v)*sizeof(float), logo_v, GL_STATIC_DRAW);
 
  Pipeline* logo_program = pipeline_new(
    shader_new(SHADER_VERTEX, "shader/logo.vert"),
    shader_new(SHADER_FRAGMENT, "shader/logo.frag"));

  pipeline_attribute(logo_program, "coord", 0);
  pipeline_attribute(logo_program, "st", 1);
  pipeline_uniform(logo_program, "pos", 0);
  pipeline_uniform(logo_program, "tex", 1);

  glUseProgram(logo_program->id);

  // Bind the logo to texture 0
  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, logo);
  glUniform1i(logo_program->uniform[1], 0);

  // Bind logo vbo
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glEnableVertexAttribArray(logo_program->attribute[0]);
  glVertexAttribPointer(logo_program->attribute[0], 2, GL_FLOAT, false, 4*sizeof(float), (void*)0);
  glEnableVertexAttribArray(logo_program->attribute[1]);
  glVertexAttribPointer(logo_program->attribute[1], 2, GL_FLOAT, false, 4*sizeof(float), (void*)(2 * sizeof(float)));

  // load sound
  unsigned sound_source;
  alGenSources(1, &sound_source);
  Sound* ding = sound_load("sound/ding.ogg");

  alSourcei(sound_source, AL_BUFFER, ding->buffer);
  
  glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  glfwSwapBuffers();

  sleep(1);

  t0 = glfwGetTime();
  while (logo_y < 8) {
    t1 = glfwGetTime();
    dt = t1 - t0;
    t0 = t1;

    logo_y += 50 * dt;

    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

    glUniform2f(logo_program->uniform[0], roundf(logo_x), roundf(logo_y));

    // Render logo
    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

    glfwSwapBuffers();
  }

  alSourcePlay(sound_source);

  glDisableVertexAttribArray(logo_program->attribute[0]);
  glDisableVertexAttribArray(logo_program->attribute[1]);

  sleep(1);
}
예제 #2
0
파일: xchat.c 프로젝트: gchat/gchat
static void
xchat_init (void)
{
    char buf[3068];
    const char *cs = NULL;

#ifdef WIN32
    WSADATA wsadata;

#ifdef USE_IPV6
    if (WSAStartup (0x0202, &wsadata) != 0)
    {
        MessageBox (NULL, "Cannot find winsock 2.2+", "Error", MB_OK);
        exit (0);
    }
#else
    WSAStartup (0x0101, &wsadata);
#endif /* !USE_IPV6 */
#endif /* !WIN32 */

#ifdef USE_SIGACTION
    struct sigaction act;

    /* ignore SIGPIPE's */
    act.sa_handler = SIG_IGN;
    act.sa_flags = 0;
    sigemptyset (&act.sa_mask);
    sigaction (SIGPIPE, &act, NULL);

    /* Deal with SIGUSR1's & SIGUSR2's */
    act.sa_sigaction = sigusr1_handler;
    act.sa_flags = 0;
    sigemptyset (&act.sa_mask);
    sigaction (SIGUSR1, &act, NULL);

    act.sa_sigaction = sigusr2_handler;
    act.sa_flags = 0;
    sigemptyset (&act.sa_mask);
    sigaction (SIGUSR2, &act, NULL);
#else
#ifndef WIN32
    /* good enough for these old systems */
    signal (SIGPIPE, SIG_IGN);
#endif
#endif

    if (g_get_charset (&cs))
        prefs.utf8_locale = TRUE;

    load_text_events ();
    sound_load ();
    notify_load ();
    ignore_load ();

    snprintf (buf, sizeof (buf),
              "NAME %s~%s~\n" "CMD query %%s\n\n"
              "NAME %s~%s~\n" "CMD send %%s\n\n"
              "NAME %s~%s~\n" "CMD whois %%s %%s\n\n"
              "NAME %s~%s~\n" "CMD notify -n ASK %%s\n\n"
              "NAME SUB\n" "CMD %s\n\n"
              "NAME %s\n" "CMD op %%a\n\n"
              "NAME %s\n" "CMD deop %%a\n\n"
              "NAME SEP\n" "CMD \n\n"
              "NAME %s\n" "CMD voice %%a\n\n"
              "NAME %s\n" "CMD devoice %%a\n"
              "NAME SEP\n" "CMD \n\n"
              "NAME SUB\n" "CMD %s\n\n"
              "NAME %s\n" "CMD kick %%s\n\n"
              "NAME %s\n" "CMD ban %%s\n\n"
              "NAME SEP\n" "CMD \n\n"
              "NAME %s *!*@*.host\n" "CMD ban %%s 0\n\n"
              "NAME %s *!*@domain\n" "CMD ban %%s 1\n\n"
              "NAME %s *!*user@*.host\n" "CMD ban %%s 2\n\n"
              "NAME %s *!*user@domain\n" "CMD ban %%s 3\n\n"
              "NAME SEP\n" "CMD \n\n"
              "NAME %s *!*@*.host\n" "CMD kickban %%s 0\n\n"
              "NAME %s *!*@domain\n" "CMD kickban %%s 1\n\n"
              "NAME %s *!*user@*.host\n" "CMD kickban %%s 2\n\n"
              "NAME %s *!*user@domain\n" "CMD kickban %%s 3\n\n"
              "NAME ENDSUB\n" "CMD \n\n"
              "NAME ENDSUB\n" "CMD \n\n",
              _("_Open Dialog Window"), "xchat-dialog",
              _("_Send a File"), "gtk-floppy",
              _("_User Info (WhoIs)"), "gtk-info",
              _("_Add to Friends List"), "gtk-add",
              _("O_perator Actions"),
              _("Give Ops"),
              _("Take Ops"),
              _("Give Voice"),
              _("Take Voice"),
              _("Kick/Ban"),
              _("Kick"),
              _("Ban"),
              _("Ban"),
              _("Ban"),
              _("Ban"),
              _("Ban"),
              _("KickBan"), _("KickBan"), _("KickBan"), _("KickBan"));

    list_loadconf ("popup.conf", &popup_list, buf);

    snprintf (buf, sizeof (buf),
              "NAME %s\n" "CMD part\n\n"
              "NAME %s\n" "CMD getstr # join \"%s\"\n\n"
              "NAME %s\n" "CMD quote LINKS\n\n"
              "NAME %s\n" "CMD ping\n\n"
              "NAME TOGGLE %s\n" "CMD irc_hide_version\n\n",
              _("Leave Channel"),
              _("Join Channel..."),
              _("Enter Channel to Join:"),
              _("Server Links"), _("Ping Server"), _("Hide Version"));
    list_loadconf ("usermenu.conf", &usermenu_list, buf);

    snprintf (buf, sizeof (buf),
              "NAME %s\n" "CMD op %%a\n\n"
              "NAME %s\n" "CMD deop %%a\n\n"
              "NAME %s\n" "CMD ban %%s\n\n"
              "NAME %s\n" "CMD getstr \"%s\" \"kick %%s\" \"%s\"\n\n"
              "NAME %s\n" "CMD send %%s\n\n"
              "NAME %s\n" "CMD query %%s\n\n",
              _("Op"),
              _("DeOp"),
              _("Ban"),
              _("Kick"),
              _("bye"),
              _("Enter reason to kick %s:"), _("Sendfile"), _("Dialog"));
    list_loadconf ("buttons.conf", &button_list, buf);

    snprintf (buf, sizeof (buf),
              "NAME %s\n" "CMD whois %%s %%s\n\n"
              "NAME %s\n" "CMD send %%s\n\n"
              "NAME %s\n" "CMD dcc chat %%s\n\n"
              "NAME %s\n" "CMD clear\n\n"
              "NAME %s\n" "CMD ping %%s\n\n",
              _("WhoIs"), _("Send"), _("Chat"), _("Clear"), _("Ping"));
    list_loadconf ("dlgbuttons.conf", &dlgbutton_list, buf);

    list_loadconf ("tabmenu.conf", &tabmenu_list, NULL);
    list_loadconf ("ctcpreply.conf", &ctcp_list, defaultconf_ctcp);
    list_loadconf ("commands.conf", &command_list, defaultconf_commands);
    list_loadconf ("replace.conf", &replace_list, defaultconf_replace);
    list_loadconf ("urlhandlers.conf", &urlhandler_list,
                   defaultconf_urlhandlers);

    servlist_init ();           /* load server list */

    /* if we got a URL, don't open the server list GUI */
    if (!prefs.slist_skip && !arg_url)
        fe_serverlist_open (NULL);

    /* turned OFF via -a arg */
    if (!arg_dont_autoconnect)
    {
        /* do any auto connects */
        if (!servlist_have_auto ())   /* if no new windows open .. */
        {
            /* and no serverlist gui ... */
            if (prefs.slist_skip || arg_url)
                /* we'll have to open one. */
                new_ircwindow (NULL, NULL, SESS_SERVER, 0);
        }
        else
        {
            fe_idle_add (xchat_auto_connect, NULL);
        }
    }
    else
    {
        if (prefs.slist_skip || arg_url)
            new_ircwindow (NULL, NULL, SESS_SERVER, 0);
    }
}
예제 #3
0
파일: sound.c 프로젝트: AvanWolf/naev
/**
 * @brief Makes the list of available sounds.
 */
static int sound_makeList (void)
{
   char** files;
   uint32_t nfiles,i;
   char path[PATH_MAX];
   char tmp[64];
   int len, suflen, flen;
   int mem;

   if (sound_disabled)
      return 0;

   /* get the file list */
   files = ndata_list( SOUND_PREFIX, &nfiles );

   /* load the profiles */
   mem = 0;
   suflen = strlen(SOUND_SUFFIX_WAV);
   for (i=0; i<nfiles; i++) {
      flen = strlen(files[i]);

      /* Must be longer than suffix. */
      if (flen < suflen) {
         free(files[i]);
         continue;
      }

      /* Make sure is wav or ogg. */
      if ((strncmp( &files[i][flen - suflen], SOUND_SUFFIX_WAV, suflen)!=0) &&
            (strncmp( &files[i][flen - suflen], SOUND_SUFFIX_OGG, suflen)!=0)) {
         free(files[i]);
         continue;
      }

      /* grow the selection size */
      sound_nlist++;
      if (sound_nlist > mem) { /* we must grow */
         mem += 32; /* we'll overallocate most likely */
         sound_list = realloc( sound_list, mem*sizeof(alSound));
      }

      /* remove the suffix */
      len = flen - suflen;
      strncpy( tmp, files[i], len );
      tmp[len] = '\0';

      /* Load the sound. */
      sound_list[sound_nlist-1].name = strdup(tmp);
      snprintf( path, PATH_MAX, SOUND_PREFIX"%s", files[i] );
      if (sound_load( &sound_list[sound_nlist-1], path )) {
         sound_nlist--; /* Song not actually added. */
      }

      /* Clean up. */
      free(files[i]);
   }
   /* shrink to minimum ram usage */
   sound_list = realloc( sound_list, sound_nlist*sizeof(alSound));

   DEBUG("Loaded %d sound%s", sound_nlist, (sound_nlist==1)?"":"s");

   /* More clean up. */
   free(files);

   return 0;
}