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()); }
void update_window() { glfwSwapBuffers(window); abort_on_error("OpenGL", glGetError()); glfwPollEvents(); abort_on_error("OpenGL", glGetError()); }
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); }
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(); }
void mem_realloc( void **ptr, int req ) { *ptr = realloc( *ptr, req ); if( *ptr == NULL ) abort_on_error( -4 ); } /* End of void mem_realloc() */
// 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"; }
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() */
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; }
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()); }
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); } }
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()); }
// 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; }
// 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"); } //} }
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; }
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; }