Exemplo n.º 1
0
void cPict::drawCustomMonstLg(short num, Rect to_rect){
	static const short adj[4] = {0, 8, 4, 12};
	num += adj[animFrame];
	Rect small_monst_rect = {0,0,18,14};
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	OffsetRect(&small_monst_rect,to_rect.left,to_rect.top);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
	
	n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	from_gw = customSheets[n];
	OffsetRect(&small_monst_rect,14,0);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
	
	n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	from_gw = customSheets[n];
	OffsetRect(&small_monst_rect,-14,18);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
	
	n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	from_gw = customSheets[n];
	OffsetRect(&small_monst_rect,14,0);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
}
Exemplo n.º 2
0
void cPict::drawPartyMonstTall(short num, Rect to_rect){
	Rect small_monst_rect = {0,0,18,14};
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	if(!isSheetSet(SHEET_PARTY)) throw xMissingSheet(SHEET_PARTY);
	GWorldPtr from_gw = save;
	
	Rect from_rect = get_custom_rect(num);
	OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
	
	OffsetRect(&small_monst_rect,0,18);
	from_rect = get_custom_rect(num+1);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
}
Exemplo n.º 3
0
// mode 0 normal 1 click
void draw_lb_slot (short which,short mode)
{
	RECT text_rect,from_rect;
 	COLORREF colors = RGB(0,0,102),colors2 = RGB(0,0,0);

	paint_pattern(NULL,1,left_buttons[which][0],3);
	if (left_button_status[which] == 0)
		return;
	text_rect = left_buttons[which][0];
	if (left_button_status[which] >= 10) {
		text_rect.left += 18;
		from_rect = blue_button_from;
		if (mode > 0)
			OffsetRect(&from_rect,from_rect.right - from_rect.left,0);
		rect_draw_some_item(editor_mixed,from_rect,editor_mixed,left_buttons[which][1],0,1);
		}
	if (left_button_status[which] % 10 == 3)
		text_rect.left += 16;
	if (left_button_status[which] % 10 == 2) {
		SelectObject(main_dc,bold_font);
		}
		else OffsetRect(&text_rect,0,2);
	if (mode > 0)
		SetTextColor(main_dc,colors);

	char_win_draw_string(main_dc,text_rect,(char *)data_store->strings_ls[which],0,12);
	SetTextColor(main_dc,colors2);

	SelectObject(main_dc,font);

}
Exemplo n.º 4
0
void cPict::drawPresetTerMap(short num, Rect to_rect){
	Rect from_rect = {0,0,12,12};
	if(!isSheetSet(SHEET_TER_MAP)) throw xMissingSheet(SHEET_TER_MAP);
	GWorldPtr from_gw = map;
	to_rect.right = to_rect.left + 24;
	to_rect.bottom = to_rect.top + 24;
	OffsetRect(&from_rect,12 * (num % 10), 12 * (num / 10));
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 5
0
void cPict::drawPresetScenLg(short num, Rect to_rect){
	if(!isSheetSet(SHEET_SCEN_LG)) throw xMissingSheet(SHEET_SCEN_LG);
	GWorldPtr from_gw = largeScen;
	to_rect.right = to_rect.left + 64;
	to_rect.bottom = to_rect.top + 64;
	Rect from_rect = {0,0,64,64};
	OffsetRect(&from_rect, num * 64, 0);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 6
0
void cPict::drawStatusIcon(short num, Rect to_rect){
	Rect from_rect = {0,0,12,12};
	if(!isSheetSet(SHEET_STATUS)) throw xMissingSheet(SHEET_STATUS);
	GWorldPtr from_gw = status;
	to_rect.right = to_rect.left + 12;
	to_rect.bottom = to_rect.top + 12;
	OffsetRect(&from_rect,12 * (num % 3), 12 * (num / 3));
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 7
0
void cPict::drawPresetBoom(short num, Rect to_rect){
	if(!isSheetSet(SHEET_BOOM)) throw xMissingSheet(SHEET_BOOM);
	GWorldPtr from_gw = boom;
	Rect from_rect = calc_rect(num % 8, num / 8);
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 8
0
void cPict::drawFullSheet(short num, Rect to_rect){
	Rect from_rect;
	if(!isSheetSet(SHEET_FULL,num)) throw xMissingSheet(SHEET_FULL,num);
	GWorldPtr from_gw = largeSheets[num];
	GetPortBounds(from_gw, &from_rect);
	to_rect.right = to_rect.left + (from_rect.right - from_rect.left);
	to_rect.bottom = to_rect.top + (from_rect.bottom - from_rect.top);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 9
0
void cPict::drawPresetScen(short num, Rect to_rect){
	if(!isSheetSet(SHEET_SCEN)) throw xMissingSheet(SHEET_SCEN);
	GWorldPtr from_gw = scen;
	Rect from_rect = {0,0,32,32};
	OffsetRect(&from_rect,32 * (num % 5),32 * (num / 5));
	to_rect.right = to_rect.left + 32;
	to_rect.bottom = to_rect.top + 32;
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 10
0
void cPict::drawPresetDlogLg(short num, Rect to_rect){
	to_rect.right = to_rect.left + 72;
	to_rect.bottom = to_rect.top + 72;
	if(!isSheetSet(SHEET_DLOG)) throw xMissingSheet(SHEET_DLOG);
	GWorldPtr from_gw = dlog;
	Rect from_rect = {0,0,72,72};
	OffsetRect(&from_rect,36 * (num % 4),36 * (num / 4));
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 11
0
void cPict::drawPartyPc(short num, Rect to_rect){
	printf("Drawing graphic %i as a custom space pic.\n",num);
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 32;
	if(!isSheetSet(SHEET_PARTY)) throw xMissingSheet(SHEET_PARTY);
	GWorldPtr from_gw = save;
	Rect from_rect = get_custom_rect(num);
	PaintRect(&to_rect);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 12
0
void cPict::drawCustomTalk(short num, Rect to_rect){
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	to_rect.right = to_rect.left + 16;
	to_rect.bottom = to_rect.top + 32;
	from_rect.right = from_rect.left + 16;
	from_rect.bottom = from_rect.top + 32;
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
	
	n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	from_gw = customSheets[n];
	OffsetRect(&to_rect,16,0);
	from_rect.right = from_rect.left + 16;
	from_rect.bottom = from_rect.top + 32;
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 13
0
void cPict::drawPresetTer(short num, Rect to_rect){
	printf("Getting terrain icon from sheet %i.\n",num / 50);
	if(!isSheetSet(SHEET_TER,num / 50)) throw xMissingSheet(SHEET_TER,num / 50);
	GWorldPtr from_gw = ter[num / 50];
	num = num % 50;
	Rect from_rect = calc_rect(num % 10, num / 10);
	if (to_rect.right - to_rect.left > 28) 
		InsetRect(&to_rect,4,0);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 14
0
void cPict::drawPresetTalk(short num, Rect to_rect){
	num--;
	to_rect.right = to_rect.left + 32;
	to_rect.bottom = to_rect.top + 32;
	if(!isSheetSet(SHEET_TALK)) throw xMissingSheet(SHEET_TALK);
	GWorldPtr from_gw = talk;
	Rect from_rect = {0,0,32,32};
	OffsetRect(&from_rect,32 * (num % 10),32 * (num / 10));
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 15
0
void cPict::drawCustomTer(short num, Rect to_rect){
	printf("Drawing graphic %i as a custom terrain pic.\n",num);
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 32;
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 16
0
//short dest; // 0 - terrain gworld   1 - screen
// if terrain_to_draw is -1, do black
// if terrain_to_draw >= 10000, force to draw graphic which is terrain_to_draw - 10000
void draw_one_terrain_spot (short i,short j,short terrain_to_draw) {
	rectangle where_draw;
	rectangle source_rect;
	sf::Texture* source_gworld;
	short anim_type = 0;
	location l;
	
	l.x = i; l.y = j;
	if(supressing_some_spaces && (l != ok_space[0]) && (l != ok_space[1]) && (l != ok_space[2]) && (l != ok_space[3]))
		return;
	
	where_draw = calc_rect(i,j);
 	where_draw.offset(13,13);
 	if(terrain_to_draw == -1) {
		fill_rect(terrain_screen_gworld, where_draw, sf::Color::Black);
		return;
	}
 	
	if(terrain_to_draw >= 10000) { // force using a specific graphic
		terrain_to_draw -= 10000;
		int which_sheet = terrain_to_draw / 50;
		source_gworld = ResMgr::get<ImageRsrc>("ter" + std::to_string(1 + which_sheet)).get();
		terrain_to_draw %= 50;
		source_rect = calc_rect(terrain_to_draw % 10, terrain_to_draw / 10);
		anim_type = -1;
	}
	else if(univ.scenario.ter_types[terrain_to_draw].picture >= 2000) { // custom
		graf_pos_ref(source_gworld, source_rect) = spec_scen_g.find_graphic(univ.scenario.ter_types[terrain_to_draw].picture - 2000 + (anim_ticks % 4));
		anim_type = 0;
	}
	else if(univ.scenario.ter_types[terrain_to_draw].picture >= 1000) { // custom
		graf_pos_ref(source_gworld, source_rect) = spec_scen_g.find_graphic(univ.scenario.ter_types[terrain_to_draw].picture - 1000);
	}
	else if(univ.scenario.ter_types[terrain_to_draw].picture >= 960) { // animated
		source_gworld = ResMgr::get<ImageRsrc>("teranim").get();
		terrain_to_draw = univ.scenario.ter_types[terrain_to_draw].picture;
		source_rect = calc_rect(4 * ((terrain_to_draw - 960) / 5) + (anim_ticks % 4),(terrain_to_draw - 960) % 5);
		anim_type = 0;
	}
	else {
		terrain_to_draw = univ.scenario.ter_types[terrain_to_draw].picture;
		int which_sheet = terrain_to_draw / 50;
		source_gworld = ResMgr::get<ImageRsrc>("ter" + std::to_string(1 + which_sheet)).get();
		terrain_to_draw %= 50;
		source_rect = calc_rect(terrain_to_draw % 10, terrain_to_draw / 10);
		anim_type = -1;
	}
	
	if(anim_type >= 0) {
		if((is_town()) || (is_out()))
			anim_onscreen = true;
	}
	
	rect_draw_some_item(*source_gworld, source_rect, terrain_screen_gworld, where_draw);
}
Exemplo n.º 17
0
void cPict::drawPresetMissile(short num, Rect to_rect){
	Rect from_rect = {0,0,18,18};
	if(!isSheetSet(SHEET_MISSILE)) throw xMissingSheet(SHEET_MISSILE);
	GWorldPtr from_gw = missile;
	to_rect.right = to_rect.left + 18;
	to_rect.bottom = to_rect.top + 18;
	PaintRect(&to_rect);
	short i = animFrame == 7 ? 0 : animFrame + 1;
	OffsetRect(&from_rect,18 * i, 18 * num);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 18
0
void refresh_shopping()
{
	Rect from_rects[4] = {{0,0,62,279},{62,0,352,253},{62,269,352,279},{352,0,415,279}},to_rect;
	short i;
	
	for (i = 0; i < 4; i++) {
		to_rect = from_rects[i];
		OffsetRect(&to_rect,5,5);
		rect_draw_some_item(talk_gworld,from_rects[i],to_rect,ul);
		}
}
Exemplo n.º 19
0
void cPict::drawPresetTerAnim(short num, Rect to_rect){
	Rect from_rect = calc_rect(4 * (num / 5) + animFrame, num % 5);
	if(!isSheetSet(SHEET_TER_ANIM)) throw xMissingSheet(SHEET_TER_ANIM);
	GWorldPtr from_gw = teranim;
	printf("Getting animated terrain graphic %i from sheet 20", num);
	if (to_rect.right - to_rect.left > 28) {
		InsetRect(&to_rect,4,0);
		to_rect.right = to_rect.left + 28;
	}
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 20
0
void cPict::drawPresetMonstSm(short num, Rect to_rect){
	short m_start_pic = m_pic_index[num].i;
	if(!isSheetSet(SHEET_MONST,m_start_pic / 20)) throw xMissingSheet(SHEET_MONST,m_start_pic / 20);
	GWorldPtr from_gw = monst[m_start_pic / 20];
	m_start_pic = m_start_pic % 20;
	Rect from_rect = calcDefMonstRect(m_start_pic, animFrame);
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 21
0
void cPict::drawPresetMonstWide(short num, Rect to_rect){
	Rect small_monst_rect = {0,0,18,14};
	to_rect.right = to_rect.left + 28; to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	
	short m_start_pic = m_pic_index[num].i;
	if(!isSheetSet(SHEET_MONST,m_start_pic / 20)) throw xMissingSheet(SHEET_MONST,m_start_pic / 20);
	GWorldPtr from_gw = monst[m_start_pic / 20];
	m_start_pic = m_start_pic % 20;
	Rect from_rect = calcDefMonstRect(num, animFrame);
	OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
	
	m_start_pic = m_pic_index[num].i + 1;
	if(!isSheetSet(SHEET_MONST,m_start_pic / 20)) throw xMissingSheet(SHEET_MONST,m_start_pic / 20);
	from_gw = monst[m_start_pic / 20];
	m_start_pic = m_start_pic % 20;
	from_rect = calcDefMonstRect(num, animFrame);
	OffsetRect(&small_monst_rect,14,0);
	rect_draw_some_item(from_gw, from_rect, small_monst_rect, (Point){0,0}, transparent);
}
Exemplo n.º 22
0
void cCustomGraphics::copy_graphic(pic_num_t dest, pic_num_t src, size_t numSlots) {
	if(numSlots < 1) return;
	if(!party_sheet) {
		sf::Image empty;
		empty.create(280, 180, sf::Color::Transparent);
		party_sheet.reset(new sf::Texture);
		party_sheet->create(280, 180);
		party_sheet->update(empty);
		numSheets = 1;
	}
	size_t havePics = count();
	if(havePics < dest + numSlots) {
		int addRows = 1;
		while(havePics + 10 * addRows < dest + numSlots)
			addRows++;
		sf::RenderTexture temp;
		temp.create(280, party_sheet->getSize().y + 36 * addRows);
		temp.clear(sf::Color::Transparent);
		rect_draw_some_item(*party_sheet, rectangle(*party_sheet), temp, rectangle(*party_sheet));
		*party_sheet = temp.getTexture();
	}
	sf::Texture* from_sheet;
	sf::Texture* to_sheet;
	sf::Texture* last_src = nullptr;
	sf::RenderTexture temp;
	rectangle from_rect, to_rect;
	for(size_t i = 0; i < numSlots; i++) {
		graf_pos_ref(from_sheet, from_rect) = find_graphic(src + i);
		graf_pos_ref(to_sheet, to_rect) = find_graphic(dest + i, true);
		if(to_sheet != last_src) {
			if(last_src) *last_src = temp.getTexture();
			last_src = to_sheet;
			temp.create(to_sheet->getSize().x, to_sheet->getSize().y);
			rect_draw_some_item(*to_sheet, rectangle(*to_sheet), temp, rectangle(*to_sheet));
		}
		rect_draw_some_item(*from_sheet, from_rect, temp, to_rect);
	}
	*last_src = temp.getTexture();
}
Exemplo n.º 23
0
void cPict::drawCustomTerMap(short num, Rect to_rect){
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	from_rect.right = from_rect.left + 12;
	from_rect.bottom = from_rect.top + 12;
	num /= 1000; num--;
	OffsetRect(&from_rect, (num / 3) * 12, (num % 3) * 12);
	to_rect.right = to_rect.left + 24;
	to_rect.bottom = to_rect.top + 24;
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0});
}
Exemplo n.º 24
0
void cPict::drawCustomMissile(short num, Rect to_rect){
	num += animFrame % 4;
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	from_rect.right = from_rect.left + 18;
	from_rect.bottom = from_rect.top + 18;
	if(animFrame >= 4) OffsetRect(&from_rect, 0, 18);
	PaintRect(&to_rect);
	InsetRect(&to_rect,5,9);
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 25
0
void load_main_screen()
{

	short i;
 	RECT map_from_orig = {372,0,380,8},map_from,brush_to = {0,0,8,8};

	main_dc = GetDC(mainPtr);

	SelectObject(main_dc,font);
	SetBkMode(main_dc,TRANSPARENT);


	SetStretchBltMode(main_dc,STRETCH_DELETESCANS);

	terrain_buttons_gworld = CreateCompatibleBitmap(main_dc,terrain_buttons_rect.right,terrain_buttons_rect.bottom);

	ter_draw_gworld = CreateCompatibleBitmap(main_dc,terrain_rect.right,terrain_rect.bottom);

	dlg_buttons_gworld = load_pict(2000);
	mixed_gworld = load_pict(903);

	run_startup_g();


	world_screen = terrain_rect;
	OffsetRect(&world_screen,TER_RECT_UL_X,TER_RECT_UL_Y);

	for (i = 0; i < 10; i++)
		monst_gworld[i] = load_pict(1100 + i);
	for (i = 0; i < 6; i++)
		terrain_gworld[i] = load_pict(800 + i);
	small_terrain_gworld = load_pict(904);
	editor_mixed = load_pict(906);
	anim_gworld = load_pict(820);
	field_gworld = load_pict(821);
	talkfaces_gworld = load_pict(860);
	items_gworld = load_pict(901);
	tiny_obj_gworld = load_pict(900);
	dlogpics_gworld = load_pict(850);
	dialog_pattern_gworld = CreateCompatibleBitmap(main_dc,192,256);
	pattern_gworld = CreateCompatibleBitmap(main_dc,192,256);
	//draw_main_screen();

	for (i = 0; i < 25; i++) {
		map_from = map_from_orig;
		OffsetRect(&map_from,8 * (i / 10),8 * (i % 10));
		map_bitmap[i] = CreateCompatibleBitmap(main_dc,8,8);
		rect_draw_some_item(mixed_gworld,map_from,map_bitmap[i],brush_to,0,0);
		map_brush[i] = CreatePatternBrush(map_bitmap[i]);
		}
}
Exemplo n.º 26
0
void cPict::drawCustomMonstSm(short num, Rect to_rect){
	static const short adj[4] = {0, 2, 1, 3};
	num += adj[animFrame];
	printf("Drawing graphic %i as a custom space pic.\n",num);
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 32;
	PaintRect(&to_rect);
	
	Rect from_rect;
	short n = get_custom_rect(num,from_rect);
	if(!isSheetSet(SHEET_CUSTOM,n)) throw xMissingSheet(SHEET_CUSTOM,n);
	GWorldPtr from_gw = customSheets[n];
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 27
0
void draw_items(HDC hdc)
{
	short i;
	RECT source_rect,draw_rect;
	location where_draw;
	short pic_num;

	for (i = 0; i < 64; i++) {
		if (town.preset_items[i].item_code >= 0) {
			where_draw.x = town.preset_items[i].item_loc.x - cen_x + 4;
			where_draw.y = town.preset_items[i].item_loc.y - cen_y + 4;
			pic_num = scen_item_list.scen_items[town.preset_items[i].item_code].graphic_num;
			if ((where_draw.x >= 0) && (where_draw.x <= 8) &&
				(where_draw.y >= 0) && (where_draw.y <= 8))  {

					if (pic_num >= 150) {
						source_rect = get_custom_rect(pic_num - 150);
						draw_rect = calc_rect(where_draw.x,where_draw.y);
						OffsetRect(&draw_rect,8,8);
						rect_draw_some_item(spec_scen_g,source_rect, ter_draw_gworld, draw_rect, 1, 0);
  						}
						else {
							source_rect = get_item_template_rect(pic_num);
							draw_rect = calc_rect(where_draw.x,where_draw.y);
							OffsetRect(&draw_rect,8,8);
							if (pic_num >= 45) {
								draw_rect.top += 9;
								draw_rect.bottom -= 9;
								draw_rect.left += 5;
								draw_rect.right -= 5;
								}
							rect_draw_some_item((pic_num < 45) ? items_gworld : tiny_obj_gworld,source_rect, ter_draw_gworld, draw_rect, 1, 0);
							}
					}
			}
		}
}
Exemplo n.º 28
0
/* Draw a bitmap in the world window. hor in 0 .. 8, vert in 0 .. 8,
	object is ptr. to bitmap to be drawn, and masking is for Copybits. */
void Draw_Some_Item ( GWorldPtr src_gworld,RECT src_rect,GWorldPtr targ_gworld,location target,
char masked,short main_win)
{
RECT	destrec;

	if ((target.x < 0) || (target.x > 8) || (target.y < 0) || (target.y > 8))
		return;
	destrec.left = 8 + BITMAP_WIDTH * target.x;
	destrec.right = destrec.left + BITMAP_WIDTH;
	destrec.top = 8 + BITMAP_HEIGHT * target.y;
	destrec.bottom = destrec.top + BITMAP_HEIGHT;

	destrec.left = destrec.right - (src_rect.right - src_rect.left);
	destrec.top = destrec.bottom - (src_rect.bottom - src_rect.top);

	rect_draw_some_item(src_gworld,src_rect,ter_draw_gworld,destrec,masked,0);

}
Exemplo n.º 29
0
void cPict::drawPresetItem(short num, Rect to_rect){
	to_rect.right = to_rect.left + 28;
	to_rect.bottom = to_rect.top + 36;
	PaintRect(&to_rect);
	GWorldPtr from_gw;
	Rect from_rect = {0,0,18,18};
	if (num < 45) {
		if(!isSheetSet(SHEET_ITEM)) throw xMissingSheet(SHEET_ITEM);
		from_gw = item;
		from_rect = calc_rect(num % 5, num / 5);
	}else{
		if(!isSheetSet(SHEET_TINY_ITEM)) throw xMissingSheet(SHEET_TINY_ITEM);
		from_gw = tinyItem;
		InsetRect(&to_rect,5,9);
		OffsetRect(&from_rect,18 * (num % 10), 18 * (num / 10));
	}
	rect_draw_some_item(from_gw, from_rect, to_rect, (Point){0,0}, transparent);
}
Exemplo n.º 30
0
// klugde for speed ...exactly like place location above, but just writes location
void place_just_location()
{
	char draw_str[256];
	RECT from_rect,draw_rect,erase_rect;
	HBITMAP store_bmp;
	HDC hdc;

	erase_rect.left = terrain_rects[255].left + 17;
	erase_rect.right = RIGHT_AREA_WIDTH - 1;
	erase_rect.top = terrain_rects[255].top + 12 - 9;
	erase_rect.bottom = erase_rect.top + 12;
	paint_pattern(terrain_buttons_gworld,0,erase_rect,1);

	hdc = CreateCompatibleDC(main_dc);

	SetBkMode(hdc,TRANSPARENT);
	SelectObject(hdc,small_bold_font);
	store_bmp = (HBITMAP)SelectObject(hdc,terrain_buttons_gworld);

	draw_rect.left = terrain_rects[255].left + 20;
	draw_rect.top = terrain_rects[255].top;
	if (overall_mode < 60)
		sprintf(draw_str,"Center: x = %d, y = %d  ",cen_x,cen_y);
		else {
			draw_rect.left = 5;
			draw_rect.top = terrain_rects[255].top + 28;
			sprintf(draw_str,"Click terrain to edit. ");
			}

	draw_rect.bottom = draw_rect.top + 14;
	draw_rect.right = draw_rect.left + 200;
	win_draw_string(hdc,draw_rect,draw_str,0,12);
	SelectObject(hdc,store_bmp);


	from_rect = terrain_buttons_rect;
	from_rect.top = erase_rect.top;
	from_rect.bottom = erase_rect.bottom;
	draw_rect = from_rect;
	OffsetRect(&draw_rect,RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
	rect_draw_some_item(terrain_buttons_gworld,from_rect,
		terrain_buttons_gworld,draw_rect,0,1);
	DeleteObject(hdc);
}