Esempio n. 1
0
void FirmOffensive2::put_info(int refreshFlag)
{
    if( !should_show_info() )
        return;

    vga.active_buf->put_bitmap( INFO_X1, INFO_Y1, image_gameif.read("MISSBASE") );

    int hitPoints;
    String str;
    int offsetX = 0;
    int offsetY = 0;

    if( hit_points > (float)0 && hit_points < (float)1 )
        hitPoints = 1;		// display 1 for value between 0 and 1
    else
        hitPoints = (int) hit_points;

    if ( max_hit_points() )
    {
        offsetX = -35;
        offsetY = -14;
        short*	hitPointBitmap =NULL;
        int ratio = hitPoints *40 / (int)max_hit_points();
        int size = hitPoints *76 / (int)max_hit_points();

        //106 x 35 --- 15 to 90 ie. 0 to 40
        hitPointBitmap = (short *)mem_add( BitmapW::size(15 +size, 35) );
        if (ratio <11)
            vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B2"));
        else if (ratio <40)
            vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B3"));
        else
            vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B4"));

        vga.active_buf->read_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, INFO_X1 +94 +20 +size +offsetX, INFO_Y1 +80 +offsetY, hitPointBitmap );
        vga.active_buf->put_bitmap_trans( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, image_spict.read("MTR_B1"));
        vga.active_buf->put_bitmapW( INFO_X1 +80 +20 +offsetX, INFO_Y1 +49 +offsetY, hitPointBitmap );
        mem_del( hitPointBitmap );

        font_whbl.center_put( INFO_X1 +43, INFO_Y1 +45, INFO_X1 +65, INFO_Y1 +57, m.format((int)hitPoints,4));
        font_whbl.center_put( INFO_X1 +169, INFO_Y1 +45, INFO_X1 +191, INFO_Y1 +57, m.format((int)max_hit_points(),4) );
    }

    // font_whbl.center_put( INFO_X1 +12, INFO_Y1 +9, INFO_X2, INFO_Y1 +21, "Offensive Building 3", 0, 1 );
    font_whbl.center_put( INFO_X1 +12, INFO_Y1 +9, INFO_X2, INFO_Y1 +21, firm_name(), 0, 1 );

    FirmBuild* firmBuild = firm_res.get_build(firm_build_id);
    short *colorRemapTable = firmBuild->get_color_remap_table(nation_recno, firm_array.selected_recno == firm_recno);
    colorRemapTable = firm_res.calc_color_remap_table( colorRemapTable, 1.0f );

    FirmBitmap* firmBitmap = firm_res.get_bitmap(firmBuild->first_bitmap(1));
    if( firmBitmap )
    {
        Bitmap* bitmapPtr = (Bitmap *) firmBuild->res_bitmap.read_imported(firmBitmap->bitmap_ptr);

        int x1;
        int y1;
        int srcX2;
        int srcY2;

        if (config.building_size == 1)
        {
            x1 = INFO_X1 +130;
            y1 = INFO_Y1 +140;
        }
        else
        {
            x1 = INFO_X1 +120;
            y1 = INFO_Y1 +142;
        }

        x1 += firmBitmap->offset_x;
        y1 += firmBitmap->offset_y;
        int x2 = x1 + bitmapPtr->get_width() -1;
        int y2 = y1 + bitmapPtr->get_height() -1;
        int srcX1 = max(x1, INFO_X1+15)-x1;
        int srcY1 = 0;

        if (config.building_size == 1)
        {
            srcX2 = min(x2, INFO_X2)-x1;
            srcY2 = min(y2, INFO_Y1+227)-y1;
        }
        else
        {
            srcX2 = min(x2, INFO_X2)-x1;
            srcY2 = min(y2, INFO_Y2)-y1;
        }

        vga.active_buf->put_bitmap_area_trans_remap_decompress(x1, y1, (char *) bitmapPtr, srcX1, srcY1, srcX2, srcY2, colorRemapTable);
    }
    /*
    	if (config.building_size == 1)
    		return;

    	firmBitmap = firm_res.get_bitmap(firmBuild->first_bitmap(firm_cur_frame[0]));
    	if( firmBitmap && firmBitmap->display_layer == 1 )
    	{
    		Bitmap* bitmapPtr = (Bitmap *) firmBuild->res_bitmap.read_imported(firmBitmap->bitmap_ptr);

    		int x1 = INFO_X1 +120 +firmBitmap->offset_x;
    		int y1 = INFO_Y1 +142 +firmBitmap->offset_y;
    		int x2 = x1 + bitmapPtr->get_width() -1;
    		int y2 = y1 + bitmapPtr->get_height() -1;
    		int srcX1 = max(x1, INFO_X1+15)-x1;
    		int srcY1 = 0;
    		int srcX2 = min(x2, INFO_X2)-x1;
    		int srcY2 = min(y2, INFO_Y2)-y1;

    		vga.active_buf->put_bitmap_area_trans_remap_decompress(x1, y1, (char *) bitmapPtr, srcX1, srcY1, srcX2, srcY2, colorRemapTable);

    	//	vga_back.put_bitmap_trans_remap_decompress(INFO_X1 +113 +firmBitmap->offset_x,
    	//		INFO_Y1 +158 +firmBitmap->offset_y, bitmapPtr, colorRemapTable);
    	}*/
}
Esempio n. 2
0
//--------- Begin of function Firm::disp_basic_info ---------//
//
void Firm::disp_basic_info(int dispY1, int refreshFlag)
{
	//------- display the name of the firm --------//

	if( refreshFlag == INFO_REPAINT )
	{
		vga_util.d3_panel_up( INFO_X1, dispY1, INFO_X2, dispY1+21 );

		if( nation_recno )
		{
			font_san.center_put( INFO_X1+21, dispY1, INFO_X2-2, dispY1+21, firm_name() );

			char *nationPict = image_button.get_ptr("V_COLCOD");

			vga_front.put_bitmap_remap(INFO_X1+3, dispY1+2, nationPict, game.get_color_remap_table(nation_recno, 0) );
		}
		else
		{
			font_san.center_put( INFO_X1, dispY1, INFO_X2-2, dispY1+21, firm_name() );
		}
	}

	dispY1+=23;

	//------- display hit points and buttons -------//

	int sliderX1, sliderX2;

	if( under_construction )
		sliderX1 = INFO_X1+34;		// there is only one button in the contruction mode, so the slider is longer
	else
		sliderX1 = INFO_X1+64;

	sliderX2 = INFO_X2-64;

	int showRepairIcon = builder_recno && !under_construction && should_show_info();

	if( refreshFlag == INFO_REPAINT )
	{
		button_sell.reset();
		button_destruct.reset();

		vga_util.d3_panel_up( INFO_X1, dispY1, INFO_X2, dispY1+26 );

		if( nation_array.player_recno &&
			 nation_recno == nation_array.player_recno )
		{
			if( under_construction || !can_sell() )
			{
				button_destruct.paint( INFO_X1+4, dispY1+1, "V_DEM-U", "V_DEM-D" );	// Destruct

				if( under_construction )
					button_destruct.set_help_code( "CANCELBLD" );
				else
					button_destruct.set_help_code( "DESTFIRM" );
			}

			if( !under_construction && can_sell() )
			{
				button_sell.paint( INFO_X1+4, dispY1+1, "V_SEL-U", "V_SEL-D" );	// Sell
				button_sell.set_help_code( "SELLFIRM" );
			}
		}

		if( showRepairIcon )
		{
			button_builder.paint( INFO_X1+30, dispY1+1, "REPAIRU", "REPAIRD" );	// Builder
			button_builder.set_help_code( "REPAIR" );
		}
	}
	else	//--------- INFO_UPDATE --------//
	{
		if( showRepairIcon != button_builder.enable_flag )
		{
			if( showRepairIcon )
			{
				button_builder.paint( INFO_X1+30, dispY1+1, "REPAIRU", "REPAIRD" );	// Builder
				button_builder.set_help_code( "REPAIR" );
			}
			else
				button_builder.hide();
		}
	}

	disp_hit_point(dispY1);
}