void frontnet_start_update(void) { static TbClockMSec player_last_time = 0; SYNCDBG(18,"Starting"); if (LbTimerClock() >= player_last_time+200) { net_number_of_enum_players = 0; LbMemorySet(net_player, 0, sizeof(net_player)); if ( LbNetwork_EnumeratePlayers(net_session[net_session_index_active], enum_players_callback, 0) ) { ERRORLOG("LbNetwork_EnumeratePlayers() failed"); return; } player_last_time = LbTimerClock(); } if ((net_number_of_messages <= 0) || (net_message_scroll_offset < 0)) { net_message_scroll_offset = 0; } else if (net_message_scroll_offset > net_number_of_messages-1) { net_message_scroll_offset = net_number_of_messages-1; } process_frontend_packets(); frontnet_rewite_net_messages(); }
void frontnet_draw_current_message(struct GuiButton *gbtn) { static TbClockMSec last_time = 0; static TbBool print_with_cursor = 1; struct PlayerInfo *player; int font_idx; char text[2048]; // Blink cursor - switch state every 100ms if (LbTimerClock() >= last_time + 100) { print_with_cursor = !print_with_cursor; last_time = LbTimerClock(); } // Get player player = get_my_player(); if (player_invalid(player)) { return; } // Prepare text buffer and font snprintf(text, sizeof(text), "%s%s", player->mp_message_text, print_with_cursor?"_":""); font_idx = frontend_button_caption_font(gbtn, 0); // And draw the message frontnet_draw_scroll_selection_box(gbtn, font_idx, text); }
void draw_high_score_entry(int idx, long pos_x, long pos_y, int col1_width, int col2_width, int col3_width, int col4_width, int units_per_px) { struct HighScore *hscore; char str[64]; int i; if ((idx >= campaign.hiscore_count) || (campaign.hiscore_table == NULL)) return; hscore = &campaign.hiscore_table[idx]; lbDisplay.DrawFlags = Lb_TEXT_HALIGN_RIGHT; i = pos_x + col1_width; LbTextNumberDraw(i, pos_y, units_per_px, idx+1, Fnt_RightJustify); i += col2_width; LbTextNumberDraw(i, pos_y, units_per_px, hscore->score, Fnt_RightJustify); i += col3_width; LbTextNumberDraw(i, pos_y, units_per_px, hscore->lvnum, Fnt_RightJustify); i += col4_width; if (idx == high_score_entry_input_active) { memcpy(str,high_score_entry,sizeof(str)); str[sizeof(str)-1] = '\0'; LbTextStringDraw(i, pos_y, units_per_px, str, Fnt_LeftJustify); str[high_score_entry_index] = '\0'; i += LbTextStringWidth(str) * units_per_px / 16; // Blinking cursor if ((LbTimerClock() & 0x0100) != 0) { LbTextStringDraw(i, pos_y, units_per_px, "_", Fnt_LeftJustify); } } else { LbTextStringDraw(i, pos_y, units_per_px, hscore->name, Fnt_LeftJustify); } }
void frontstory_load(void) { wait_for_cd_to_be_available(); frontend_load_data_from_cd(); if (LbDataLoadAll(frontstory_load_files_640)) { ERRORLOG("Unable to Load FRONT STORY FILES"); } else { LbDataLoadSetModifyFilenameFunction(_DK_mdlf_default); LbSpriteSetupAll(frontstory_setup_sprites); LbPaletteSet(frontend_palette); srand(LbTimerClock()); frontstory_text_no = GUIStr_EasterPoems + rand() % 26; } }
void frontnet_session_update(void) { static long last_enum_players = 0; static long last_enum_sessions = 0; long i; if (LbTimerClock() >= last_enum_sessions) { net_number_of_sessions = 0; LbMemorySet(net_session, 0, sizeof(net_session)); if ( LbNetwork_EnumerateSessions(enum_sessions_callback, 0) ) ERRORLOG("LbNetwork_EnumerateSessions() failed"); last_enum_sessions = LbTimerClock(); if (net_number_of_sessions == 0) { net_session_index_active = -1; net_session_index_active_id = -1; } else if (net_session_index_active != -1) { if ((net_session_index_active >= net_number_of_sessions) || (!net_session[net_session_index_active]->joinable)) { net_session_index_active = -1; for (i=0; i < net_number_of_sessions; i++) { if (net_session[i]->joinable) { net_session_index_active = i; break; } } } if (net_session_index_active == -1) net_session_index_active_id = -1; } } if ((net_number_of_sessions == 0) || (net_session_scroll_offset < 0)) { net_session_scroll_offset = 0; } else if (net_session_scroll_offset > net_number_of_sessions-1) { net_session_scroll_offset = net_number_of_sessions-1; } if (net_session_index_active == -1) { net_number_of_enum_players = 0; } else if (LbTimerClock() >= last_enum_players) { net_number_of_enum_players = 0; LbMemorySet(net_player, 0, sizeof(net_player)); if ( LbNetwork_EnumeratePlayers(net_session[net_session_index_active], enum_players_callback, 0) ) { net_session_index_active = -1; net_session_index_active_id = -1; return; } last_enum_players = LbTimerClock(); } if (net_number_of_enum_players == 0) { net_player_scroll_offset = 0; } else if (net_player_scroll_offset < 0) { net_player_scroll_offset = 0; } else if (net_player_scroll_offset > net_number_of_enum_players-1) { net_player_scroll_offset = net_number_of_enum_players-1; } }