/*! @brief 描画プロシージャ */ void mine_tile::paint(Graphics* g){ switch(state){ case init: case init_lock: draw_frame(g); break; case opened: draw_grid(g); draw_number(g); break; case marked: case mark_lock: draw_frame(g); draw_flag(g); break; case bomb: draw_grid(g); draw_bomb(g); break; case exploded: draw_grid(g); draw_bomb(g); draw_cross(g); break; case missmark: draw_frame(g); draw_flag(g); draw_cross(g); break; default: break; } }
static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cairo_t *cr; cr = gdk_cairo_create (widget->window); cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height); cairo_clip (cr); draw_grid_part(cr, 0); draw_grid_part(cr, 1); draw_grid_part(cr, 2); draw_grid_part(cr, 3); draw_grid_part(cr, 4); draw_trem(cr, 0); draw_trem(cr, 1); draw_trem(cr, 2); draw_trem(cr, 3); draw_trem(cr, 4); draw_flag(cr, 0); draw_flag(cr, 1); draw_flag(cr, 2); cairo_destroy(cr); return FALSE; }
int main(int argc, const char *argv[]) { int ret; char ch; srand(time(NULL)); ret = fb_open(); key_init(); draw_back(); draw_grid(); signal(SIGALRM, sig_handler); alarm(1); while (1) { ch = getchar(); switch (ch) { case 'a': if(canleft(pos_x, pos_y, cur_type, arr)) { draw_type(pos_x, pos_y, cur_type, BACK); pos_x--; } break; case 'd': if(canright(pos_x, pos_y, cur_type, arr)) { draw_type(pos_x, pos_y, cur_type, BACK); pos_x++; } break; case 's': if(candown(pos_x, pos_y, cur_type, arr)) { draw_type(pos_x, pos_y, cur_type, BACK); pos_y++; } break; case 'w': if(canchange(pos_x,pos_y,cur_type,arr)) { draw_type(pos_x, pos_y, cur_type, BACK); type_chg(&cur_type); } break; default : break; } draw_type(pos_x, pos_y, cur_type, COLOR); draw_grid(); if(!candown(pos_x, pos_y, cur_type, arr)) { draw_flag(pos_x, pos_y, cur_type, arr); if(gameover(arr)) { exit(0); } deleteone(arr); pos_x = XNUM/2; pos_y = 0; cur_type = rand()%14; } } fb_close(); return 0; }
void select_button(uint16_t x, uint16_t y) { button_col = BLUE; button_posx = x; button_posy = y; draw_button(x, y); display_color(BLACK,button_col); draw_flag(x,y); }
int main() { int height = get_height(); if (!height) // If height returned 0, exit progrm return height; else draw_flag(height); return 0; }
void deselect_button(int16_t x, int16_t y) { if (x >= 0 && y >= 0 && button_arr[x][y].state == 0){ button_col = def_button_col; button_posx = x; button_posy = y; draw_button(x, y); display_color(BLACK, def_button_col); draw_flag(x,y); } }
//------- Begin of function Town::draw -----------// // // Draw the town section on the zoom map // // [int] displayLayer : 1 = normal layer (default : 1) // : 2 = layer above the town // : 4 = layer below the town // void Town::draw(int displayLayer) { TownLayout* townLayout = town_res.get_layout(layout_id); TownSlot* townSlot = town_res.get_slot(townLayout->first_slot_recno); int sectionX1 = loc_x1 * ZOOM_LOC_WIDTH; int sectionY1 = loc_y1 * ZOOM_LOC_HEIGHT; if( displayLayer==4 ) { int townX1 = ZOOM_X1 + (loc_x1-world.zoom_matrix->top_x_loc) * ZOOM_LOC_WIDTH; int townY1 = ZOOM_Y1 + (loc_y1-world.zoom_matrix->top_y_loc) * ZOOM_LOC_HEIGHT; townX1 += (STD_TOWN_LOC_WIDTH * ZOOM_LOC_WIDTH - get_bitmap_width(townLayout->ground_bitmap_ptr))/2; // adjust offset townY1 += (STD_TOWN_LOC_HEIGHT * ZOOM_LOC_HEIGHT - get_bitmap_height(townLayout->ground_bitmap_ptr))/2; // adjust offset world.zoom_matrix->put_bitmap_remap_clip( townX1, townY1, townLayout->ground_bitmap_ptr ); return; } //-------- draw plants, buildings and flags --------// for( int i=0 ; i<townLayout->slot_count ; i++, townSlot++ ) { //----- build_type==0 if plants -----// switch(townSlot->build_type) { //----- build_type>0 if town buildings -----// case TOWN_OBJECT_HOUSE: town_res.get_build( slot_object_id_array[i] ) ->draw(town_recno, sectionX1+townSlot->base_x, sectionY1+townSlot->base_y ); break; case TOWN_OBJECT_PLANT: plant_res.get_bitmap( slot_object_id_array[i] ) ->draw_at(sectionX1+townSlot->base_x, sectionY1+townSlot->base_y); break; case TOWN_OBJECT_FARM: draw_farm(sectionX1+townSlot->base_x, sectionY1+townSlot->base_y, townSlot->build_code ); break; case TOWN_OBJECT_FLAG: if( nation_recno ) draw_flag(sectionX1+townSlot->base_x, sectionY1+townSlot->base_y); break; } } }
void sig_handler(int s) { alarm(1); if(candown(pos_x, pos_y, cur_type, arr)) { draw_type(pos_x, pos_y, cur_type, BACK); pos_y++; draw_type(pos_x, pos_y, cur_type, COLOR); draw_grid(); }else { draw_flag(pos_x, pos_y, cur_type, arr); if(gameover(arr)) { exit(0); } deleteone(arr); pos_x = XNUM/2; pos_y = 0; cur_type = rand()%14; } }
void switch_button_flag(){ button b; int e = get_selected_button(&b); if (e != 0){ uint16_t x = b.posx; uint16_t y = b.posy; if (!button_arr[x][y].state) { int before = button_arr[x][y].flag; button_arr[x][y].flag = (button_arr[x][y].flag + 1) % 3; button_col = BLUE; draw_button_background(x,y); display_color(BLACK,button_col); draw_flag(x,y); if (button_arr[x][y].flag == 1){ --flags; char disp[20]; display_color(BLACK, def_button_col); sprintf(disp, "== %d ==", flags); display_string_xy(disp, LCDHEIGHT/2 + 25, 13); } else { if (flags < maxflags && before == 1) { ++flags; char disp[20]; display_color(BLACK, def_button_col); sprintf(disp, "== %d ==", flags); display_string_xy(disp, LCDHEIGHT/2 + 25, 13); } } check_win(); } } }
void MisAnn(char plr, char pad) { int i, j, bud; struct mStr Mis2; char k, hold, Digit[4], HelpFlag = 0; char pad_str[2] = {'A' + pad, '\0'}; for (i = 0; i < 768; i++) { display::graphics.palette()[i] = 0; } display::graphics.screen()->clear(0); PortPal(plr); ShBox(41, 20, 281, 184); InBox(46, 25, 276, 179); InBox(46, 25, 117, 65); draw_flag(47, 26, plr); InBox(122, 25, 276, 65); display::graphics.setForegroundColor(9); draw_string(127, 33, "SCHEDULED LAUNCH"); //was 154,33 display::graphics.setForegroundColor(34); draw_string(127, 40, "LAUNCH FACILITY: "); display::graphics.setForegroundColor(1); draw_string(0, 0, "PAD "); draw_string(0, 0, pad_str); display::graphics.setForegroundColor(34); draw_string(127, 47, "DATE: "); display::graphics.setForegroundColor(1); draw_string(0, 0, Month[Data->P[plr].Mission[pad].Month]); draw_string(0, 0, "19"); draw_number(0, 0, Data->Year); display::graphics.setForegroundColor(1); GetMisType(Data->P[plr].Mission[pad].MissionCode); memcpy(&Mis2, &Mis, sizeof Mis); if ((Mis.mVab[0] & 0x10) == 0x10 && Data->P[plr].DockingModuleInOrbit <= 0) { i = 0; while (dg[Mis2.Index][i] != 0 && Mis.Doc == 1) { GetMisType(dg[Mis2.Index][i]); i++; } if (dg[Mis2.Index][i] == 0) { Data->P[plr].Mission[pad].MissionCode = 4; // new mission } else { Data->P[plr].Mission[pad].MissionCode = Mis.Index; // new mission } GetMisType(Data->P[plr].Mission[pad].MissionCode); HelpFlag = 1; } draw_string(127, 54, Mis.Abbr); int MisCod; MisCod = Data->P[plr].Mission[pad].MissionCode; if ((MisCod > 24 && MisCod < 32) || MisCod == 33 || MisCod == 34 || MisCod == 35 || MisCod == 37 || MisCod == 40 || MisCod == 41) // Show duration level only on missions with a Duration step - Leon { switch (Data->P[plr].Mission[pad].Duration) { case 1: draw_string(0, 0, ""); break; case 2: draw_string(0, 0, " (B)"); break; case 3: draw_string(0, 0, " (C)"); break; case 4: draw_string(0, 0, " (D)"); break; case 5: draw_string(0, 0, " (E)"); break; case 6: draw_string(0, 0, " (F)"); break; default: draw_string(0, 0, ""); break; } } IOBox(57, 68, 118, 84); IOBox(131, 68, 197, 84); IOBox(205, 68, 266, 84); display::graphics.setForegroundColor(1); draw_string(65, 78, "CONTINUE"); draw_string(139, 78, "PLAY FULL"); draw_string(221, 78, "SCRUB"); display::graphics.setForegroundColor(9); draw_string(65, 78, "C"); draw_string(139, 78, "P"); draw_string(221, 78, "S"); //IOBox(85,68,158,84);IOBox(172,68,245,84); //display::graphics.setForegroundColor(1);draw_string(102,78,"CONTINUE");draw_string(189,78,"SCRUB"); //display::graphics.setForegroundColor(9); //draw_string(102,78,"C");draw_string(189,78,"S"); if (Data->P[plr].Mission[pad].Joint == 0) { draw_string(128, 91, "SINGLE LAUNCH"); } else { draw_string(131, 91, "JOINT LAUNCH"); draw_string(49, 101, "PART ONE"); draw_string(102, 101, "PAD "); //draw_number(0,0,pad); switch (pad) { case 0: draw_string(0, 0, "A"); break; case 1: draw_string(0, 0, "B"); break; case 2: draw_string(0, 0, "C"); break; } draw_string(160, 101, "PART TWO"); draw_string(213, 101, "PAD "); //draw_number(0,0,pad+1); switch (pad + 1) { case 0: draw_string(0, 0, "A"); break; case 1: draw_string(0, 0, "B"); break; case 2: draw_string(0, 0, "C"); break; } } for (i = 0; i < Data->P[plr].Mission[pad].Joint + 1; i++) { k = 0; if (i == 0) { bud = 49; } else { bud = 160; } for (j = Mission_Capsule; j <= Mission_PrimaryBooster; j++) { hold = Data->P[plr].Mission[pad + i].Hard[j]; switch (j) { case 0: if (hold > -1) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "CAPSULE: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Manned[hold].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Manned[hold].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Manned[hold].Safety + Data->P[plr].Manned[hold].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); // draw_string(144+i*111,116+14*k,"%"); ++k; }; break; case 1: if (hold > -1) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "KICKER: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Misc[hold].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Misc[hold].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Misc[hold].Safety + Data->P[plr].Misc[hold].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); // draw_number(0,0,Data->P[plr].Misc[hold].Safety); // draw_string(144+i*111,116+14*k,"%"); ++k; }; break; case 2: if (hold > -1) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "LM: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Manned[hold].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Manned[hold].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Manned[hold].Safety + Data->P[plr].Manned[hold].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); //draw_number(0,0,Data->P[plr].Manned[hold].Safety); //draw_string(144+i*111,116+14*k,"%"); ++k; }; break; case 3: if (hold > -1) { if (hold < 3) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "PROBE: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Probe[hold].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Probe[hold].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Probe[hold].Safety + Data->P[plr].Probe[hold].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); //draw_number(0,0,Data->P[plr].Probe[hold].Safety); //draw_string(144+i*111,116+14*k,"%"); ++k; } else if (hold == 4) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "DOCKING: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Misc[hold].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Misc[hold].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Misc[hold].Safety + Data->P[plr].Misc[hold].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); //draw_number(0,0,Data->P[plr].Misc[hold].Safety); //draw_string(144+i*111,116+14*k,"%"); ++k; } }; break; case 4: if (hold > -1) { if (hold < 5) { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "ROCKET: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Rocket[hold - 1].Name[0]); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); Data->P[plr].Rocket[hold - 1].Damage != 0 ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", Data->P[plr].Rocket[hold - 1].Safety + Data->P[plr].Rocket[hold - 1].Damage); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); //draw_number(0,0,Data->P[plr].Rocket[hold-1].Safety); //draw_string(144+i*111,116+14*k,"%"); ++k; } else { display::graphics.setForegroundColor(7); draw_string(bud, 109 + 14 * k, "ROCKET: "); display::graphics.setForegroundColor(1); draw_string(0, 0, &Data->P[plr].Rocket[hold - 5].Name[0]); draw_string(0, 0, " W/B"); display::graphics.setForegroundColor(11); draw_string(bud, 116 + 14 * k, "SAFETY FACTOR: "); (Data->P[plr].Rocket[hold - 5].Damage != 0 || Data->P[plr].Rocket[ROCKET_HW_BOOSTERS].Damage != 0) ? display::graphics.setForegroundColor(9) : display::graphics.setForegroundColor(1); //Damaged Equipment && Booster's Safety Mod, Nikakd, 10/8/10 sprintf(&Digit[0], "%d", RocketBoosterSafety(Data->P[plr].Rocket[hold - 5].Safety + Data->P[plr].Rocket[hold - 5].Damage, Data->P[plr].Rocket[ROCKET_HW_BOOSTERS].Safety + Data->P[plr].Rocket[ROCKET_HW_BOOSTERS].Damage)); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%"); // draw_number(0,0,(Data->P[plr].Rocket[hold-5].Safety+Data->P[plr].Rocket[ROCKET_HW_BOOSTERS].Safety)/2); // draw_string(144+i*111,116+14*k,"%"); ++k; } } break; default: break; } } } FadeIn(2, display::graphics.palette(), 10, 0, 0); WaitForMouseUp(); if (HelpFlag) { Help("i156"); // Notification of being an Help } while (1) { key = 0; GetMouse(); if ((x >= 59 && y >= 70 && x <= 116 && y <= 82 && mousebuttons > 0) || key == K_ENTER || key == 'C') { InBox(59, 70, 116, 82); WaitForMouseUp(); OutBox(59, 70, 116, 82); FadeOut(2, display::graphics.palette(), 10, 0, 0); BIG = 0; return; } else if ((x >= 133 && y >= 70 && x <= 195 && y <= 82 && mousebuttons > 0) || key == K_ENTER || key == 'P') { InBox(133, 70, 195, 82); WaitForMouseUp(); OutBox(133, 70, 195, 82); FadeOut(2, display::graphics.palette(), 10, 0, 0); BIG = 1; return; } else if ((x >= 207 && y >= 70 && x <= 264 && y <= 82 && mousebuttons > 0) || key == 'S') { InBox(207, 70, 264, 82); WaitForMouseUp(); OutBox(207, 70, 264, 82); { ClrMiss(plr, pad); } if (Data->P[plr].Mission[pad].MissionCode == Mission_None) { FadeOut(2, display::graphics.palette(), 10, 0, 0); return; } } }; }
void DamProb(char plr, char prog, int chk) { int D_Cost, Saf_Loss, ESafety; char Digit[4], Name[30]; Saf_Loss = D_Cost = ESafety = 0; /* XXX check uninitialized */ FadeOut(2, 10, 0, 0); display::graphics.screen()->clear(); switch (prog) { case 0: D_Cost = Data->P[plr].Probe[chk].DCost; Saf_Loss = Data->P[plr].Probe[chk].Damage; ESafety = Data->P[plr].Probe[chk].Safety; strcpy(Name, Data->P[plr].Probe[chk].Name); break; case 1: D_Cost = Data->P[plr].Rocket[chk].DCost; Saf_Loss = Data->P[plr].Rocket[chk].Damage; ESafety = Data->P[plr].Rocket[chk].Safety; strcpy(Name, Data->P[plr].Rocket[chk].Name); break; case 2: D_Cost = Data->P[plr].Manned[chk].DCost; Saf_Loss = Data->P[plr].Manned[chk].Damage; ESafety = Data->P[plr].Manned[chk].Safety; strcpy(Name, Data->P[plr].Manned[chk].Name); break; case 3: D_Cost = Data->P[plr].Misc[chk].DCost; Saf_Loss = Data->P[plr].Misc[chk].Damage; ESafety = Data->P[plr].Misc[chk].Safety; strcpy(Name, Data->P[plr].Misc[chk].Name); break; default: break; } ShBox(35, 81, 288, 159); InBox(40, 86, 111, 126); InBox(116, 86, 283, 126); IOBox(116, 130, 189, 155); IOBox(201, 130, 274, 155); draw_flag(41, 87, plr); draw_heading(135, 136, "YES", 1, 0); draw_heading(225, 136, "NO", 1, 0); draw_heading(44, 135, "REPAIR", 1, -1); display::graphics.setForegroundColor(6); draw_string(121, 95, "DIRECTOR: "); display::graphics.setForegroundColor(8); if (plr == 0) { draw_string(0, 0, &Data->P[Data->plr[0]].Name[0]); } else { draw_string(0, 0, &Data->P[Data->plr[1]].Name[0]); } display::graphics.setForegroundColor(6); draw_string(121, 104, "DAMAGE: "); display::graphics.setForegroundColor(11); strcat(Name, " PROGRAM"); draw_string(0, 0, &Name[0]); display::graphics.setForegroundColor(6); draw_string(121, 113, "DAMAGE COST: "); display::graphics.setForegroundColor(1); sprintf(&Digit[0], "%d", D_Cost); draw_string(0, 0, &Digit[0]); draw_string(0, 0, " M.B. (OF "); draw_megabucks(0, 0, Data->P[plr].Cash); draw_string(0, 0, ")"); display::graphics.setForegroundColor(6); draw_string(121, 122, "SAFETY LOSS: "); display::graphics.setForegroundColor(1); sprintf(&Digit[0], "%d", Saf_Loss); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "% (FROM "); sprintf(&Digit[0], "%d", ESafety); draw_string(0, 0, &Digit[0]); draw_string(0, 0, "%)"); FadeIn(2, 10, 0, 0); WaitForMouseUp(); while (1) { key = 0; GetMouse(); if (mousebuttons > 0 || key > 0) { if ((x >= 118 && y >= 132 && x <= 187 && y <= 153 && mousebuttons > 0) || key == 'Y') { InBox(118, 132, 187, 153); WaitForMouseUp(); if (key > 0) { delay(150); } Data->P[plr].Cash -= D_Cost; switch (prog) { case 0: Data->P[plr].Probe[chk].DCost = 0; Data->P[plr].Probe[chk].Damage = 0; break; case 1: Data->P[plr].Rocket[chk].DCost = 0; Data->P[plr].Rocket[chk].Damage = 0; break; case 2: Data->P[plr].Manned[chk].DCost = 0; Data->P[plr].Manned[chk].Damage = 0; break; case 3: Data->P[plr].Misc[chk].DCost = 0; Data->P[plr].Misc[chk].Damage = 0; break; default: break; } return; } else if ((x >= 203 && y >= 132 && x <= 272 && y <= 153 && mousebuttons > 0) || key == 'N') { InBox(203, 132, 272, 153); WaitForMouseUp(); if (key > 0) { delay(150); } return; } } } }
void show_netplayerinfo() { int x=0, y=0, i=0, color=0, eff=0; static const char *const eff_strings[]={"trashing","really hurting","seriously affecting","hurting","affecting","tarnishing"}; gr_set_current_canvas(NULL); gr_set_curfont(GAME_FONT); gr_set_fontcolor(255,-1); x=(SWIDTH/2)-FSPACX(120); y=(SHEIGHT/2)-FSPACY(84); gr_settransblend(14, GR_BLEND_NORMAL); gr_setcolor( BM_XRGB(0,0,0) ); gr_rect((SWIDTH/2)-FSPACX(120),(SHEIGHT/2)-FSPACY(84),(SWIDTH/2)+FSPACX(120),(SHEIGHT/2)+FSPACY(84)); gr_settransblend(GR_FADE_OFF, GR_BLEND_NORMAL); // general game information y+=LINE_SPACING; gr_printf(0x8000,y,"%s",Netgame.game_name); #ifndef SHAREWARE y+=LINE_SPACING; gr_printf(0x8000,y,"%s - lvl: %i",Netgame.mission_title,Netgame.levelnum); #endif x+=FSPACX(8); y+=LINE_SPACING*2; unsigned gamemode = Netgame.gamemode; gr_printf(x,y,"game mode: %s",gamemode < (sizeof(GMNames) / sizeof(GMNames[0])) ? GMNames[gamemode] : "INVALID"); int base_flags_left = SWIDTH/2 - FSPACX(15); int flags_x = base_flags_left + FSPACX(30); int letter_spacing = FSPACX(7); int word_spacing = FSPACX(46); if(Netgame.RetroProtocol) { draw_flag("RetroP2P", 1, base_flags_left + word_spacing*0, y); } else if(Netgame.ShortPackets) { draw_flag("ShortPkt", 1, base_flags_left + word_spacing*0, y); } else { draw_flag("LongPkt", 1, base_flags_left + word_spacing*0, y); } char pps_string[16]; sprintf(pps_string, "PPS %d", Netgame.PacketsPerSec); draw_flag(pps_string, 1, base_flags_left + word_spacing*1, y); if(Netgame.SpawnStyle == SPAWN_STYLE_NO_INVUL ) { draw_flag("NoInvul", 1, base_flags_left + word_spacing*2, y); } else if (Netgame.SpawnStyle == SPAWN_STYLE_SHORT_INVUL ) { draw_flag("ShortInv", 1, base_flags_left + word_spacing*2, y); } else if (Netgame.SpawnStyle == SPAWN_STYLE_LONG_INVUL ) { draw_flag("LongInv", 1, base_flags_left + word_spacing*2, y); } else { draw_flag("Preview", 1, base_flags_left + word_spacing*2, y); } set_font_newline(); y+=LINE_SPACING; gr_printf(x,y,"difficulty: %s",MENU_DIFFICULTY_TEXT(Netgame.difficulty)); draw_flag("ColorLgt", Netgame.AllowColoredLighting, base_flags_left + word_spacing*0, y); draw_flag("BrtShips", Netgame.BrightPlayers, base_flags_left + word_spacing*1, y); draw_flag("ConcResp", Netgame.RespawnConcs, base_flags_left + word_spacing*2, y); set_font_newline(); y+=LINE_SPACING; gr_printf(x,y,"level time: %i:%02i:%02i",Players[Player_num].hours_level,f2i(Players[Player_num].time_level) / 60 % 60,f2i(Players[Player_num].time_level) % 60); char disp_string[16]; sprintf(disp_string, "Guns x%d", Netgame.PrimaryDupFactor == 0 ? 1 : Netgame.PrimaryDupFactor); draw_flag(disp_string, Netgame.PrimaryDupFactor > 1, base_flags_left + word_spacing*0, y); sprintf(disp_string, "Msls x%d", Netgame.SecondaryDupFactor == 0 ? 1 : Netgame.SecondaryDupFactor); draw_flag(disp_string, Netgame.SecondaryDupFactor > 1, base_flags_left + word_spacing*1, y); sprintf(disp_string, "Mcap %s", Netgame.SecondaryCapFactor == 0 ? "ALL" : (Netgame.SecondaryCapFactor == 1 ? "6" : "2")); draw_flag(disp_string, Netgame.SecondaryCapFactor > 0, base_flags_left + word_spacing*2, y); set_font_newline(); y+=LINE_SPACING; gr_printf(x,y,"total time: %i:%02i:%02i",Players[Player_num].hours_total,f2i(Players[Player_num].time_total) / 60 % 60,f2i(Players[Player_num].time_total) % 60); set_font_newline(); y+=LINE_SPACING; if (Netgame.KillGoal) gr_printf(x,y,"Kill goal: %d",Netgame.KillGoal*10); gr_printf(base_flags_left, y, "Items: "); draw_flag("L", Netgame.AllowedItems & NETFLAG_DOLASER, flags_x, y); flags_x += letter_spacing; draw_flag("Q", Netgame.AllowedItems & NETFLAG_DOQUAD, flags_x, y); flags_x += letter_spacing; draw_flag("V", Netgame.AllowedItems & NETFLAG_DOVULCAN, flags_x, y); flags_x += letter_spacing; draw_flag("A", Netgame.AllowedItems & NETFLAG_DOVULCANAMMO,flags_x, y); flags_x += letter_spacing; draw_flag("S", Netgame.AllowedItems & NETFLAG_DOSPREAD, flags_x, y); flags_x += letter_spacing; draw_flag("P", Netgame.AllowedItems & NETFLAG_DOPLASMA, flags_x, y); flags_x += letter_spacing; draw_flag("F", Netgame.AllowedItems & NETFLAG_DOFUSION, flags_x, y); flags_x += letter_spacing; draw_flag("C", 1, flags_x, y); flags_x += letter_spacing; draw_flag("H", Netgame.AllowedItems & NETFLAG_DOHOMING, flags_x, y); flags_x += letter_spacing; draw_flag("P", Netgame.AllowedItems & NETFLAG_DOPROXIM, flags_x, y); flags_x += letter_spacing; draw_flag("S", Netgame.AllowedItems & NETFLAG_DOSMART, flags_x, y); flags_x += letter_spacing; draw_flag("M", Netgame.AllowedItems & NETFLAG_DOMEGA, flags_x, y); flags_x += letter_spacing; draw_flag("C", Netgame.AllowedItems & NETFLAG_DOCLOAK, flags_x, y); flags_x += letter_spacing; draw_flag("I", Netgame.AllowedItems & NETFLAG_DOINVUL, flags_x, y); flags_x += letter_spacing; // player information (name, kills, ping, game efficiency) set_font_newline(); y+=LINE_SPACING*3; gr_printf(x,y,"player"); if (Game_mode & GM_MULTI_COOP) gr_printf(x+FSPACX(8)*7,y,"score"); else { gr_printf(x+FSPACX(8)*7,y,"kills"); gr_printf(x+FSPACX(8)*12,y,"deaths"); } gr_printf(x+FSPACX(8)*18,y,"ping"); gr_printf(x+FSPACX(8)*23,y,"efficiency"); if(Netgame.FairColors) selected_player_rgb = player_rgb_all_blue; else if(Netgame.BlackAndWhitePyros) selected_player_rgb = player_rgb_alt; else selected_player_rgb = player_rgb; // process players table for (i=0; i<MAX_PLAYERS; i++) { if (!Players[i].connected) continue; y+=LINE_SPACING; if (Game_mode & GM_TEAM) color=get_team(i); else color=Netgame.players[i].color;//i; gr_set_fontcolor( BM_XRGB(selected_player_rgb[color].r,selected_player_rgb[color].g,selected_player_rgb[color].b),-1 ); gr_printf(x,y,"%s\n",Players[i].callsign); if (Game_mode & GM_MULTI_COOP) gr_printf(x+FSPACX(8)*7,y,"%-6d",Players[i].score); else { gr_printf(x+FSPACX(8)*7,y,"%-6d",Players[i].net_kills_total); gr_printf(x+FSPACX(8)*12,y,"%-6d",Players[i].net_killed_total); } gr_printf(x+FSPACX(8)*18,y,"%-6d",Netgame.players[i].ping + Netgame.players[Player_num].ping); if (i != Player_num) gr_printf(x+FSPACX(8)*23,y,"%d/%d",kill_matrix[Player_num][i],kill_matrix[i][Player_num]); } y+=LINE_SPACING*2+(LINE_SPACING*(MAX_PLAYERS-N_players)); // printf team scores if (Game_mode & GM_TEAM) { gr_set_fontcolor(255,-1); gr_printf(x,y,"team"); gr_printf(x+FSPACX(8)*8,y,"score"); y+=LINE_SPACING; gr_set_fontcolor(BM_XRGB(selected_player_rgb[0].r,selected_player_rgb[0].g,selected_player_rgb[0].b),-1 ); gr_printf(x,y,"%s:",Netgame.team_name[0]); gr_printf(x+FSPACX(8)*8,y,"%i",team_kills[0]); y+=LINE_SPACING; gr_set_fontcolor(BM_XRGB(selected_player_rgb[1].r,selected_player_rgb[1].g,selected_player_rgb[1].b),-1 ); gr_printf(x,y,"%s:",Netgame.team_name[1]); gr_printf(x+FSPACX(8)*8,y,"%i",team_kills[1]); y+=LINE_SPACING*2; } else y+=LINE_SPACING*4; gr_set_fontcolor(255,-1); // additional information about game - ranking eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0); if (eff<0) eff=0; if (!PlayerCfg.NoRankings) { gr_printf(0x8000,y,"Your lifetime efficiency of %d%% (%d/%d)",eff,PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled); y+=LINE_SPACING; if (eff<60) gr_printf(0x8000,y,"is %s your ranking.",eff_strings[eff/10]); else gr_printf(0x8000,y,"is serving you well."); y+=LINE_SPACING; gr_printf(0x8000,y,"your rank is: %s",RankStrings[GetMyNetRanking()]); } }