void draw_overlay_compass(long base_x, long base_y) { unsigned short flg_mem; flg_mem = lbDisplay.DrawFlags; LbTextSetFont(winfont); lbDisplay.DrawFlags |= Lb_SPRITE_TRANSPAR4; LbTextSetWindow(0, 0, MyScreenWidth, MyScreenHeight); int units_per_px; units_per_px = (16*status_panel_width + 70) / 140; int tx_units_per_px; tx_units_per_px = (22 * units_per_px) / LbTextLineHeight(); int w,h; w = (LbSprFontCharWidth(lbFontPtr,'/')*tx_units_per_px/16) / 2; h = (LbSprFontCharHeight(lbFontPtr,'/')*tx_units_per_px/16) / 2 + 2*units_per_px/16; struct PlayerInfo *player; player = get_my_player(); struct Camera *cam; cam = player->acamera; int center_x, center_y; int shift_x, shift_y; center_x = base_x*units_per_px/16 + PANNEL_MAP_RADIUS*units_per_px/16; center_y = base_y*units_per_px/16 + PANNEL_MAP_RADIUS*units_per_px/16; shift_x = ((-(PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = ((-(PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, gui_strings[877]); } shift_x = (( (PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = (( (PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, gui_strings[879]); } shift_x = (( (PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = ((-(PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, gui_strings[878]); } shift_x = ((-(PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = (( (PANNEL_MAP_RADIUS*7/8)*units_per_px/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, gui_strings[880]); } lbDisplay.DrawFlags = flg_mem; }
void draw_overlay_compass(long base_x, long base_y) { unsigned short flg_mem; flg_mem = lbDisplay.DrawFlags; LbTextSetFont(winfont); lbDisplay.DrawFlags |= Lb_SPRITE_TRANSPAR4; LbTextSetWindow(0, 0, MyScreenWidth, MyScreenHeight); int units_per_px; units_per_px = (16*status_panel_width + 140/2) / 140; int tx_units_per_px; tx_units_per_px = (22 * units_per_px) / LbTextLineHeight(); int w,h; w = (LbSprFontCharWidth(lbFontPtr,'/')*tx_units_per_px/16) / 2; h = (LbSprFontCharHeight(lbFontPtr,'/')*tx_units_per_px/16) / 2 + 2*units_per_px/16; struct PlayerInfo *player; player = get_my_player(); const struct Camera *cam; cam = player->acamera; int center_x, center_y; int shift_x, shift_y; center_x = base_x*units_per_px/16 + MapDiagonalLength/2; center_y = base_y*units_per_px/16 + MapDiagonalLength/2; shift_x = (-(MapDiagonalLength*7/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = (-(MapDiagonalLength*7/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, get_string(GUIStr_MapN)); } shift_x = ( (MapDiagonalLength*7/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = ( (MapDiagonalLength*7/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, get_string(GUIStr_MapS)); } shift_x = ( (MapDiagonalLength*7/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = (-(MapDiagonalLength*7/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, get_string(GUIStr_MapE)); } shift_x = (-(MapDiagonalLength*7/16) * LbCosL(cam->orient_a)) >> LbFPMath_TrigmBits; shift_y = ( (MapDiagonalLength*7/16) * LbSinL(cam->orient_a)) >> LbFPMath_TrigmBits; if (LbScreenIsLocked()) { LbTextDrawResized(center_x + shift_x - w, center_y + shift_y - h, tx_units_per_px, get_string(GUIStr_MapW)); } lbDisplay.DrawFlags = flg_mem; }