Пример #1
0
void update_viewport_and_projection()
{
    int fb_width;
    int fb_height;
    float ratio;

    glfwGetFramebufferSize(window, &fb_width, &fb_height);

    ratio = fb_width / (float)(fb_height);

    glViewport(0, 0, fb_width, fb_height);
    assert(glGetError() == GL_NO_ERROR);

    glClear(GL_COLOR_BUFFER_BIT);
    assert(glGetError() == GL_NO_ERROR);

    glMatrixMode(GL_PROJECTION);
    abort_on_error("OpenGL", glGetError());

    glLoadIdentity();
    abort_on_error("OpenGL", glGetError());

    glOrtho(-ratio, ratio, -1, 1, 1, -1);
    abort_on_error("OpenGL", glGetError());
}
Пример #2
0
void update_window()
{
    glfwSwapBuffers(window);
    abort_on_error("OpenGL", glGetError());

    glfwPollEvents();
    abort_on_error("OpenGL", glGetError());
}
Пример #3
0
void init_freetype(const char *font_path)
{
    FT_Error error;

    error = FT_Init_FreeType(&freetype);
    abort_on_error("FreeType", error);

    error = FT_New_Face(freetype, font_path, 0, &face);

    abort_on_error("FreeType", error);

    error = FT_Set_Char_Size(face, 0, 16*64, 300, 300);
    abort_on_error("FreeType", error);
}
Пример #4
0
void draw_quad()
{
    glMatrixMode(GL_MODELVIEW);
    abort_on_error("OpenGL", glGetError());

    glLoadIdentity();
    abort_on_error("OpenGL", glGetError());

    glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex2f(-0.5, -0.5);
        glTexCoord2f(1, 0); glVertex2f(0.5, -0.5);
        glTexCoord2f(1, 1); glVertex2f(0.5, 0.5);
        glTexCoord2f(0, 1); glVertex2f(-0.5, 0.5);
    glEnd();
}
Пример #5
0
void mem_realloc( void **ptr, int req )
{
  *ptr = realloc( *ptr, req );
  if( *ptr == NULL )
    abort_on_error( -4 );

} /* End of void mem_realloc() */
Пример #6
0
// Load tiles
void tile_type_manager::load( std::string newFile){
  // Load biomes from file
  rapidxml::xml_document<> doc;
  std::ifstream file;

  // Check exist
  if( fexists(newFile.c_str())){
    file.open(newFile.c_str());
  }
  else{
    abort_on_error( std::string("Cannot find file " + newFile + " \n Please check your files and try again").c_str());
  }

  std::stringstream buffer;
  buffer << file.rdbuf();
  std::string content(buffer.str());
  doc.parse<0>(&content[0]);

  rapidxml::xml_node<> *allTiles = doc.first_node();

  // Loading
  std::cout << "   TILES\n-------------\n";

  // Load tiles
  for(rapidxml::xml_node<> *cTile=allTiles-> first_node("tile"); cTile; cTile=cTile->next_sibling()){
    // Read xml variables
    // General
    int tileID = atoi(cTile-> first_attribute("id") -> value());
    std::string name = cTile-> first_node("name") -> value();
    std::string image1 = cTile-> first_node("images") -> first_node("image") -> value();
    std::string image2 = cTile-> first_node("images") -> first_node("image2") -> value();
    std::string model = cTile-> first_node("model") -> value();
    int randomness = atoi(cTile-> first_node("random") -> value());

    std::string attrubite_string = cTile-> first_node("attrubite") -> value();
    int attrubite = ATTRIBUTE_GAS;

    // Get attrubite
    if( attrubite_string == "ATTRIBUTE_GAS")
      attrubite = ATTRIBUTE_GAS;
    else if( attrubite_string == "ATTRIBUTE_SOLID")
      attrubite = ATTRIBUTE_SOLID;
    else if( attrubite_string == "ATTRIBUTE_LIQUID")
      attrubite = ATTRIBUTE_LIQUID;

    // Draw to screen (debug)
    std::cout << "-> Loading Tile:" << name << "  ID:" <<  tileID << "  MODEL:" << model << "  ATTRIBUTE:" << attrubite_string << "  RANDOMNESS:" << randomness << "\n";

    // Create tile, set variables and add it to the tile list
    tile_type newTileType( name, tileID, NULL, model, attrubite, randomness);

    // Set images
    newTileType.setImages( image1, image2);

    // Add the tile
    tile_defs.push_back( newTileType);
  }

  std::cout << "\n\n";
}
Пример #7
0
void mem_alloc( void **ptr, int req )
{
  free_ptr( ptr );
  *ptr = malloc( req );
  if( *ptr == NULL )
    abort_on_error( -4 );

} /* End of void mem_alloc() */
Пример #8
0
int main(int argc, char **argv)
{
	pscom_err_t rc;
	char *server;
	int cnt = 0;

	progname = strdup(argc && argv[0] ? argv[0] : "< ??? >");
	/* pscom_set_debug(arg_verbose); */

	server = argv[1];

	pscom_init(PSCOM_VERSION);
	sock = pscom_open_socket(0, 0);
	if (!sock) abort_on_error("pscom_open_socket() failed", PSCOM_ERR_STDERROR);
	sock->ops = socket_ops_server;

	pscom_socket_set_name(sock, !server ? "server" : "client");

	if (!server) {
		/* start server */
		printf("Start clients with: %s localhost:%d\n",
		       progname, arg_listenport);
		rc = pscom_listen(sock, arg_listenport);
		if (rc) abort_on_error("pscom_listen() failed", rc);

		while (1) {
			pscom_wait_any();
		}
	} else {
		while (1) {
			cnt++;
			printf("Connection %d\n", cnt);
			pscom_connection_t *con = pscom_open_connection(sock);

			rc = pscom_connect_socket_str(con, server);
			if (rc) abort_on_error("pscom_connect_socket_str()", rc);
			// sleep(1);
		}
	}

	return 0;
}
Пример #9
0
void draw_triangle()
{
    glMatrixMode(GL_MODELVIEW);
    abort_on_error("OpenGL", glGetError());

    glLoadIdentity();
    abort_on_error("OpenGL", glGetError());

    glRotatef((float)(glfwGetTime() * 50), 0, 0, 1);
    abort_on_error("OpenGL", glGetError());

    glBegin(GL_TRIANGLES);
        glColor3f(1.f, 0.f, 0.f);
        glVertex3f(-0.6f, -0.4f, 0.f);
        glColor3f(0.f, 1.f, 0.f);
        glVertex3f(0.6f, -0.4f, 0.f);
        glColor3f(0.f, 0.f, 1.f);
        glVertex3f(0.f, 0.6f, 0.f);
    glEnd();
    abort_on_error("OpenGL", glGetError());
}
Пример #10
0
void freetype_render_glyph(unsigned charcode)
{
    FT_Error error;
    unsigned glyph_index;

    glyph_index = FT_Get_Char_Index(face, charcode);
    assert(glyph_index != 0);

    error = FT_Load_Glyph(face, glyph_index, FT_LOAD_NO_BITMAP);
    abort_on_error("FreeType", error);

    #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
    printf("Subpixel rendering is enabled.\n");
    #endif

    if(face->glyph->format != FT_GLYPH_FORMAT_BITMAP)
    {
        printf("Glyph is not bitmap. Rendering...\n");
        error = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL);
        abort_on_error("FreeType", error);
    }
}
Пример #11
0
void gl_render_glyph()
{
    unsigned texture_width = 128;
    unsigned texture_height = texture_width;
    unsigned texture_size = texture_width * texture_height;

    char *texture_buffer;

    FT_Bitmap *bitmap = &face->glyph->bitmap;

    unsigned glyph_width = bitmap->width;
    unsigned glyph_height = bitmap->rows;

    unsigned texture_id;

    texture_buffer = malloc(texture_size);
    memset(texture_buffer, 0, texture_size);

    bitblit(
        texture_buffer,
        texture_width,
        bitmap->buffer,
        glyph_width,
        glyph_height,
        0, 0
    );

    glGenTextures(1, &texture_id);
    abort_on_error("OpenGL", glGetError());

    glBindTexture(GL_TEXTURE_2D, texture_id);
    abort_on_error("OpenGL", glGetError());

    glTexImage2D(
        GL_TEXTURE_2D,
        0,
        GL_RED,
        texture_width,
        texture_height,
        0,
        GL_RED,
        GL_UNSIGNED_BYTE,
        texture_buffer
    );
    abort_on_error("OpenGL", glGetError());

    free(texture_buffer);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    abort_on_error("OpenGL", glGetError());

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    abort_on_error("OpenGL", glGetError());

    draw_quad();

    glDeleteTextures(1, &texture_id);
    abort_on_error("OpenGL", glGetError());
}
Пример #12
0
// Load model
bool model::load( const char * path, const char * uv_path){
  if( model_loader::load_model( path, vertices, uvs, normals)){
    //vertices
    glGenBuffers(1, &vertexbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);

    //uvs
    glGenBuffers(1, &texturebuffer);
    glBindBuffer(GL_ARRAY_BUFFER, texturebuffer);
    glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);

    //normals
    glGenBuffers(1, &normalbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
    glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(glm::vec3), &normals[0], GL_STATIC_DRAW);


    // Image
    // Load image
    if( uv_path != "NULL"){
      BITMAP *image;
      if( !(image = load_bitmap( uv_path, NULL))){
        abort_on_error( "Could not load image");
      }
      texture_id = allegro_gl_make_texture_ex( AGL_TEXTURE_HAS_ALPHA | AGL_TEXTURE_FLIP, image, GL_RGBA);
    }

    // No blurry textures!
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    return true;
  }
  return false;
}
Пример #13
0
// Load sounds
void enemy::load_sounds(){
  //if(type == enemy_vorticon){
    if(!(walk1 = load_sample("sounds/keen_walk_1.wav"))){
      abort_on_error( "Cannot find sound sounds/walk_1.wav \n Please check your files and try again");
    }
    if(!(walk2 = load_sample("sounds/keen_walk_2.wav"))){
      abort_on_error( "Cannot find sound sounds/walk_2.wav \n Please check your files and try again");
    }
    if(!(jump = load_sample("sounds/keen_jump.wav"))){
      abort_on_error( "Cannot find sound sounds/jump.wav \n Please check your files and try again");
    }
    if(!(die = load_sample("sounds/keen_die.wav"))){
      abort_on_error( "Cannot find sound sounds/die.wav \n Please check your files and try again");
    }
    if(!(getItem = load_sample("sounds/get_item.wav"))){
      abort_on_error( "Cannot find sound sounds/getItem.wav \n Please check your files and try again");
    }
    if(!(getBonus = load_sample("sounds/get_bonus.wav"))){
      abort_on_error( "Cannot find sound sounds/getBonus.wav \n Please check your files and try again");
    }
  //}
}
Пример #14
0
int main(int argc, char **argv)
{
	pscom_err_t rc;
	int ret;

	progname = strdup(argc && argv[0] ? argv[0] : "< ??? >");
	parse_opt(argc, argv);

	pscom_set_debug(arg_verbose);

	pscom_init(PSCOM_VERSION);
	sock = pscom_open_socket(0, 0);
	if (!sock) abort_on_error("pscom_open_socket() failed", PSCOM_ERR_STDERROR);
	sock->ops = socket_ops_server;

	pscom_socket_set_name(sock, arg_listenname);

	rc = pscom_listen(sock, arg_listenport);
	if (rc) abort_on_error("pscom_listen() failed", rc);

	pscom_connection_t *con = pscom_open_connection(sock);

	rc = pscom_connect_socket_str(con, arg_peer_str);
	if (rc) abort_on_error("pscom_connect_socket_str()", rc);

	if (0) { // dummy connection
		pscom_connection_t *cond = pscom_open_connection(sock);
		rc = pscom_connect_socket_str(cond, "localhost:8912@dummy");
		if (rc) abort_on_error("pscom_connect_socket_str()", rc);
	}

	// printf("Lokal connection: %p\n", con);

	{
		int peer_port;
		char peer_name[8];

		ret = pscom_parse_socket_ondemand_str(arg_peer_str, NULL, &peer_port, &peer_name);
		if (ret) error(1, errno, "parse peer address failed");

		printf("Call:\n");
		printf("%s -l %d -n %1.8s %s%s\n" , progname, peer_port, peer_name,
		       pscom_listen_socket_ondemand_str(sock),
		       arg_send ? "" : " -s");
	}

	pscom_stop_listen(sock);

	if (arg_send) {
		printf("Send in 2 sec\n");
		sleep(2);
		char buf[1] = "x";

		pscom_send(con, NULL, 0, buf, 1);
		printf("Send: %1.1s\n", buf);

		rc = pscom_recv(con, NULL, NULL, 0, buf, 1);
		if (rc) abort_on_error("pscom_recv()", rc);
		printf("Receive: %1.1s\n", buf);
	} else {
		char buf[1] = "o";
		rc = pscom_recv(con, NULL, NULL, 0, buf, 1);
		if (rc) abort_on_error("pscom_recv()", rc);
		printf("Receive: %1.1s\n", buf);

		buf[0] = 'y';
		pscom_send(con, NULL, 0, buf, 1);
		printf("Send: %1.1s\n", buf);
	}

//	sleep(10);
	puts(CYAN);
	pscom_dump_info(stdout);
	puts(NORM);

	pscom_flush(con);
	pscom_close_connection(con);
	pscom_close_socket(sock);

	return 0;
}
Пример #15
0
Menu::Menu(){
  // Init fmod
  FSOUND_Init (44100, 32, 0);

  // Create buffer image
  buffer = create_bitmap( SCREEN_W, SCREEN_H);

  // Load images
  if(!(menu = load_bitmap( ("images/gui/menu.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/menu.png \n Please check your files and try again");
  if(!(menuselect = load_bitmap( ("images/gui/menuSelector.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/menuSelector.png \n Please check your files and try again");
  if(!(help = load_bitmap( ("images/gui/help.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/help.png \n Please check your files and try again");
  if(!(cursor[0] = load_bitmap( ("images/gui/cursor1.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/cursor1.png \n Please check your files and try again");
  if(!(cursor[1] = load_bitmap( ("images/gui/cursor2.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/cursor2.png \n Please check your files and try again");
  if(!(levelSelectLeft = load_bitmap( ("images/gui/levelSelectLeft.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/levelSelectLeft.png \n Please check your files and try again");
  if(!(levelSelectRight = load_bitmap( ("images/gui/levelSelectRight.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/levelSelectRight.png \n Please check your files and try again");
  if(!(levelSelectNumber = load_bitmap( ("images/gui/levelSelectNumber.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/levelSelectNumber.png \n Please check your files and try again");
  if(!(copyright = load_bitmap( ("images/gui/copyright.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/copyright.png \n Please check your files and try again");
  if(!(credits = load_bitmap( ("images/gui/credits.png"), NULL)))
    abort_on_error( "Cannot find image images/gui/credits.png \n Please check your files and try again");

  //Load sound effects
  if(!(click = load_sample(("sounds/click.wav")))){
    abort_on_error( "Cannot find sound sounds/click.png \n Please check your files and try again");
  }

  // Temporary fonts
  FONT *f1, *f2, *f3, *f4, *f5;

  //Sets Font
  if(!(f1 = load_font(("fonts/arial_black.pcx"), NULL, NULL))){
    abort_on_error( "Cannot find font fonts/arial_black.png \n Please check your files and try again");
  }

  f2 = extract_font_range(f1, ' ', 'A'-1);
  f3 = extract_font_range(f1, 'A', 'Z');
  f4 = extract_font_range(f1, 'Z'+1, 'z');

  //Merge fonts
  font = merge_fonts(f4, f5 = merge_fonts(f2, f3));

  //Destroy temporary fonts
  destroy_font(f1);
  destroy_font(f2);
  destroy_font(f3);
  destroy_font(f4);
  destroy_font(f5);

  // Allow transparency
  set_alpha_blender();

  //Variables
  newSelectorY = SCREEN_H - 323;
  selectorY = SCREEN_H - 323;
  selectorX = 60;
  mouse_control = false;
  selectorHovering = 0;

  // Create map for live background
  tile_map = new tileMap("data/levels/level_01");

  // Set background scroll direction
  scrollDirection = "right";
  tile_map -> y = random( 0, (tile_map -> height * 64) - SCREEN_H);
  tile_map -> x = 0;

  levelOn = 0;
}