📄 tournament.c
字号:
if (!tag_check_client((ctag = tag_case_str_to_uint(clienttag)))) { continue; } mname = xstrdup(mapname); anongame_add_tournament_map(ctag, mname); eventlog(eventlog_level_trace,__FUNCTION__,"added tournament map \"%s\" for %s",mname,clienttag); xfree(mname); } } else { variable = buff; pointer = strchr(variable,'='); for(pointer--;pointer[0]==' ' || pointer[0]=='\t';pointer--); pointer[1]='\0'; pointer++; pointer++; pointer = strchr(pointer,'='); pointer++; if (strcmp(variable,"start_preliminary") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->start_preliminary = mktime(timestamp); } else if (strcmp(variable,"end_signup") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->end_signup = mktime(timestamp); } else if (strcmp(variable,"end_preliminary") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->end_preliminary = mktime(timestamp); } else if (strcmp(variable,"start_round_1") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->start_round_1 = mktime(timestamp); } else if (strcmp(variable,"start_round_2") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->start_round_2 = mktime(timestamp); } else if (strcmp(variable,"start_round_3") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->start_round_3 = mktime(timestamp); } else if (strcmp(variable,"start_round_4") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->start_round_4 = mktime(timestamp); } else if (strcmp(variable,"tournament_end") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; sscanf(value,format,&mon,&day,&year,&hour,&min,&sec); tournament_check_date(&mon,&day,&year,&hour,&min,&sec,variable); timestamp->tm_mon = mon-1; timestamp->tm_mday = day; timestamp->tm_year = year-1900; timestamp->tm_hour = hour; timestamp->tm_min = min; timestamp->tm_sec = sec; timestamp->tm_isdst = -1; tournament_info->tournament_end = mktime(timestamp); } else if (strcmp(variable,"game_selection") == 0) { if (atoi(pointer) >= 1 && atoi(pointer) <= 2) tournament_info->game_selection = atoi(pointer); } else if (strcmp(variable,"game_type") == 0) { if (atoi(pointer) >= 1 && atoi(pointer) <= 4) tournament_info->game_type = atoi(pointer); } else if (strcmp(variable,"game_client") == 0) { if (atoi(pointer) >= 1 && atoi(pointer) <= 2) tournament_info->game_client = atoi(pointer); } else if (strcmp(variable,"format") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; if (tournament_info->format) xfree((void *)tournament_info->format); tournament_info->format = xstrdup(value); } else if (strcmp(variable,"races") == 0) { unsigned int intvalue = 0; unsigned int i; pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; for(i=0;i<strlen(value);i++) { if (value[i] == 'H') intvalue = intvalue | 0x01; if (value[i] == 'O') intvalue = intvalue | 0x02; if (value[i] == 'N') intvalue = intvalue | 0x04; if (value[i] == 'U') intvalue = intvalue | 0x08; if (value[i] == 'R') intvalue = intvalue | 0x20; } if (intvalue == 0 || intvalue == 0x2F) intvalue = 0x3F; /* hack to make all races availiable */ tournament_info->races = intvalue; } else if (strcmp(variable,"sponsor") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; have_sponsor = xstrdup(value); } else if (strcmp(variable,"icon") == 0) { pointer = strchr(pointer,'\"'); pointer++; value = pointer; pointer = strchr(pointer,'\"'); pointer[0]='\0'; have_icon = xstrdup(value); } else if (strcmp(variable,"thumbs_down") == 0) { tournament_info->thumbs_down = atoi(pointer); } else eventlog(eventlog_level_error,__FUNCTION__,"bad option \"%s\" in \"%s\"",variable,filename); if (have_sponsor && have_icon) { sponsor = xmalloc(strlen(have_sponsor)+6); if (strlen(have_icon) == 4) sprintf(sponsor, "%c%c%c%c,%s",have_icon[3],have_icon[2],have_icon[1],have_icon[0],have_sponsor); else if (strlen(have_icon) == 2) sprintf(sponsor, "%c%c3W,%s",have_icon[1],have_icon[0],have_sponsor); else { sprintf(sponsor, "PX3W,%s",have_sponsor); /* default to standard FT icon */ eventlog(eventlog_level_warn,__FUNCTION__,"bad icon length, using W3XP"); } if (tournament_info->sponsor) xfree((void *)tournament_info->sponsor); tournament_info->sponsor = xstrdup(sponsor); xfree((void *)have_sponsor); xfree((void *)have_icon); xfree((void *)sponsor); have_sponsor = NULL; have_icon = NULL; } } } if (have_sponsor) xfree((void *)have_sponsor); if (have_icon) xfree((void *)have_icon); xfree((void *)timestamp); file_get_line(NULL); // clear file_get_line buffer fclose(fp); /* check if we have timestamps for all the times */ /* if not disable tournament by setting "start_preliminary" to 0 */ if (tournament_info->end_signup == 0 || tournament_info->end_preliminary == 0 || tournament_info->start_round_1 == 0 || tournament_info->start_round_2 == 0 || tournament_info->start_round_3 == 0 || tournament_info->start_round_4 == 0 || tournament_info->tournament_end == 0) { tournament_info->start_preliminary = 0; eventlog(eventlog_level_warn,__FUNCTION__,"one or more timestamps for tournaments is not valid, tournament has been disabled"); } else { tournamentlist_create(); } return 0;}extern int tournament_destroy(void){ if (tournament_info->format) xfree((void *)tournament_info->format); if (tournament_info->sponsor) xfree((void *)tournament_info->sponsor); if (tournament_info) xfree((void *)tournament_info); tournament_info = NULL; gamelist_destroy(); return 0;}extern int tournament_reload(char const * filename){ time_t tm; time(&tm); if((tm >= tournament_info->start_preliminary) && (tm <= tournament_info->tournament_end)) { eventlog(eventlog_level_info,__FUNCTION__,"unable to reload tournament, tournament is in process"); return -1; } tournament_destroy(); return tournament_init(filename);}/*****/extern unsigned int tournament_get_start_preliminary(void){ return tournament_info->start_preliminary;}extern unsigned int tournament_get_end_signup(void){ return tournament_info->end_signup;}extern unsigned int tournament_get_end_preliminary(void){ return tournament_info->end_preliminary;}extern unsigned int tournament_get_start_round_1(void){ return tournament_info->start_round_1;}extern unsigned int tournament_get_start_round_2(void){ return tournament_info->start_round_2;}extern unsigned int tournament_get_start_round_3(void){ return tournament_info->start_round_3;}extern unsigned int tournament_get_start_round_4(void){ return tournament_info->start_round_4;}extern unsigned int tournament_get_tournament_end(void){ return tournament_info->tournament_end;}extern unsigned int tournament_get_game_selection(void){ return tournament_info->game_selection;}extern unsigned int tournament_get_game_type(void){ return tournament_info->game_type;}extern unsigned int tournament_get_races(void){ return tournament_info->races;}extern char * tournament_get_format(void){ return tournament_info->format;}extern char * tournament_get_sponsor(void){ return tournament_info->sponsor;}extern unsigned int tournament_get_thumbs_down(void){ return tournament_info->thumbs_down;}/****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -