Uint32 check_alpha_image_name(const char* file_name, const Uint32 size, char* str) { char buffer[128]; Uint32 len, i; if (file_name == 0) { LOG_ERROR("Zero file name!"); return 0; } len = get_file_name_len(file_name); if (str == 0) { LOG_ERROR("Buffer is zero!"); return 0; } if ((len + 11) >= sizeof(buffer)) { LOG_ERROR("Buffer too small! %d bytes needed, but buffer is " "only %d bytes big!", len + 11, size); return 0; } for (i = 0; i < IMAGE_EXTENSIONS_MAX; i++) { safe_strncpy2(buffer, file_name, sizeof(buffer), len); safe_strcat(buffer, "_alpha", sizeof(buffer)); safe_strcat(buffer, image_extensions[i], sizeof(buffer)); if (el_file_exists(buffer) != 0) { len = strlen(buffer); safe_strncpy2(str, buffer, size, len); return 1; } } return 0; }
/* display or test the md5sum of the current map or the specified file */ int command_ckdata(char *text, int len) { const int DIGEST_LEN = 16; Uint8 digest[DIGEST_LEN]; char digest_str[DIGEST_LEN*2+1]; char expected_digest_str[DIGEST_LEN*2+1]; char result_str[256]; char filename[256]; /* paramters are optional, first is expected checksum value, second is filename */ /* if only a filename is specfied, we display checksum rather than do match */ filename[0] = digest_str[0] = expected_digest_str[0] = '\0'; text = getparams(text); if (*text) { /* if we have at least one space and the first string is of digest length, assume we matching */ char *tempstr = safe_strcasestr(text, strlen(text), " ", 1); if ((tempstr != NULL) && (strlen(text) - strlen(tempstr) == DIGEST_LEN*2)) { safe_strncpy2(expected_digest_str, text, DIGEST_LEN*2+1, DIGEST_LEN*2 ); /* trim leading space from filename */ while (*tempstr == ' ') tempstr++; if (*tempstr) safe_strncpy(filename, tempstr, 256); } /* else we only have a filename */ else safe_strncpy(filename, text, 256 ); } /* if no parameters default to current map elm file */ else safe_strncpy(filename, continent_maps[cur_map].name, 256 ); /* calculate, display checksum if we're not matching */ if (*filename && el_file_exists(filename) && get_file_digest(filename, digest)) { int i; for(i=0; i<DIGEST_LEN; i++) sprintf(&digest_str[2*i], "%02x", (int)digest[i]); digest_str[DIGEST_LEN*2] = 0; if (! *expected_digest_str) { safe_snprintf(result_str, sizeof(result_str), "#ckdata %s %s", digest_str, filename ); LOG_TO_CONSOLE(c_grey1,result_str); } } /* show help if something fails */ else { LOG_TO_CONSOLE(c_red2, "ckdata: invalid file or command syntax."); LOG_TO_CONSOLE(c_red1, "Show current map (elm): #ckdata"); LOG_TO_CONSOLE(c_red1, "Show specified file: #ckdata file_name"); LOG_TO_CONSOLE(c_red1, "Check specified file: #ckdata expected_checksum file_name"); return 1; } /* if we have an expected value, compare then display an appropriate message */ if (*expected_digest_str) { if (my_strcompare(digest_str, expected_digest_str)) LOG_TO_CONSOLE(c_green2,"ckdata: File matches expected checksum"); else LOG_TO_CONSOLE(c_red2,"ckdata: File does not match expected checksum"); } return 1; } /* end command_ckdata() */
int switch_to_game_map() { #ifdef NEW_TEXTURES char buffer[1024]; #else /* NEW_TEXTURES */ int len; texture_cache_struct tex; #endif /* NEW_TEXTURES */ short int cur_cont; static short int old_cont = -1; /* check we loaded the mapinfo data */ if (continent_maps == NULL || continent_maps[0].name == NULL) { LOG_TO_CONSOLE(c_yellow2,err_nomap_str); return 0; } #ifdef NEW_TEXTURES if (check_image_name(map_file_name, sizeof(buffer), buffer) == 1) { map_text = load_texture_cached(buffer, tt_image); } else { map_text = 0; } #else /* NEW_TEXTURES */ my_strcp(tex.file_name,map_file_name); len=strlen(tex.file_name); tex.file_name[len-3]='b'; tex.file_name[len-2]='m'; tex.file_name[len-1]='p'; tex.alpha = 128; if (!el_file_exists(tex.file_name)) map_text = 0; else map_text=load_bmp8_fixed_alpha(&tex, tex.alpha); #endif /* NEW_TEXTURES */ if(!map_text) { LOG_TO_CONSOLE(c_yellow2,err_nomap_str); return 0; } if (cur_map < 0) { cur_cont = -1; } else { cur_cont = continent_maps[cur_map].cont; } if (cur_cont != old_cont && cur_cont >= 0 && cur_cont < nr_continents) { #ifdef NEW_TEXTURES cont_text = load_texture_cached (cont_map_file_names[cur_cont], tt_image); #else /* NEW_TEXTURES */ cont_text = load_texture_cache (cont_map_file_names[cur_cont], 128); #endif /* NEW_TEXTURES */ old_cont = cur_cont; } #ifdef DEBUG_MAP_SOUND cur_tab_map = cur_map; #endif // DEBUG_MAP_SOUND if(current_cursor != CURSOR_ARROW) { change_cursor(CURSOR_ARROW); } return 1; }
void change_minimap(){ char minimap_file_name[256]; #ifndef NEW_TEXTURES texture_cache_struct tex; #endif /* NEW_TEXTURES */ if(minimap_win < 0) return; //save_exploration_map(); #ifdef NEW_TEXTURES //unload all textures if(exploration_texture) glDeleteTextures(1,&exploration_texture); //make filename if (check_image_name(map_file_name, sizeof(minimap_file_name), minimap_file_name) == 1) { minimap_texture = load_texture_cached(minimap_file_name, tt_image); } else { minimap_texture = 0; } compass_tex = load_texture_cached("./textures/compass", tt_gui); #else /* NEW_TEXTURES */ //unload all textures if(minimap_texture) glDeleteTextures(1,&minimap_texture); if(compass_tex) glDeleteTextures(1,&compass_tex); if(exploration_texture) glDeleteTextures(1,&exploration_texture); //make filename my_strcp(minimap_file_name,map_file_name); minimap_file_name[strlen(minimap_file_name)-4] = '\0'; strcat(minimap_file_name, ".bmp"); //load textures my_strcp(tex.file_name, minimap_file_name); if (!el_file_exists(minimap_file_name)) minimap_texture = 0; else minimap_texture = load_bmp8_fixed_alpha(&tex,128); my_strcp(tex.file_name, "./textures/compass.bmp"); compass_tex = load_bmp8_fixed_alpha_with_transparent_color(&tex,255,0,0,0); #endif /* NEW_TEXTURES */ glGenTextures(1, &exploration_texture); bind_texture_id(exploration_texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); //load_exploration_map(); #ifdef OPENGL_TRACE CHECK_GL_ERRORS(); #endif //OPENGL_TRACE }