- Split rect_draw_some_item into two versions, one to draw to the screen and on to draw to a GWorld.

- Temporary fix for the fact that PC #6 is often accessed.
- I think that's all...

git-svn-id: http://openexile.googlecode.com/svn/trunk@94 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
2009-06-11 22:07:17 +00:00
parent 6070ed2e05
commit 5001931033
21 changed files with 453 additions and 504 deletions

View File

@@ -296,7 +296,7 @@ void draw_main_screen()
// title_from is a Rect constant // title_from is a Rect constant
OffsetRect(&dest_rec,20,0); OffsetRect(&dest_rec,20,0);
rect_draw_some_item (title_gworld,source_rect, title_gworld,dest_rec, 1,1); rect_draw_some_item (title_gworld,source_rect,dest_rec,(Point){0,0},transparent);
// The first title_gworld is the from, the gworld to draw from // The first title_gworld is the from, the gworld to draw from
// and source_rect is the rectangle in that gworld to draw // and source_rect is the rectangle in that gworld to draw
// The 1,1 at the end means ... // The 1,1 at the end means ...
@@ -333,25 +333,25 @@ void draw_main_screen()
//Off0setRect(&dest_rect,0,45); //Off0setRect(&dest_rect,0,45);
OffsetRect(&dest_rect,0,21); OffsetRect(&dest_rect,0,21);
if (file_in_mem == true) if (file_in_mem == true)
char_win_draw_string(mainPtr,dest_rect,"Click on character to edit it.",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Click on character to edit it.",0,10);
else else
char_win_draw_string(mainPtr,dest_rect,"Select Open from File menu.",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Select Open from File menu.",0,10);
if(file_in_mem == true && party_in_scen==true && scen_items_loaded==false){ if(file_in_mem == true && party_in_scen==true && scen_items_loaded==false){
OffsetRect(&dest_rect,200,0); OffsetRect(&dest_rect,200,0);
char_win_draw_string(mainPtr,dest_rect,"Warning: Scenario item data could not be loaded.",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Warning: Scenario item data could not be loaded.",0,10);
OffsetRect(&dest_rect,-200,0); OffsetRect(&dest_rect,-200,0);
} }
OffsetRect(&dest_rect,0,12); OffsetRect(&dest_rect,0,12);
if (file_in_mem == true) if (file_in_mem == true)
char_win_draw_string(mainPtr,dest_rect,"Press 'I' button to identify item, and 'D' button to drop item.",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Press 'I' button to identify item, and 'D' button to drop item.",0,10);
TextSize(12); TextSize(12);
OffsetRect(&dest_rect,0,16); OffsetRect(&dest_rect,0,16);
if (file_in_mem == true) if (file_in_mem == true)
char_win_draw_string(mainPtr,dest_rect,"Back up save file before editing it!",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Back up save file before editing it!",0,10);
TextSize(10); TextSize(10);
TextFace(0); TextFace(0);
OffsetRect(&dest_rect,280,0); OffsetRect(&dest_rect,280,0);
char_win_draw_string(mainPtr,dest_rect,"Created in 1997 by Spiderweb Software, Inc.",0,10,true); char_win_draw_string(mainPtr,dest_rect,"Created in 1997 by Spiderweb Software, Inc.",0,10);
TextFace(bold); TextFace(bold);
@@ -427,11 +427,11 @@ void draw_items(short clear_first)
// else sprintf((char *) to_draw, "%d %d %d %d", // else sprintf((char *) to_draw, "%d %d %d %d",
// name_rect.left,name_rect.right,name_rect.top,name_rect.bottom); // name_rect.left,name_rect.right,name_rect.top,name_rect.bottom);
char_win_draw_string(mainPtr,item_string_rects[i][0],(char *) to_draw,0,10,true); char_win_draw_string(mainPtr,item_string_rects[i][0],(char *) to_draw,0,10);
//Draw id/drop buttons //Draw id/drop buttons
rect_draw_some_item(invenbtn_gworld,d_from,invenbtn_gworld,item_string_rects[i][1],1,1); rect_draw_some_item(invenbtn_gworld,d_from,item_string_rects[i][1],(Point){0,0},transparent);
rect_draw_some_item(invenbtn_gworld,i_from,invenbtn_gworld,item_string_rects[i][2],1,1); rect_draw_some_item(invenbtn_gworld,i_from,item_string_rects[i][2],(Point){0,0},transparent);
} }
frame_dlog_rect(GetWindowPort(mainPtr),pc_info_rect,1); // re draw entire frame frame_dlog_rect(GetWindowPort(mainPtr),pc_info_rect,1); // re draw entire frame
frame_dlog_rect(GetWindowPort(mainPtr),name_rect,1); // draw the frame frame_dlog_rect(GetWindowPort(mainPtr),name_rect,1); // draw the frame
@@ -464,15 +464,15 @@ void display_party(short mode,short clear_first)
no_party_rect=pc_info_rect; no_party_rect=pc_info_rect;
no_party_rect.top+=5; no_party_rect.top+=5;
no_party_rect.left+=5; no_party_rect.left+=5;
char_win_draw_string(mainPtr,no_party_rect,"No party loaded.",0,10,true); char_win_draw_string(mainPtr,no_party_rect,"No party loaded.",0,10);
} }
else { else {
from_rect = pc_info_rect; from_rect = pc_info_rect;
from_rect.top = from_rect.bottom - 14; from_rect.top = from_rect.bottom - 14;
if (party_in_scen == false) if (party_in_scen == false)
char_win_draw_string(mainPtr,from_rect,"Party not in a scenario.",0,10,true); char_win_draw_string(mainPtr,from_rect,"Party not in a scenario.",0,10);
else else
char_win_draw_string(mainPtr,from_rect,"Party is in a scenario.",0,10,true); char_win_draw_string(mainPtr,from_rect,"Party is in a scenario.",0,10);
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
if (i == current_active_pc) // active pc is drawn in blue if (i == current_active_pc) // active pc is drawn in blue
ForeColor(blueColor); ForeColor(blueColor);
@@ -481,7 +481,7 @@ void display_party(short mode,short clear_first)
from_rect = (current_pressed_button == i) ? ed_buttons_from[1] : ed_buttons_from[0]; from_rect = (current_pressed_button == i) ? ed_buttons_from[1] : ed_buttons_from[0];
if ((current_pressed_button < 0) || (current_pressed_button == i)) if ((current_pressed_button < 0) || (current_pressed_button == i))
rect_draw_some_item(buttons_gworld,from_rect,buttons_gworld,pc_area_buttons[i][0],0,1); rect_draw_some_item(buttons_gworld,from_rect,pc_area_buttons[i][0],(Point){0,0});
ForeColor(blackColor); ForeColor(blackColor);
// pc_record_type is the records that contains chaarcters // pc_record_type is the records that contains chaarcters
@@ -490,7 +490,7 @@ void display_party(short mode,short clear_first)
from_rect = from_base; from_rect = from_base;
// draw PC graphic // draw PC graphic
OffsetRect(&from_rect,56 * (univ.party[i].which_graphic / 8),36 * (univ.party[i].which_graphic % 8)); OffsetRect(&from_rect,56 * (univ.party[i].which_graphic / 8),36 * (univ.party[i].which_graphic % 8));
rect_draw_some_item(pc_gworld,from_rect,pc_gworld,pc_area_buttons[i][1],1,1); rect_draw_some_item(pc_gworld,from_rect,pc_area_buttons[i][1],(Point){0,0},transparent);
//frame_dlog_rect(GetWindowPort(mainPtr),pc_area_buttons[i][1],0); //frame_dlog_rect(GetWindowPort(mainPtr),pc_area_buttons[i][1],0);
// draw name // draw name
@@ -505,7 +505,7 @@ void display_party(short mode,short clear_first)
} }
ForeColor(whiteColor); ForeColor(whiteColor);
win_draw_string(GetWindowPort(mainPtr),pc_area_buttons[i][2],to_draw,1,10,true); win_draw_string(GetWindowPort(mainPtr),pc_area_buttons[i][2],to_draw,1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
@@ -514,7 +514,7 @@ void display_party(short mode,short clear_first)
if( (univ.party[i].name.length()) > 12) if( (univ.party[i].name.length()) > 12)
TextSize(8); TextSize(8);
ForeColor(blackColor); ForeColor(blackColor);
win_draw_string(GetWindowPort(mainPtr),name_rect,to_draw,1,10,true); win_draw_string(GetWindowPort(mainPtr),name_rect,to_draw,1,10);
TextSize(10); TextSize(10);
} }
if ((current_pressed_button < 0) || (current_pressed_button == i)) if ((current_pressed_button < 0) || (current_pressed_button == i))
@@ -524,18 +524,18 @@ void display_party(short mode,short clear_first)
if (i == current_active_pc) { if (i == current_active_pc) {
//Draw in race //Draw in race
if (univ.party[i].race == 0) if (univ.party[i].race == 0)
char_win_draw_string(mainPtr,pc_race_rect,"Human ",1,10,true); char_win_draw_string(mainPtr,pc_race_rect,"Human ",1,10);
if (univ.party[i].race == 1) if (univ.party[i].race == 1)
char_win_draw_string(mainPtr,pc_race_rect,"Nephilim ",1,10,true); char_win_draw_string(mainPtr,pc_race_rect,"Nephilim ",1,10);
if (univ.party[i].race == 2) if (univ.party[i].race == 2)
char_win_draw_string(mainPtr,pc_race_rect,"Slithzerikai ",1,10,true); char_win_draw_string(mainPtr,pc_race_rect,"Slithzerikai ",1,10);
// Draw in skills // Draw in skills
sprintf((char *) to_draw, "Skills:"); sprintf((char *) to_draw, "Skills:");
win_draw_string(GetWindowPort(mainPtr),skill_rect,to_draw,0,10,true); win_draw_string(GetWindowPort(mainPtr),skill_rect,to_draw,0,10);
sprintf((char *) to_draw, "Hp: %d/%d Sp: %d/%d",univ.party[i].cur_health,univ.party[i].max_health,univ.party[i].cur_sp, sprintf((char *) to_draw, "Hp: %d/%d Sp: %d/%d",univ.party[i].cur_health,univ.party[i].max_health,univ.party[i].cur_sp,
univ.party[i].max_sp); univ.party[i].max_sp);
win_draw_string(GetWindowPort(mainPtr),hp_sp_rect,to_draw,0,10,true); win_draw_string(GetWindowPort(mainPtr),hp_sp_rect,to_draw,0,10);
TextSize(9); TextSize(9);
@@ -547,10 +547,10 @@ void display_party(short mode,short clear_first)
temp_rect.left = pc_skills_rect[k].left + 80; temp_rect.left = pc_skills_rect[k].left + 80;
get_str(to_draw,9,string_num); get_str(to_draw,9,string_num);
win_draw_string(GetWindowPort(mainPtr),pc_skills_rect[k],to_draw,0,9,true); win_draw_string(GetWindowPort(mainPtr),pc_skills_rect[k],to_draw,0,9);
sprintf((char *) skill_value,"%d",univ.party[i].skills[k]); sprintf((char *) skill_value,"%d",univ.party[i].skills[k]);
win_draw_string(GetWindowPort(mainPtr),temp_rect,skill_value,0,9,true); win_draw_string(GetWindowPort(mainPtr),temp_rect,skill_value,0,9);
//frame_dlog_rect(GetWindowPort(mainPtr),pc_skills_rect[k],0); //frame_dlog_rect(GetWindowPort(mainPtr),pc_skills_rect[k],0);
string_num+=2; string_num+=2;
} }
@@ -560,7 +560,7 @@ void display_party(short mode,short clear_first)
TextSize(10); TextSize(10);
TextFace(bold); TextFace(bold);
sprintf((char *) to_draw, "Status:"); sprintf((char *) to_draw, "Status:");
win_draw_string(GetWindowPort(mainPtr),status_rect,to_draw,0,10,true); win_draw_string(GetWindowPort(mainPtr),status_rect,to_draw,0,10);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
@@ -568,82 +568,82 @@ void display_party(short mode,short clear_first)
//frame_dlog_rect(GetWindowPort(mainPtr),pc_status_rect[k],0); //frame_dlog_rect(GetWindowPort(mainPtr),pc_status_rect[k],0);
if (univ.party[i].status[0] > 0) if (univ.party[i].status[0] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Poisoned Weap.",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Poisoned Weap.",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[1] > 0) if (univ.party[i].status[1] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Blessed",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Blessed",0,9);
cur_rect++; cur_rect++;
} }
else if(univ.party[i].status[1] < 0) else if(univ.party[i].status[1] < 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Cursed",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Cursed",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[2] > 0) if (univ.party[i].status[2] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Poisoned",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Poisoned",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[3] > 0) if (univ.party[i].status[3] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Hasted",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Hasted",0,9);
cur_rect++; cur_rect++;
} }
else if(univ.party[i].status[3] < 0) else if(univ.party[i].status[3] < 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Slowed",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Slowed",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[4] > 0) if (univ.party[i].status[4] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Invulnerable",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Invulnerable",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[5] > 0) if (univ.party[i].status[5] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Magic Resistant",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Magic Resistant",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[6] > 0) if (univ.party[i].status[6] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Webbed",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Webbed",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[7] > 0) if (univ.party[i].status[7] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Diseased",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Diseased",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[8] > 0) if (univ.party[i].status[8] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Sanctury",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Sanctury",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[9] > 0) if (univ.party[i].status[9] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Dumbfounded",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Dumbfounded",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[10] > 0) if (univ.party[i].status[10] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Martyr's Shield",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Martyr's Shield",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[11] > 0) if (univ.party[i].status[11] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Asleep",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Asleep",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[12] > 0) if (univ.party[i].status[12] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Paralyzed",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Paralyzed",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].status[13] > 0) if (univ.party[i].status[13] > 0)
if(cur_rect <= 9) { if(cur_rect <= 9) {
char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Acid",0,9,true); char_win_draw_string(mainPtr,pc_status_rect[cur_rect],"Acid",0,9);
cur_rect++; cur_rect++;
} }
//end pc status section //end pc status section
@@ -652,7 +652,7 @@ void display_party(short mode,short clear_first)
TextSize(10); TextSize(10);
TextFace(bold); TextFace(bold);
sprintf((char *) to_draw, "Traits:"); sprintf((char *) to_draw, "Traits:");
win_draw_string(GetWindowPort(mainPtr),traits_rect,to_draw,0,10,true); win_draw_string(GetWindowPort(mainPtr),traits_rect,to_draw,0,10);
//for(k = 0 ; k < 16; k++) //for(k = 0 ; k < 16; k++)
//frame_dlog_rect(GetWindowPort(mainPtr),pc_traits_rect[k],0); //frame_dlog_rect(GetWindowPort(mainPtr),pc_traits_rect[k],0);
TextSize(9); TextSize(9);
@@ -660,78 +660,78 @@ void display_party(short mode,short clear_first)
cur_rect=0; cur_rect=0;
if (univ.party[i].traits[0] == 1) if (univ.party[i].traits[0] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Toughness",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Toughness",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[1] == 1) if (univ.party[i].traits[1] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Magically Apt",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Magically Apt",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[2] == 1) if (univ.party[i].traits[2] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Ambidextrous",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Ambidextrous",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[3] == 1) if (univ.party[i].traits[3] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Nimble Fingers",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Nimble Fingers",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[4] == 1) if (univ.party[i].traits[4] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Cave Lore",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Cave Lore",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[5] == 1) if (univ.party[i].traits[5] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Woodsman",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Woodsman",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[6] == 1) if (univ.party[i].traits[6] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Good Constitution",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Good Constitution",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[7] == 1) if (univ.party[i].traits[7] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Highly Alert",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Highly Alert",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[8] == 1) if (univ.party[i].traits[8] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Exceptional Str.",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Exceptional Str.",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[9] == 1) if (univ.party[i].traits[9] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Recuperation",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Recuperation",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[10] == 1) if (univ.party[i].traits[10] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Sluggish",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Sluggish",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[11] == 1) if (univ.party[i].traits[11] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Magically Inept",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Magically Inept",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[12] == 1) if (univ.party[i].traits[12] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Frail",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Frail",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[13] == 1) if (univ.party[i].traits[13] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Chronic Disease",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Chronic Disease",0,9);
cur_rect++; cur_rect++;
} }
if (univ.party[i].traits[14] == 1) if (univ.party[i].traits[14] == 1)
if(cur_rect <= 15) { if(cur_rect <= 15) {
char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Bad Back",0,9,true); char_win_draw_string(mainPtr,pc_traits_rect[cur_rect],"Bad Back",0,9);
cur_rect++; cur_rect++;
} }
@@ -741,7 +741,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Alive ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Alive ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -749,7 +749,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Dead ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Dead ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -757,7 +757,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Dust ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Dust ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -765,7 +765,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Stone ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Stone ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -773,7 +773,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Fled ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Fled ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -781,7 +781,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextSize(9); TextSize(9);
TextFace(0); TextFace(0);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Surface ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Surface ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -789,7 +789,7 @@ void display_party(short mode,short clear_first)
ForeColor(whiteColor); ForeColor(whiteColor);
TextFace(0); TextFace(0);
TextSize(9); TextSize(9);
char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Absent ",1,10,true); char_win_draw_string(mainPtr,pc_area_buttons[i][3],"Absent ",1,10);
TextFace(bold); TextFace(bold);
TextSize(10); TextSize(10);
break; break;
@@ -810,23 +810,23 @@ void display_party(short mode,short clear_first)
//frame_dlog_rect(GetWindowPort(mainPtr),edit_rect[i][0],0); //frame_dlog_rect(GetWindowPort(mainPtr),edit_rect[i][0],0);
//frame_dlog_rect(GetWindowPort(mainPtr),edit_rect[i][1],0); //frame_dlog_rect(GetWindowPort(mainPtr),edit_rect[i][1],0);
from_rect = (current_pressed_button == i + 10) ? ed_buttons_from[1] : ed_buttons_from[0]; from_rect = (current_pressed_button == i + 10) ? ed_buttons_from[1] : ed_buttons_from[0];
rect_draw_some_item(buttons_gworld,from_rect,buttons_gworld,edit_rect[i][0],0,1); rect_draw_some_item(buttons_gworld,from_rect,edit_rect[i][0],(Point){0,0});
ForeColor(whiteColor); ForeColor(whiteColor);
switch(i) { switch(i) {
case 0: case 0:
char_win_draw_string(mainPtr,edit_rect[0][1]," Add Mage Spells ",0,10,true); char_win_draw_string(mainPtr,edit_rect[0][1]," Add Mage Spells ",0,10);
break; break;
case 1: case 1:
char_win_draw_string(mainPtr,edit_rect[1][1]," Add Priest Spells ",0,10,true); char_win_draw_string(mainPtr,edit_rect[1][1]," Add Priest Spells ",0,10);
break; break;
case 2: case 2:
char_win_draw_string(mainPtr,edit_rect[2][1]," Edit Traits",0,10,true); char_win_draw_string(mainPtr,edit_rect[2][1]," Edit Traits",0,10);
break; break;
case 3: case 3:
char_win_draw_string(mainPtr,edit_rect[3][1]," Edit Skills",0,10,true); char_win_draw_string(mainPtr,edit_rect[3][1]," Edit Skills",0,10);
break; break;
case 4: case 4:
char_win_draw_string(mainPtr,edit_rect[4][1]," Edit XP",0,10,true); char_win_draw_string(mainPtr,edit_rect[4][1]," Edit XP",0,10);
break; break;
default: default:
break; break;

View File

@@ -127,8 +127,7 @@ int main(void)
init_fileio(); init_fileio();
init_main_buttons(); init_main_buttons();
Set_up_win(); Set_up_win();
Point p = {0,0}; init_graph_tool(redraw_screen);
init_graph_tool(redraw_screen,&p);
init_snd_tool(); init_snd_tool();
find_quickdraw(); find_quickdraw();
set_pixel_depth(); set_pixel_depth();

View File

@@ -410,7 +410,7 @@ void run_startup_g() {
SetPortWindowPort(mainPtr); SetPortWindowPort(mainPtr);
OffsetRect(&dest_rect,-25,-25); OffsetRect(&dest_rect,-25,-25);
pict_to_draw = load_pict("edsplash.png"); pict_to_draw = load_pict("edsplash.png");
rect_draw_some_item(pict_to_draw, pict_rect, pict_to_draw, dest_rect, 1, 1); rect_draw_some_item(pict_to_draw, pict_rect, dest_rect,(Point){0,0}, transparent);
ReleaseResource((Handle) pict_to_draw); ReleaseResource((Handle) pict_to_draw);
play_sound(-95); play_sound(-95);
EventRecord event; EventRecord event;
@@ -554,7 +554,7 @@ void draw_lb_slot (short which,short mode) {
from_rect = blue_button_from; from_rect = blue_button_from;
if (mode > 0) if (mode > 0)
OffsetRect(&from_rect,from_rect.right - from_rect.left,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); rect_draw_some_item(editor_mixed,from_rect,left_buttons[which][1],(Point){0,0});
} }
if (left_button_status[which] % 10 == 3) if (left_button_status[which] % 10 == 3)
text_rect.left += 16; text_rect.left += 16;
@@ -565,7 +565,7 @@ void draw_lb_slot (short which,short mode) {
else OffsetRect(&text_rect,0,2); else OffsetRect(&text_rect,0,2);
if (mode > 0) if (mode > 0)
ForeColor(blueColor); ForeColor(blueColor);
char_win_draw_string(mainPtr,text_rect,(char *)strings_ls[which],0,12,true); char_win_draw_string(mainPtr,text_rect,(char *)strings_ls[which],0,12);
ForeColor(blackColor); ForeColor(blackColor);
//char_win_draw_string(mainPtr,text_rect,"FIsh.",1,12); //char_win_draw_string(mainPtr,text_rect,"FIsh.",1,12);
@@ -597,7 +597,7 @@ void draw_rb_slot (short which,short mode) {
if (mode > 0) if (mode > 0)
ForeColor(redColor); ForeColor(redColor);
char_win_draw_string(mainPtr,text_rect,(char *)strings_rs[which],0,12,true); char_win_draw_string(mainPtr,text_rect,(char *)strings_rs[which],0,12);
ForeColor(blackColor); ForeColor(blackColor);
TextSize(10); TextSize(10);
TextFace(bold); TextFace(bold);
@@ -623,13 +623,13 @@ void set_up_terrain_buttons() {
if (pic >= 1000) { if (pic >= 1000) {
ter_from = get_custom_rect(pic % 1000); ter_from = get_custom_rect(pic % 1000);
rect_draw_some_item(spec_scen_g, rect_draw_some_item(spec_scen_g,
ter_from,terrain_buttons_gworld,terrain_rects[i],0,0); ter_from,terrain_buttons_gworld,terrain_rects[i]);
} }
else if (pic < 400) { else if (pic < 400) {
pic = pic % 50; pic = pic % 50;
OffsetRect(&ter_from,28 * (pic % 10), 36 * (pic / 10)); OffsetRect(&ter_from,28 * (pic % 10), 36 * (pic / 10));
rect_draw_some_item(terrain_gworld[scenario.ter_types[i].picture/50], rect_draw_some_item(terrain_gworld[scenario.ter_types[i].picture/50],
ter_from,terrain_buttons_gworld,terrain_rects[i],0,0); ter_from,terrain_buttons_gworld,terrain_rects[i]);
} }
else { else {
pic = pic % 50; pic = pic % 50;
@@ -638,7 +638,7 @@ void set_up_terrain_buttons() {
ter_from.top = 36 * (pic % 5); ter_from.top = 36 * (pic % 5);
ter_from.bottom = ter_from.top + 36; ter_from.bottom = ter_from.top + 36;
rect_draw_some_item(anim_gworld, rect_draw_some_item(anim_gworld,
ter_from,terrain_buttons_gworld,terrain_rects[i],0,0); ter_from,terrain_buttons_gworld,terrain_rects[i]);
} }
small_i = get_small_icon(i); small_i = get_small_icon(i);
@@ -654,7 +654,7 @@ void set_up_terrain_buttons() {
tiny_to.top = tiny_to.bottom - 7; tiny_to.top = tiny_to.bottom - 7;
tiny_to.left = tiny_to.right - 7; tiny_to.left = tiny_to.right - 7;
if (small_i > 0 && small_i < 255) if (small_i > 0 && small_i < 255)
rect_draw_some_item(editor_mixed,tiny_from,terrain_buttons_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,terrain_buttons_gworld,tiny_to);
} }
break; break;
case DRAW_MONST: case DRAW_MONST:
@@ -694,7 +694,7 @@ void set_up_terrain_buttons() {
// palette_to.top, palette_to.left, palette_to.bottom, palette_to.right); // palette_to.top, palette_to.left, palette_to.bottom, palette_to.right);
if(good_palette_buttons[editing_town][j][i]){ if(good_palette_buttons[editing_town][j][i]){
//printf("Drawing button %i at col %i, row %i\n",editing_town?town_buttons[j][i]:out_buttons[j][i],i,j); //printf("Drawing button %i at col %i, row %i\n",editing_town?town_buttons[j][i]:out_buttons[j][i],i,j);
rect_draw_some_item(editor_mixed,palette_from,terrain_buttons_gworld,palette_to,1,0); rect_draw_some_item(editor_mixed,palette_from,terrain_buttons_gworld,palette_to,transparent);
} }
OffsetRect(&palette_to,0,17); OffsetRect(&palette_to,0,17);
} }
@@ -743,7 +743,7 @@ void draw_terrain(){
draw_one_terrain_spot(q,r,t_to_draw); draw_one_terrain_spot(q,r,t_to_draw);
if(is_spot(cen_x + q - 4,cen_y + r - 4)) if(is_spot(cen_x + q - 4,cen_y + r - 4))
Draw_Some_Item(fields_gworld, calc_rect(4, 0), ter_draw_gworld, where_draw, 1, 0); Draw_Some_Item(fields_gworld, calc_rect(4, 0), ter_draw_gworld, where_draw, transparent);
which_pt.x = cen_x + q - 4; which_pt.x = cen_x + q - 4;
which_pt.y =cen_y + r - 4; which_pt.y =cen_y + r - 4;
@@ -758,7 +758,7 @@ void draw_terrain(){
from_rect = start_button_from; from_rect = start_button_from;
to_rect = tiny_to; to_rect = tiny_to;
to_rect.left -= 14; to_rect.left -= 14;
rect_draw_some_item(editor_mixed,from_rect,ter_draw_gworld,to_rect,0,0); rect_draw_some_item(editor_mixed,from_rect,ter_draw_gworld,to_rect);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
if ((editing_town == false) if ((editing_town == false)
@@ -769,27 +769,27 @@ void draw_terrain(){
from_rect = start_button_from; from_rect = start_button_from;
to_rect = tiny_to; to_rect = tiny_to;
to_rect.left -= 14; to_rect.left -= 14;
rect_draw_some_item(editor_mixed,from_rect,ter_draw_gworld,to_rect,0,0); rect_draw_some_item(editor_mixed,from_rect,ter_draw_gworld,to_rect);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
small_i = get_small_icon(t_to_draw); small_i = get_small_icon(t_to_draw);
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (small_i % 10),7 * (small_i / 10)); OffsetRect(&tiny_from,7 * (small_i % 10),7 * (small_i / 10));
if (small_i > 0) { if (small_i > 0) {
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
if (is_special(cen_x + q - 4,cen_y + r - 4) == true) { if (is_special(cen_x + q - 4,cen_y + r - 4) == true) {
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (7),7 * (0)); OffsetRect(&tiny_from,7 * (7),7 * (0));
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
if ((t_to_draw == 7) || (t_to_draw == 10) || (t_to_draw == 13) || (t_to_draw == 16)) { if ((t_to_draw == 7) || (t_to_draw == 10) || (t_to_draw == 13) || (t_to_draw == 16)) {
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (3),7 * (2)); OffsetRect(&tiny_from,7 * (3),7 * (2));
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
//if (is_s_d(cen_x + q - 4,cen_y + r - 4) == true) { //if (is_s_d(cen_x + q - 4,cen_y + r - 4) == true) {
@@ -800,7 +800,7 @@ void draw_terrain(){
(cen_y + r - 4 == current_terrain.wandering_locs[i].y)) { (cen_y + r - 4 == current_terrain.wandering_locs[i].y)) {
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (2),7 * (1)); OffsetRect(&tiny_from,7 * (2),7 * (1));
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
i = 4; i = 4;
} }
@@ -812,7 +812,7 @@ void draw_terrain(){
if ((scenario.boats[i].which_town == cur_town) && if ((scenario.boats[i].which_town == cur_town) &&
(scenario.boats[i].loc.x == cen_x + q - 4) && (scenario.boats[i].loc.x == cen_x + q - 4) &&
(scenario.boats[i].loc.y == cen_y + r - 4)) (scenario.boats[i].loc.y == cen_y + r - 4))
Draw_Some_Item(vehicle_gworld,boat_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(vehicle_gworld,boat_rect,ter_draw_gworld,where_draw,transparent);
} }
for (i = 0; i < 30; i++) { for (i = 0; i < 30; i++) {
@@ -821,7 +821,7 @@ void draw_terrain(){
if ((scenario.horses[i].which_town == cur_town) && if ((scenario.horses[i].which_town == cur_town) &&
(scenario.horses[i].loc.x == cen_x + q - 4) && (scenario.horses[i].loc.x == cen_x + q - 4) &&
(scenario.horses[i].loc.y == cen_y + r - 4)) (scenario.horses[i].loc.y == cen_y + r - 4))
Draw_Some_Item(vehicle_gworld,source_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(vehicle_gworld,source_rect,ter_draw_gworld,where_draw,transparent);
} }
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
@@ -829,7 +829,7 @@ void draw_terrain(){
(cen_y + r - 4 == town->start_locs[i].y)) { (cen_y + r - 4 == town->start_locs[i].y)) {
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (6 + i),7 * (1)); OffsetRect(&tiny_from,7 * (6 + i),7 * (1));
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
} }
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
@@ -837,38 +837,38 @@ void draw_terrain(){
(cen_y + r - 4 == town->wandering_locs[i].y)) { (cen_y + r - 4 == town->wandering_locs[i].y)) {
tiny_from = base_small_button_from; tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (2),7 * (1)); OffsetRect(&tiny_from,7 * (2),7 * (1));
rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,ter_draw_gworld,tiny_to);
OffsetRect(&tiny_to,0,-7); OffsetRect(&tiny_to,0,-7);
i = 4; i = 4;
} }
if (is_web(cen_x + q - 4,cen_y + r - 4) == true) { if (is_web(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(5,0); from_rect = calc_rect(5,0);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
if (is_crate(cen_x + q - 4,cen_y + r - 4) == true) { if (is_crate(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(6,0); from_rect = calc_rect(6,0);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
if (is_barrel(cen_x + q - 4,cen_y + r - 4) == true) { if (is_barrel(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(7,0); from_rect = calc_rect(7,0);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
if (is_fire_barrier(cen_x + q - 4,cen_y + r - 4) == true) { if (is_fire_barrier(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(0,2); from_rect = calc_rect(0,2);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
if (is_quickfire(cen_x + q - 4,cen_y + r - 4) == true) { if (is_quickfire(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(7,1); from_rect = calc_rect(7,1);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
if (is_force_barrier(cen_x + q - 4,cen_y + r - 4) == true) { if (is_force_barrier(cen_x + q - 4,cen_y + r - 4) == true) {
from_rect = calc_rect(2,2); from_rect = calc_rect(2,2);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
if (is_sfx(cen_x + q - 4,cen_y + r - 4,i)) { if (is_sfx(cen_x + q - 4,cen_y + r - 4,i)) {
from_rect = calc_rect(i,3); from_rect = calc_rect(i,3);
Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,1,0); Draw_Some_Item(fields_gworld,from_rect,ter_draw_gworld,where_draw,transparent);
} }
for (x = 0; x < town->max_items(); x++) for (x = 0; x < town->max_items(); x++)
if ((cen_x + q - 4 == town->preset_items[x].loc.x) && if ((cen_x + q - 4 == town->preset_items[x].loc.x) &&
@@ -954,7 +954,7 @@ void draw_terrain(){
//to_rect = world_screen; //to_rect = world_screen;
//OffsetRect(&to_rect,TER_RECT_UL_X,TER_RECT_UL_Y); //OffsetRect(&to_rect,TER_RECT_UL_X,TER_RECT_UL_Y);
rect_draw_some_item(ter_draw_gworld,terrain_rect,ter_draw_gworld,world_screen,0,1); rect_draw_some_item(ter_draw_gworld,terrain_rect,world_screen,(Point){0,0});
} }
void draw_monsts() { void draw_monsts() {
@@ -978,7 +978,7 @@ void draw_monsts() {
source_rect = get_custom_rect((scenario.scen_monsters[town->creatures(i).number].picture_num + k) % 1000); source_rect = get_custom_rect((scenario.scen_monsters[town->creatures(i).number].picture_num + k) % 1000);
store_loc.x += k % width; store_loc.x += k % width;
store_loc.y += k / width; store_loc.y += k / width;
Draw_Some_Item(spec_scen_g, source_rect, ter_draw_gworld, store_loc, 1, 0); Draw_Some_Item(spec_scen_g, source_rect, ter_draw_gworld, store_loc, transparent);
} }
else if (scenario.scen_monsters[town->creatures(i).number].picture_num < 1000) { else if (scenario.scen_monsters[town->creatures(i).number].picture_num < 1000) {
m_start_pic = m_pic_index[scenario.scen_monsters[town->creatures(i).number].picture_num].i + k; m_start_pic = m_pic_index[scenario.scen_monsters[town->creatures(i).number].picture_num].i + k;
@@ -987,7 +987,7 @@ void draw_monsts() {
source_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10); source_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
store_loc.x += k % width; store_loc.x += k % width;
store_loc.y += k / width; store_loc.y += k / width;
Draw_Some_Item(from_gworld, source_rect, ter_draw_gworld, store_loc, 1, 0); Draw_Some_Item(from_gworld, source_rect, ter_draw_gworld, store_loc, transparent);
} }
} }
} }
@@ -1032,7 +1032,7 @@ void draw_items() {
source_rect = get_custom_rect(pic_num - 150); source_rect = get_custom_rect(pic_num - 150);
dest_rect = calc_rect(where_draw.x,where_draw.y); dest_rect = calc_rect(where_draw.x,where_draw.y);
rect_draw_some_item(spec_scen_g, rect_draw_some_item(spec_scen_g,
source_rect, ter_draw_gworld, dest_rect, 1, 0); source_rect, ter_draw_gworld, dest_rect, transparent);
} }
else { else {
source_rect = get_item_template_rect(pic_num); source_rect = get_item_template_rect(pic_num);
@@ -1045,7 +1045,7 @@ void draw_items() {
dest_rect.right -= 5; dest_rect.right -= 5;
} }
rect_draw_some_item((pic_num < 45) ? items_gworld : tiny_obj_gworld, rect_draw_some_item((pic_num < 45) ? items_gworld : tiny_obj_gworld,
source_rect, ter_draw_gworld, dest_rect, 1, 0); source_rect, ter_draw_gworld, dest_rect,transparent);
} }
} }
} }
@@ -1097,7 +1097,7 @@ void draw_one_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
source_gworld = terrain_gworld[picture_wanted / 50]; source_gworld = terrain_gworld[picture_wanted / 50];
} }
Draw_Some_Item(source_gworld, source_rect, ter_draw_gworld, where_draw, 0, 0); Draw_Some_Item(source_gworld, source_rect, ter_draw_gworld, where_draw);
} }
void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) { void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
@@ -1127,7 +1127,7 @@ void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
} }
else if (picture_wanted >= 1000) { else if (picture_wanted >= 1000) {
from_rect = get_custom_rect(picture_wanted % 1000); from_rect = get_custom_rect(picture_wanted % 1000);
rect_draw_some_item(spec_scen_g, from_rect, ter_draw_gworld, dest_rect, 0, 0); rect_draw_some_item(spec_scen_g, from_rect, ter_draw_gworld, dest_rect);
} }
else if (picture_wanted >= 400) { else if (picture_wanted >= 400) {
source_gworld = anim_gworld; source_gworld = anim_gworld;
@@ -1144,7 +1144,7 @@ void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
//source_rect.top = 36 * (picture_wanted % 5); //source_rect.top = 36 * (picture_wanted % 5);
//source_rect.bottom = source_rect.top + 36; //source_rect.bottom = source_rect.top + 36;
OffsetRect(&from_rect,(picture_wanted / 5) * 24 + 1,(picture_wanted % 5) * 6 + 1 + 156); OffsetRect(&from_rect,(picture_wanted / 5) * 24 + 1,(picture_wanted % 5) * 6 + 1 + 156);
rect_draw_some_item(small_ter_gworld, from_rect, ter_draw_gworld, dest_rect, 0, 0); rect_draw_some_item(small_ter_gworld, from_rect, ter_draw_gworld, dest_rect);
//rect_draw_some_item(source_gworld, source_rect, ter_draw_gworld, dest_rect, 0, 0); //rect_draw_some_item(source_gworld, source_rect, ter_draw_gworld, dest_rect, 0, 0);
} }
} }
@@ -1152,7 +1152,7 @@ void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
//source_rect = get_template_rect(terrain_to_draw); //source_rect = get_template_rect(terrain_to_draw);
//source_gworld = terrain_gworld[picture_wanted / 50]; //source_gworld = terrain_gworld[picture_wanted / 50];
OffsetRect(&from_rect,(picture_wanted % 10) * 6 + 1,(picture_wanted / 10) * 6 + 1); OffsetRect(&from_rect,(picture_wanted % 10) * 6 + 1,(picture_wanted / 10) * 6 + 1);
rect_draw_some_item(small_ter_gworld, from_rect, ter_draw_gworld, dest_rect, 0, 0); rect_draw_some_item(small_ter_gworld, from_rect, ter_draw_gworld, dest_rect);
} }
break; break;
} }
@@ -1161,7 +1161,7 @@ void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw) {
/* Draw a bitmap in the world window. hor in 0 .. 8, vert in 0 .. 8, /* 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. */ 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, void Draw_Some_Item ( GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,location target,
char masked,short main_win) { short mode) {
Rect destrec; Rect destrec;
if ((target.x < 0) || (target.x > 8) || (target.y < 0) || (target.y > 8)) if ((target.x < 0) || (target.x > 8) || (target.y < 0) || (target.y > 8))
@@ -1174,7 +1174,7 @@ void Draw_Some_Item ( GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,l
destrec.left = destrec.right - (src_rect.right - src_rect.left); destrec.left = destrec.right - (src_rect.right - src_rect.left);
destrec.top = destrec.bottom - (src_rect.bottom - src_rect.top); destrec.top = destrec.bottom - (src_rect.bottom - src_rect.top);
rect_draw_some_item(src_gworld,src_rect,ter_draw_gworld,destrec,masked,0); rect_draw_some_item(src_gworld,src_rect,ter_draw_gworld,destrec,mode);
} }
@@ -1298,7 +1298,7 @@ void place_location() {
if (picture_wanted >= 1000) { if (picture_wanted >= 1000) {
source_rect = get_custom_rect(picture_wanted % 1000); source_rect = get_custom_rect(picture_wanted % 1000);
rect_draw_some_item(spec_scen_g, rect_draw_some_item(spec_scen_g,
source_rect,terrain_buttons_gworld,draw_rect,0,0); source_rect,terrain_buttons_gworld,draw_rect);
} }
else if (picture_wanted >= 400) { else if (picture_wanted >= 400) {
picture_wanted -= 400; picture_wanted -= 400;
@@ -1306,12 +1306,12 @@ void place_location() {
source_rect.right = source_rect.left + 28; source_rect.right = source_rect.left + 28;
source_rect.top = 36 * (picture_wanted % 5); source_rect.top = 36 * (picture_wanted % 5);
source_rect.bottom = source_rect.top + 36; source_rect.bottom = source_rect.top + 36;
rect_draw_some_item(anim_gworld,source_rect,terrain_buttons_gworld,draw_rect,0,0); rect_draw_some_item(anim_gworld,source_rect,terrain_buttons_gworld,draw_rect);
} }
else { else {
source_rect = get_template_rect(current_terrain_type); source_rect = get_template_rect(current_terrain_type);
rect_draw_some_item(terrain_gworld[picture_wanted / 50],source_rect, rect_draw_some_item(terrain_gworld[picture_wanted / 50],source_rect,
terrain_buttons_gworld,draw_rect,0,0); terrain_buttons_gworld,draw_rect);
} }
short small_i = get_small_icon(current_terrain_type); short small_i = get_small_icon(current_terrain_type);
Rect tiny_to = draw_rect; Rect tiny_to = draw_rect;
@@ -1320,13 +1320,12 @@ void place_location() {
Rect tiny_from = base_small_button_from; Rect tiny_from = base_small_button_from;
OffsetRect(&tiny_from,7 * (small_i % 10),7 * (small_i / 10)); OffsetRect(&tiny_from,7 * (small_i % 10),7 * (small_i / 10));
if (small_i > 0 && small_i < 255) if (small_i > 0 && small_i < 255)
rect_draw_some_item(editor_mixed,tiny_from,terrain_buttons_gworld,tiny_to,0,0); rect_draw_some_item(editor_mixed,tiny_from,terrain_buttons_gworld,tiny_to);
} }
draw_rect = terrain_buttons_rect; draw_rect = terrain_buttons_rect;
OffsetRect(&draw_rect,RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y); OffsetRect(&draw_rect,RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
rect_draw_some_item(terrain_buttons_gworld,terrain_buttons_rect, rect_draw_some_item(terrain_buttons_gworld,terrain_buttons_rect,draw_rect,(Point){0,0});
terrain_buttons_gworld,draw_rect,0,1);
} }
// klugde for speed ...exactly like place location above, but just writes location // klugde for speed ...exactly like place location above, but just writes location
@@ -1361,8 +1360,7 @@ void place_just_location() {
from_rect.bottom = erase_rect.bottom; from_rect.bottom = erase_rect.bottom;
draw_rect = from_rect; draw_rect = from_rect;
OffsetRect(&draw_rect,RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y); OffsetRect(&draw_rect,RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
rect_draw_some_item(terrain_buttons_gworld,from_rect, rect_draw_some_item(terrain_buttons_gworld,from_rect,draw_rect,(Point){0,0});
terrain_buttons_gworld,draw_rect,0,1);
} }
void set_string(char *string,char *string2) { void set_string(char *string,char *string2) {

View File

@@ -18,8 +18,7 @@ void force_tiny_redraw();
void redraw_selected_ter(); void redraw_selected_ter();
void draw_one_terrain_spot (short i,short j,ter_num_t terrain_to_draw); void draw_one_terrain_spot (short i,short j,ter_num_t terrain_to_draw);
void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw); void draw_one_tiny_terrain_spot (short i,short j,ter_num_t terrain_to_draw);
void Draw_Some_Item ( GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,location target, void Draw_Some_Item ( GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,location target,short mode = srcCopy);
char masked,short main_win);
//void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect,char masked,short main_win); //void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect,char masked,short main_win);
Rect get_template_rect (unsigned short type_wanted); Rect get_template_rect (unsigned short type_wanted);
void draw_frames(); void draw_frames();

View File

@@ -101,7 +101,7 @@ int main() {
load_graphics(); load_graphics();
init_dialogs(); init_dialogs();
init_graph_tool(redraw_screen,NULL); init_graph_tool(redraw_screen);
cen_x = 18; cen_x = 18;
cen_y = 18; cen_y = 18;

View File

@@ -100,8 +100,7 @@ short terrain_there[9][9]; // this is an optimization variabel. Keeps track of w
// is in the terrain spot, so things don't get redrawn. // is in the terrain spot, so things don't get redrawn.
// 0 - 299 just terrain graphic in place // 0 - 299 just terrain graphic in place
// 300 - blackness // 300 - blackness
// -1 - nothign worth saving // -1 - nothign worth saving
short startup_anim_pos = 43;
long anim_ticks = 0; long anim_ticks = 0;
@@ -395,7 +394,7 @@ void plop_fancy_startup()
// ReleaseResource((Handle) pict_to_draw); // ReleaseResource((Handle) pict_to_draw);
pict_to_draw = load_pict("spidlogo.png"); pict_to_draw = load_pict("spidlogo.png");
GetPortBounds(pict_to_draw,&from_rect); GetPortBounds(pict_to_draw,&from_rect);
rect_draw_some_item(pict_to_draw, from_rect, pict_to_draw, logo_from, 0, 1); rect_draw_some_item(pict_to_draw, from_rect, logo_from,ul);
DisposeGWorld(pict_to_draw); DisposeGWorld(pict_to_draw);
RgnHandle wholeRegion = NewRgn(); RgnHandle wholeRegion = NewRgn();
@@ -457,7 +456,7 @@ void plop_fancy_startup()
// ReleaseResource((Handle) pict_to_draw); // ReleaseResource((Handle) pict_to_draw);
pict_to_draw = load_pict("startsplash.png"); pict_to_draw = load_pict("startsplash.png");
GetPortBounds(pict_to_draw,&from_rect); GetPortBounds(pict_to_draw,&from_rect);
rect_draw_some_item(pict_to_draw, from_rect, pict_to_draw, intro_from, 0, 1); rect_draw_some_item(pict_to_draw, from_rect, intro_from,ul);
DisposeGWorld(pict_to_draw); DisposeGWorld(pict_to_draw);
// NSetPalette(mainPtr,old_palette,pmAllUpdates); // NSetPalette(mainPtr,old_palette,pmAllUpdates);
@@ -559,13 +558,13 @@ void draw_startup(short but_type)
tileImage(r4,bg_gworld,bg[4]); tileImage(r4,bg_gworld,bg[4]);
to_rect = startup_from[0]; to_rect = startup_from[0];
OffsetRect(&to_rect,-13,5); OffsetRect(&to_rect,-13,5);
rect_draw_some_item(startup_gworld,startup_from[0],startup_gworld,to_rect,0,1); rect_draw_some_item(startup_gworld,startup_from[0],to_rect,ul);
to_rect = startup_top; to_rect = startup_top;
OffsetRect(&to_rect,ul.h,ul.v); OffsetRect(&to_rect,ul.h,ul.v);
//PaintRect(&to_rect); //PaintRect(&to_rect);
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
rect_draw_some_item(startup_gworld,startup_from[1],startup_gworld,startup_button[i],0,1); rect_draw_some_item(startup_gworld,startup_from[1],startup_button[i],ul);
draw_start_button(i,but_type); draw_start_button(i,but_type);
} }
draw_startup_anim(); draw_startup_anim();
@@ -576,15 +575,16 @@ void draw_startup(short but_type)
void draw_startup_anim() void draw_startup_anim()
{ {
static short startup_anim_pos = 43; // was a global variable, but since it's only used in this function I moved it here
Rect anim_to = {4,1,44,276},anim_from; Rect anim_to = {4,1,44,276},anim_from;
Rect anim_size = {0,0,48,301}; Rect anim_size = {0,0,48,301};
anim_from = anim_to; anim_from = anim_to;
OffsetRect(&anim_from,-1,-4 + startup_anim_pos); OffsetRect(&anim_from,-1,-4 + startup_anim_pos);
startup_anim_pos = (startup_anim_pos + 1) % 542; startup_anim_pos = (startup_anim_pos + 1) % 542;
rect_draw_some_item(startup_button_orig,anim_size,startup_button_g,anim_size,0,0); rect_draw_some_item(startup_button_orig,anim_size,startup_button_g,anim_size);
rect_draw_some_item(anim_mess,anim_from,startup_button_g,anim_to,1,0); rect_draw_some_item(anim_mess,anim_from,startup_button_g,anim_to,transparent);
rect_draw_some_item(startup_button_g,anim_size,startup_button_g,startup_button[5],0,1); rect_draw_some_item(startup_button_g,anim_size,startup_button[5],ul);
} }
void draw_startup_stats() void draw_startup_stats()
@@ -605,8 +605,7 @@ void draw_startup_stats()
if (party_in_memory == false) { if (party_in_memory == false) {
TextSize(20); TextSize(20);
OffsetRect(&to_rect,175,40); OffsetRect(&to_rect,175,40);
char_win_draw_string(mainPtr,to_rect, char_win_draw_string(mainPtr,to_rect,"No Party in Memory",0,18,ul);
"No Party in Memory",0,18,true);
} }
if (party_in_memory == true) { if (party_in_memory == true) {
frame_rect = startup_top; frame_rect = startup_top;
@@ -617,8 +616,7 @@ void draw_startup_stats()
FrameRect(&frame_rect); FrameRect(&frame_rect);
OffsetRect(&to_rect,203,37); OffsetRect(&to_rect,203,37);
char_win_draw_string(mainPtr,to_rect, char_win_draw_string(mainPtr,to_rect,"Your party:",0,18,ul);
"Your party:",0,18,true);
TextSize(12); TextSize(12);
TextFace(bold); TextFace(bold);
TextFont(geneva_font_num); TextFont(geneva_font_num);
@@ -633,12 +631,11 @@ void draw_startup_stats()
OffsetRect(&from_rect,56 * (i / 3),36 * (i % 3)); OffsetRect(&from_rect,56 * (i / 3),36 * (i % 3));
to_rect = party_from, to_rect = party_from,
OffsetRect(&to_rect,pc_rect.left,pc_rect.top); OffsetRect(&to_rect,pc_rect.left,pc_rect.top);
rect_draw_some_item(party_template_gworld,from_rect,party_template_gworld,to_rect,1,1); rect_draw_some_item(party_template_gworld,from_rect,to_rect,ul,transparent);
TextSize(14); TextSize(14);
OffsetRect(&pc_rect,35,0); OffsetRect(&pc_rect,35,0);
char_win_draw_string(mainPtr,pc_rect, char_win_draw_string(mainPtr,pc_rect,(char*)univ.party[i].name.c_str(),0,18,ul);
(char*)univ.party[i].name.c_str(),0,18,true);
OffsetRect(&to_rect,pc_rect.left + 8,pc_rect.top + 8); OffsetRect(&to_rect,pc_rect.left + 8,pc_rect.top + 8);
} }
@@ -669,23 +666,23 @@ void draw_startup_stats()
case RACE_BIRD: sprintf((char *) str,"Level %d Bird",univ.party[i].level); break; case RACE_BIRD: sprintf((char *) str,"Level %d Bird",univ.party[i].level); break;
default: sprintf((char *) str,"Level %d *ERROR INVALID RACE*",univ.party[i].level); break; default: sprintf((char *) str,"Level %d *ERROR INVALID RACE*",univ.party[i].level); break;
} }
char_win_draw_string(mainPtr,pc_rect,(char *) str,0,18,true); char_win_draw_string(mainPtr,pc_rect,(char *) str,0,18,ul);
OffsetRect(&pc_rect,0,13); OffsetRect(&pc_rect,0,13);
sprintf((char *) str,"Health %d, Spell pts. %d", sprintf((char *) str,"Health %d, Spell pts. %d",
univ.party[i].max_health,univ.party[i].max_sp); univ.party[i].max_health,univ.party[i].max_sp);
char_win_draw_string(mainPtr,pc_rect,(char *) str,0,18,true); char_win_draw_string(mainPtr,pc_rect,(char *) str,0,18,ul);
break; break;
case MAIN_STATUS_DEAD: case MAIN_STATUS_DEAD:
char_win_draw_string(mainPtr,pc_rect,"Dead",0,18,true); char_win_draw_string(mainPtr,pc_rect,"Dead",0,18,ul);
break; break;
case MAIN_STATUS_DUST: case MAIN_STATUS_DUST:
char_win_draw_string(mainPtr,pc_rect,"Dust",0,18,true); char_win_draw_string(mainPtr,pc_rect,"Dust",0,18,ul);
break; break;
case MAIN_STATUS_STONE: case MAIN_STATUS_STONE:
char_win_draw_string(mainPtr,pc_rect,"Stone",0,18,true); char_win_draw_string(mainPtr,pc_rect,"Stone",0,18,ul);
break; break;
case MAIN_STATUS_FLED: case MAIN_STATUS_FLED:
char_win_draw_string(mainPtr,pc_rect,"Fled",0,18,true); char_win_draw_string(mainPtr,pc_rect,"Fled",0,18,ul);
break; break;
default: //absent, and all variations thereof; do nothing default: //absent, and all variations thereof; do nothing
break; break;
@@ -700,7 +697,7 @@ void draw_startup_stats()
OffsetRect(&pc_rect,5,5); OffsetRect(&pc_rect,5,5);
pc_rect.top = pc_rect.bottom - 25; pc_rect.top = pc_rect.bottom - 25;
pc_rect.left = pc_rect.right - 300; pc_rect.left = pc_rect.right - 300;
char_win_draw_string(mainPtr,pc_rect,"Copyright 1997, All Rights Reserved, v1.0.2",0,18,true); char_win_draw_string(mainPtr,pc_rect,"Copyright 1997, All Rights Reserved, v1.0.2",0,18,ul);
ForeColor(blackColor); ForeColor(blackColor);
} }
@@ -721,7 +718,7 @@ void draw_start_button(short which_position,short which_button)
to_rect.left += 4; to_rect.top += 4; to_rect.left += 4; to_rect.top += 4;
to_rect.right = to_rect.left + 40; to_rect.right = to_rect.left + 40;
to_rect.bottom = to_rect.top + 40; to_rect.bottom = to_rect.top + 40;
rect_draw_some_item(startup_gworld,from_rect,startup_gworld,to_rect,0,1); rect_draw_some_item(startup_gworld,from_rect,to_rect,ul);
TextFont(dungeon_font_num); TextFont(dungeon_font_num);
TextFace(0); TextFace(0);
@@ -735,8 +732,7 @@ void draw_start_button(short which_position,short which_button)
RGBForeColor(&base_color); RGBForeColor(&base_color);
if (which_position == 3) if (which_position == 3)
OffsetRect(&to_rect,-7,0); OffsetRect(&to_rect,-7,0);
char_win_draw_string(mainPtr,to_rect, char_win_draw_string(mainPtr,to_rect,(char *) button_labels[which_position],1,18,ul);
(char *) button_labels[which_position],1,18,true);
ForeColor(blackColor); ForeColor(blackColor);
TextFont(geneva_font_num); TextFont(geneva_font_num);
TextFace(bold); TextFace(bold);
@@ -840,7 +836,7 @@ void Set_up_win ()
// TODO: This relates to the storage gworld, and hence should be abolished // TODO: This relates to the storage gworld, and hence should be abolished
temp_gworld = load_pict("ter1.png"); temp_gworld = load_pict("ter1.png");
GetPortBounds(temp_gworld, &r); GetPortBounds(temp_gworld, &r);
rect_draw_some_item(temp_gworld,r,storage_gworld,r,0,0); rect_draw_some_item(temp_gworld,r,storage_gworld,r);
DisposeGWorld(temp_gworld); DisposeGWorld(temp_gworld);
terrain_screen_gworld = load_pict("terscreen.png"); terrain_screen_gworld = load_pict("terscreen.png");
@@ -974,7 +970,7 @@ void draw_main_screen()
put_background(); put_background();
} }
else { else {
rect_draw_some_item (terrain_screen_gworld, win_from_rects[0], terrain_screen_gworld, win_to_rects[0], 0, 1); rect_draw_some_item (terrain_screen_gworld, win_from_rects[0], win_to_rects[0],ul);
draw_buttons(0); draw_buttons(0);
if (overall_mode == MODE_COMBAT) if (overall_mode == MODE_COMBAT)
@@ -1233,7 +1229,7 @@ void put_text_bar(char *str)
short xpos = 205; short xpos = 205;
rect_draw_some_item (orig_text_bar_gworld, win_from_rects[4], text_bar_gworld, win_from_rects[4], 0, 0); rect_draw_some_item (orig_text_bar_gworld, win_from_rects[4], text_bar_gworld, win_from_rects[4]);
GetPort(&old_port); GetPort(&old_port);
SetPort(text_bar_gworld); SetPort(text_bar_gworld);
ForeColor(whiteColor); ForeColor(whiteColor);
@@ -1269,7 +1265,7 @@ void put_text_bar(char *str)
ForeColor(blackColor); ForeColor(blackColor);
SetPort(old_port); SetPort(old_port);
rect_draw_some_item (text_bar_gworld, win_from_rects[4], text_bar_gworld, win_to_rects[4], 0, 1); rect_draw_some_item (text_bar_gworld, win_from_rects[4], win_to_rects[4],ul);
} }
// This is called when a new situation is entered. It figures out what graphics are needed, // This is called when a new situation is entered. It figures out what graphics are needed,
@@ -1612,7 +1608,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect(which_position % 10,which_position / 10); from_rect = calc_rect(which_position % 10,which_position / 10);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
DisposeGWorld (temp_gworld); DisposeGWorld (temp_gworld);
@@ -1640,7 +1636,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect((which_position / 10) * 2,which_position % 10); from_rect = calc_rect((which_position / 10) * 2,which_position % 10);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
@@ -1651,7 +1647,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect((which_position / 10) * 2 + 1,which_position % 10); from_rect = calc_rect((which_position / 10) * 2 + 1,which_position % 10);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
@@ -1680,7 +1676,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect((which_position / 10) * 2,which_position % 10); from_rect = calc_rect((which_position / 10) * 2,which_position % 10);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
@@ -1691,7 +1687,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect((which_position / 10) * 2 + 1,which_position % 10); from_rect = calc_rect((which_position / 10) * 2 + 1,which_position % 10);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
@@ -1716,7 +1712,7 @@ void put_graphics_in_template() // TODO: Get rid of this! It's not necessary! Ju
from_rect = calc_rect(4 * (which_position / 5) + offset,which_position % 5); from_rect = calc_rect(4 * (which_position / 5) + offset,which_position % 5);
to_rect = calc_rect(i % 10,i / 10); to_rect = calc_rect(i % 10,i / 10);
rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect,0,0); rect_draw_some_item(temp_gworld,from_rect,storage_gworld,to_rect);
storage_status[i] = 1; storage_status[i] = 1;
} }
@@ -1926,22 +1922,22 @@ void draw_terrain(short mode)
trim = 3; trim = 3;
} }
} }
draw_one_terrain_spot(q,r,trim < 0 ? spec_terrain : ground_ter,0); draw_one_terrain_spot(q,r,trim < 0 ? spec_terrain : ground_ter);
if(trim >= 0) if(trim >= 0)
draw_trim(q,r,trim + 50,spec_terrain); draw_trim(q,r,trim + 50,spec_terrain);
}else if(trim == TRIM_ROAD || trim == TRIM_N || trim == TRIM_S || }else if(trim == TRIM_ROAD || trim == TRIM_N || trim == TRIM_S ||
trim == TRIM_W || trim == TRIM_E) { trim == TRIM_W || trim == TRIM_E) {
draw_one_terrain_spot(q,r,spec_terrain,0); draw_one_terrain_spot(q,r,spec_terrain);
place_road(q,r,where_draw,trim == TRIM_ROAD); place_road(q,r,where_draw,trim == TRIM_ROAD);
}else if(spec_terrain == 65535) { }else if(spec_terrain == 65535) {
draw_one_terrain_spot(q,r,-1,0); draw_one_terrain_spot(q,r,-1);
}else{ }else{
current_ground = get_ground_from_ter(spec_terrain); current_ground = get_ground_from_ter(spec_terrain);
draw_one_terrain_spot(q,r,spec_terrain,0); draw_one_terrain_spot(q,r,spec_terrain);
} }
} }
else { // Can't see. Place darkness. else { // Can't see. Place darkness.
draw_one_terrain_spot(q,r,-1,0); draw_one_terrain_spot(q,r,-1);
} }
if ((can_draw != 0) && (overall_mode != MODE_RESTING) && (frills_on == true) if ((can_draw != 0) && (overall_mode != MODE_RESTING) && (frills_on == true)
@@ -2324,7 +2320,7 @@ void place_road(short q,short r,location where, bool here)
if ((where.y == 0) || extend_road_terrain(ter)) { if ((where.y == 0) || extend_road_terrain(ter)) {
to_rect = road_dest_rects[0]; to_rect = road_dest_rects[0];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[1], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[1], terrain_screen_gworld, to_rect);
} }
if (((is_out()) && (where.x < 96)) || (!(is_out()) && (where.x < univ.town->max_dim() - 1))) if (((is_out()) && (where.x < 96)) || (!(is_out()) && (where.x < univ.town->max_dim() - 1)))
@@ -2333,7 +2329,7 @@ void place_road(short q,short r,location where, bool here)
|| extend_road_terrain(ter)) { || extend_road_terrain(ter)) {
to_rect = road_dest_rects[1]; to_rect = road_dest_rects[1];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[0], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[0], terrain_screen_gworld, to_rect);
} }
if (((is_out()) && (where.y < 96)) || (!(is_out()) && (where.y < univ.town->max_dim() - 1))) if (((is_out()) && (where.y < 96)) || (!(is_out()) && (where.y < univ.town->max_dim() - 1)))
@@ -2342,7 +2338,7 @@ void place_road(short q,short r,location where, bool here)
|| extend_road_terrain(ter)) { || extend_road_terrain(ter)) {
to_rect = road_dest_rects[2]; to_rect = road_dest_rects[2];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[1], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[1], terrain_screen_gworld, to_rect);
} }
if (where.x > 0) if (where.x > 0)
@@ -2350,7 +2346,7 @@ void place_road(short q,short r,location where, bool here)
if ((where.x == 0) || extend_road_terrain(ter)) { if ((where.x == 0) || extend_road_terrain(ter)) {
to_rect = road_dest_rects[3]; to_rect = road_dest_rects[3];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[0], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[0], terrain_screen_gworld, to_rect);
} }
}else{ }else{
bool horz = false, vert = false; bool horz = false, vert = false;
@@ -2385,12 +2381,12 @@ void place_road(short q,short r,location where, bool here)
if(horz){ if(horz){
to_rect = road_dest_rects[5]; to_rect = road_dest_rects[5];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[2], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[2], terrain_screen_gworld, to_rect);
} }
if(vert){ if(vert){
to_rect = road_dest_rects[4]; to_rect = road_dest_rects[4];
OffsetRect(&to_rect,13 + q * 28,13 + r * 36); OffsetRect(&to_rect,13 + q * 28,13 + r * 36);
rect_draw_some_item (roads_gworld, road_rects[3], terrain_screen_gworld, to_rect, 0, 0); rect_draw_some_item (roads_gworld, road_rects[3], terrain_screen_gworld, to_rect);
} }
} }
} }
@@ -2477,7 +2473,7 @@ void boom_space(location where,short mode,short type,short damage,short sound)
else OffsetRect(&dest_rect,store_anim_ul.h,store_anim_ul.v); else OffsetRect(&dest_rect,store_anim_ul.h,store_anim_ul.v);
OffsetRect(&source_rect,-1 * store_rect.left + 28 * type,-1 * store_rect.top); OffsetRect(&source_rect,-1 * store_rect.left + 28 * type,-1 * store_rect.top);
rect_draw_some_item(boom_gworld,source_rect,terrain_screen_gworld,dest_rect,1,1); rect_draw_some_item(boom_gworld,source_rect,dest_rect,ul,transparent);
if ((cartoon_happening == false) && (dest_rect.right - dest_rect.left >= 28) if ((cartoon_happening == false) && (dest_rect.right - dest_rect.left >= 28)
&& (dest_rect.bottom - dest_rect.top >= 36)) { && (dest_rect.bottom - dest_rect.top >= 36)) {
@@ -2491,7 +2487,7 @@ void boom_space(location where,short mode,short type,short damage,short sound)
if ((damage < 10) && (dest_rect.right - dest_rect.left > 19)) if ((damage < 10) && (dest_rect.right - dest_rect.left > 19))
text_rect.left += 10; text_rect.left += 10;
OffsetRect(&text_rect,-4,-5); OffsetRect(&text_rect,-4,-5);
char_win_draw_string(mainPtr,text_rect,(char *) dam_str,1,10,true); char_win_draw_string(mainPtr,text_rect,(char *) dam_str,1,10,ul);
TextSize(0); TextSize(0);
TextFace(0); TextFace(0);
} }
@@ -2528,8 +2524,8 @@ void draw_pointing_arrows()
|| (overall_mode == MODE_LOOK_OUTDOORS)) || (overall_mode == MODE_LOOK_OUTDOORS))
return; return;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
rect_draw_some_item (terrain_screen_gworld,sources[i],terrain_screen_gworld,dests[i * 2],1,1); rect_draw_some_item (terrain_screen_gworld,sources[i],dests[i * 2],ul,transparent);
rect_draw_some_item (terrain_screen_gworld,sources[i],terrain_screen_gworld,dests[i * 2 + 1],1,1); rect_draw_some_item (terrain_screen_gworld,sources[i],dests[i * 2 + 1],ul,transparent);
} }
} }
@@ -2545,7 +2541,7 @@ void redraw_terrain()
OffsetRect(&to_rect,306,5); OffsetRect(&to_rect,306,5);
else OffsetRect(&to_rect,store_anim_ul.h,store_anim_ul.v); else OffsetRect(&to_rect,store_anim_ul.h,store_anim_ul.v);
} }
rect_draw_some_item (terrain_screen_gworld, win_from_rects[0], terrain_screen_gworld, to_rect, 0, 1); rect_draw_some_item (terrain_screen_gworld, win_from_rects[0], to_rect,ul);
// Now place arrows // Now place arrows
@@ -2568,7 +2564,7 @@ void draw_targets(location center)
dest_rect = coord_to_rect(spell_targets[i].x - center.x + 4,spell_targets[i].y - center.y + 4); dest_rect = coord_to_rect(spell_targets[i].x - center.x + 4,spell_targets[i].y - center.y + 4);
//OffsetRect(&dest_rect,5,5); //OffsetRect(&dest_rect,5,5);
//InsetRect(&dest_rect,8,12); //InsetRect(&dest_rect,8,12);
rect_draw_some_item (roads_gworld,calc_rect(6,0),roads_gworld,dest_rect,1,1); rect_draw_some_item (roads_gworld,calc_rect(6,0),dest_rect,ul,transparent);
} }
} }
@@ -2729,7 +2725,7 @@ void redraw_partial_terrain(Rect redraw_rect)
// as rect_draw_some_item will shift redraw_rect before drawing, we need to compensate // as rect_draw_some_item will shift redraw_rect before drawing, we need to compensate
OffsetRect(&redraw_rect,-1 * ul.h + 5,-1 * ul.v + 5); OffsetRect(&redraw_rect,-1 * ul.h + 5,-1 * ul.v + 5);
rect_draw_some_item(terrain_screen_gworld,from_rect,terrain_screen_gworld,redraw_rect,0,1); rect_draw_some_item(terrain_screen_gworld,from_rect,redraw_rect,ul);
} }
@@ -2755,7 +2751,7 @@ void dump_gworld()
to_rect = from_rect; to_rect = from_rect;
OffsetRect(&to_rect,0,-180); OffsetRect(&to_rect,0,-180);
to_rect.bottom = to_rect.top + (to_rect.bottom + to_rect.top) / 2; to_rect.bottom = to_rect.top + (to_rect.bottom + to_rect.top) / 2;
rect_draw_some_item(storage_gworld,from_rect,storage_gworld,to_rect,0,1); rect_draw_some_item(storage_gworld,from_rect,to_rect,ul);
play_sound(0); play_sound(0);
FlushAndPause(60); FlushAndPause(60);

View File

@@ -160,7 +160,7 @@ eAmbientSound ambient_sound;
//1,1,1,1,1,1,1,1,1,1, //1,1,1,1,1,1,1,1,1,1,
//1,1,1,1,1,1,1,1,1,1}; //1,1,1,1,1,1,1,1,1,1};
void draw_one_terrain_spot (short i,short j,short terrain_to_draw,short dest) //// void draw_one_terrain_spot (short i,short j,short terrain_to_draw) ////
//short dest; // 0 - terrain gworld 1 - screen //short dest; // 0 - terrain gworld 1 - screen
// if terrain_to_draw is -1, do black // if terrain_to_draw is -1, do black
// if terrain_to_draw >= 1000, force to draw graphic which is terrain_to_draw - 1000 // if terrain_to_draw >= 1000, force to draw graphic which is terrain_to_draw - 1000
@@ -232,7 +232,7 @@ void draw_one_terrain_spot (short i,short j,short terrain_to_draw,short dest) //
anim_onscreen = true; anim_onscreen = true;
} }
rect_draw_some_item(source_gworld, source_rect, terrain_screen_gworld, where_draw, (unsigned char) 0, dest); rect_draw_some_item(source_gworld, source_rect, terrain_screen_gworld, where_draw);
} }
void draw_monsters() //// void draw_monsters() ////
@@ -277,7 +277,7 @@ void draw_monsters() ////
((univ.party.out_c[i].direction < 4) ? 0 : (width * height)) + k); ((univ.party.out_c[i].direction < 4) ? 0 : (width * height)) + k);
to_rect = monst_rects[(width - 1) * 2 + height - 1][k]; to_rect = monst_rects[(width - 1) * 2 + height - 1][k];
OffsetRect(&to_rect,13 + 28 * where_draw.x,13 + 36 * where_draw.y); OffsetRect(&to_rect,13 + 28 * where_draw.x,13 + 36 * where_draw.y);
rect_draw_some_item(spec_scen_g, source_rect, terrain_screen_gworld,to_rect, 1, 0); rect_draw_some_item(spec_scen_g, source_rect, terrain_screen_gworld,to_rect, transparent);
} }
} }
if (picture_wanted < 1000) { if (picture_wanted < 1000) {
@@ -286,7 +286,7 @@ void draw_monsters() ////
(univ.party.out_c[i].direction < 4) ? 0 : 1,k); (univ.party.out_c[i].direction < 4) ? 0 : 1,k);
to_rect = monst_rects[(width - 1) * 2 + height - 1][k]; to_rect = monst_rects[(width - 1) * 2 + height - 1][k];
OffsetRect(&to_rect,13 + 28 * where_draw.x,13 + 36 * where_draw.y); OffsetRect(&to_rect,13 + 28 * where_draw.x,13 + 36 * where_draw.y);
rect_draw_some_item(storage_gworld, source_rect, terrain_screen_gworld,to_rect, 1, 0); rect_draw_some_item(storage_gworld, source_rect, terrain_screen_gworld,to_rect, transparent);
} }
} }
} }
@@ -325,7 +325,7 @@ void draw_monsters() ////
&& (univ.town.monst[i].m_type != 1) && (univ.town.monst[i].m_type != 2)) && (univ.town.monst[i].m_type != 1) && (univ.town.monst[i].m_type != 2))
&& ((univ.town.monst[i].active == 1) || (univ.town.monst[i].target == 6)) && && ((univ.town.monst[i].active == 1) || (univ.town.monst[i].target == 6)) &&
(width == 1) && (height == 1)) //// (width == 1) && (height == 1)) ////
draw_one_terrain_spot((short) where_draw.x,(short) where_draw.y,10000 + scenario.ter_types[ter].flag1.u,0); draw_one_terrain_spot((short) where_draw.x,(short) where_draw.y,10000 + scenario.ter_types[ter].flag1.u);
else Draw_Some_Item(storage_gworld, source_rect, terrain_screen_gworld, store_loc, 1, 0); else Draw_Some_Item(storage_gworld, source_rect, terrain_screen_gworld, store_loc, 1, 0);
} }
} }
@@ -362,7 +362,7 @@ void draw_monsters() ////
&& (univ.town.monst[i].m_type != 1) && (univ.town.monst[i].m_type != 2)) && (univ.town.monst[i].m_type != 1) && (univ.town.monst[i].m_type != 2))
&& ((univ.town.monst[i].active == 1) || (univ.town.monst[i].target == 6)) && && ((univ.town.monst[i].active == 1) || (univ.town.monst[i].target == 6)) &&
(width == 1) && (height == 1)) (width == 1) && (height == 1))
draw_one_terrain_spot((short) where_draw.x,(short) where_draw.y,10000 + scenario.ter_types[ter].flag1.u,0); //// draw_one_terrain_spot((short) where_draw.x,(short) where_draw.y,10000 + scenario.ter_types[ter].flag1.u); ////
else Draw_Some_Item(storage_gworld, source_rect, terrain_screen_gworld, store_loc, 1, 0); else Draw_Some_Item(storage_gworld, source_rect, terrain_screen_gworld, store_loc, 1, 0);
} }
} }
@@ -463,16 +463,16 @@ void draw_items(location where){
from_rect = get_custom_rect(univ.town.items[i].graphic_num - 1000); from_rect = get_custom_rect(univ.town.items[i].graphic_num - 1000);
to_rect = coord_to_rect(where.x,where.y); to_rect = coord_to_rect(where.x,where.y);
terrain_there[where_draw.x][where_draw.y] = -1; terrain_there[where_draw.x][where_draw.y] = -1;
rect_draw_some_item(spec_scen_g,from_rect,terrain_screen_gworld,to_rect,1,0); rect_draw_some_item(spec_scen_g,from_rect,terrain_screen_gworld,to_rect,transparent);
}else{ }else{
from_rect = get_item_template_rect(univ.town.items[i].graphic_num); from_rect = get_item_template_rect(univ.town.items[i].graphic_num);
to_rect = coord_to_rect(where_draw.x,where_draw.y); to_rect = coord_to_rect(where_draw.x,where_draw.y);
terrain_there[where_draw.x][where_draw.y] = -1; terrain_there[where_draw.x][where_draw.y] = -1;
if(univ.town.items[i].graphic_num >= 45) { if(univ.town.items[i].graphic_num >= 45) {
InsetRect(&to_rect,5,9); InsetRect(&to_rect,5,9);
rect_draw_some_item(tiny_obj_gworld, from_rect, terrain_screen_gworld, to_rect, 1, 0); rect_draw_some_item(tiny_obj_gworld, from_rect, terrain_screen_gworld, to_rect,transparent);
}else }else
rect_draw_some_item(items_gworld, from_rect, terrain_screen_gworld, to_rect, 1, 0); rect_draw_some_item(items_gworld, from_rect, terrain_screen_gworld, to_rect,transparent);
} }
} }
} }
@@ -622,7 +622,7 @@ void draw_party_symbol(short mode,location center)
ter_num_t ter = univ.town->terrain(univ.town.p_loc.x,univ.town.p_loc.y); ter_num_t ter = univ.town->terrain(univ.town.p_loc.x,univ.town.p_loc.y);
// now wedge in bed graphic // now wedge in bed graphic
if ((is_town()) && (scenario.ter_types[ter].special == TER_SPEC_BED)) if ((is_town()) && (scenario.ter_types[ter].special == TER_SPEC_BED))
draw_one_terrain_spot((short) target.x,(short) target.y,10000 + scenario.ter_types[ter].flag1.u,0); draw_one_terrain_spot((short) target.x,(short) target.y,10000 + scenario.ter_types[ter].flag1.u);
else Draw_Some_Item(party_template_gworld, source_rect, terrain_screen_gworld, target, 1, 0); else Draw_Some_Item(party_template_gworld, source_rect, terrain_screen_gworld, target, 1, 0);
} }
else if (univ.party.in_boat >= 0) { else if (univ.party.in_boat >= 0) {

View File

@@ -1,4 +1,4 @@
void draw_one_terrain_spot (short i,short j,short terrain_to_draw,short dest); void draw_one_terrain_spot (short i,short j,short terrain_to_draw);
void draw_monsters(); void draw_monsters();
void play_see_monster_str(unsigned short m); void play_see_monster_str(unsigned short m);
void draw_pcs(location center,short mode); void draw_pcs(location center,short mode);

View File

@@ -179,7 +179,7 @@ int main(void)
shop_sbar_UPP = NewControlActionProc(shop_sbar_action); shop_sbar_UPP = NewControlActionProc(shop_sbar_action);
#endif #endif
init_fileio(); init_fileio();
init_graph_tool(redraw_screen,&ul); init_graph_tool(redraw_screen);
Set_Window_Drag_Bdry(); Set_Window_Drag_Bdry();

View File

@@ -454,8 +454,7 @@ void do_missile_anim(short num_steps,location missile_origin,short sound_num)
GetPortBounds(terrain_screen_gworld,&to_rect); GetPortBounds(terrain_screen_gworld,&to_rect);
Rect oldBounds = to_rect; Rect oldBounds = to_rect;
OffsetRect(&to_rect,current_terrain_ul.h, current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h, current_terrain_ul.v);
rect_draw_some_item(terrain_screen_gworld,oldBounds, rect_draw_some_item(terrain_screen_gworld,oldBounds,to_rect,ul);
terrain_screen_gworld,to_rect,0,1);
GetPort(&old_port); GetPort(&old_port);
@@ -523,27 +522,25 @@ void do_missile_anim(short num_steps,location missile_origin,short sound_num)
// Now put terrain in temporary; // Now put terrain in temporary;
rect_draw_some_item(terrain_screen_gworld,missile_place_rect[i], rect_draw_some_item(terrain_screen_gworld,missile_place_rect[i],
temp_gworld,missile_place_rect[i],0,0); temp_gworld,missile_place_rect[i]);
// Now put in missile // Now put in missile
from_rect = missile_origin_rect[i]; from_rect = missile_origin_rect[i];
if (store_missiles[i].missile_type >= 7) if (store_missiles[i].missile_type >= 7)
OffsetRect(&from_rect,18 * (t % 8),0); OffsetRect(&from_rect,18 * (t % 8),0);
rect_draw_some_item(missiles_gworld,from_rect, rect_draw_some_item(missiles_gworld,from_rect,
temp_gworld,temp_rect,1,0); temp_gworld,temp_rect,transparent);
} }
// Now draw all missiles to screen // Now draw all missiles to screen
for (i = 0; i < 30; i++) for (i = 0; i < 30; i++)
if (store_missiles[i].missile_type >= 0) { if (store_missiles[i].missile_type >= 0) {
to_rect = store_erase_rect[i]; to_rect = store_erase_rect[i];
OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v);
rect_draw_some_item(terrain_screen_gworld,store_erase_rect[i], rect_draw_some_item(terrain_screen_gworld,store_erase_rect[i],to_rect,ul);
terrain_screen_gworld,to_rect,0,1);
to_rect = missile_place_rect[i]; to_rect = missile_place_rect[i];
store_erase_rect[i] = to_rect; store_erase_rect[i] = to_rect;
OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v);
rect_draw_some_item(temp_gworld,missile_place_rect[i], rect_draw_some_item(temp_gworld,missile_place_rect[i],to_rect,ul);
temp_gworld,to_rect,0,1);
} }
if ((PSD[SDF_GAME_SPEED] == 3) || ((PSD[SDF_GAME_SPEED] == 1) && (t % 4 == 0)) || if ((PSD[SDF_GAME_SPEED] == 3) || ((PSD[SDF_GAME_SPEED] == 1) && (t % 4 == 0)) ||
((PSD[SDF_GAME_SPEED] == 2) && (t % 3 == 0))) ((PSD[SDF_GAME_SPEED] == 2) && (t % 3 == 0)))
@@ -559,8 +556,7 @@ void do_missile_anim(short num_steps,location missile_origin,short sound_num)
GetPortBounds(terrain_screen_gworld,&to_rect); GetPortBounds(terrain_screen_gworld,&to_rect);
Rect oldRect = to_rect; Rect oldRect = to_rect;
OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v);
rect_draw_some_item(terrain_screen_gworld,oldRect, rect_draw_some_item(terrain_screen_gworld,oldRect,to_rect,ul);
terrain_screen_gworld,to_rect,0,1);
} }
short get_missile_direction(Point origin_point,Point the_point) short get_missile_direction(Point origin_point,Point the_point)
@@ -643,8 +639,7 @@ void do_explosion_anim(short sound_num,short special_draw)
GetPortBounds(terrain_screen_gworld,&to_rect); GetPortBounds(terrain_screen_gworld,&to_rect);
Rect oldRect = to_rect; Rect oldRect = to_rect;
OffsetRect(&to_rect,current_terrain_ul.h, current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h, current_terrain_ul.v);
rect_draw_some_item(terrain_screen_gworld,oldRect, rect_draw_some_item(terrain_screen_gworld,oldRect,to_rect,ul);
terrain_screen_gworld,to_rect,0,1);
} }
GetPort(&old_port); GetPort(&old_port);
@@ -698,7 +693,7 @@ void do_explosion_anim(short sound_num,short special_draw)
for (i = 0; i < 30; i++) for (i = 0; i < 30; i++)
if (store_booms[i].boom_type >= 0) if (store_booms[i].boom_type >= 0)
rect_draw_some_item(terrain_screen_gworld,explode_place_rect[i], rect_draw_some_item(terrain_screen_gworld,explode_place_rect[i],
temp_gworld,explode_place_rect[i],0,0); temp_gworld,explode_place_rect[i]);
// Now put in explosions // Now put in explosions
for (i = 0; i < 30; i++) for (i = 0; i < 30; i++)
@@ -707,7 +702,7 @@ void do_explosion_anim(short sound_num,short special_draw)
from_rect = base_rect; from_rect = base_rect;
OffsetRect(&from_rect,28 * (t + store_booms[i].offset),36 * (1 + store_booms[i].boom_type)); OffsetRect(&from_rect,28 * (t + store_booms[i].offset),36 * (1 + store_booms[i].boom_type));
rect_draw_some_item(boom_gworld,from_rect, rect_draw_some_item(boom_gworld,from_rect,
temp_gworld,explode_place_rect[i],1,0); temp_gworld,explode_place_rect[i],transparent);
if (store_booms[i].val_to_place > 0) { if (store_booms[i].val_to_place > 0) {
text_rect = explode_place_rect[i]; text_rect = explode_place_rect[i];
@@ -718,7 +713,7 @@ void do_explosion_anim(short sound_num,short special_draw)
sprintf(str,"%d",store_booms[i].val_to_place); sprintf(str,"%d",store_booms[i].val_to_place);
SetPort(temp_gworld); SetPort(temp_gworld);
ForeColor(whiteColor); ForeColor(whiteColor);
char_port_draw_string(temp_gworld,text_rect,str,1,12,false); char_port_draw_string(temp_gworld,text_rect,str,1,12);
ForeColor(blackColor); ForeColor(blackColor);
SetPort(GetWindowPort(mainPtr)); SetPort(GetWindowPort(mainPtr));
} }
@@ -729,8 +724,7 @@ void do_explosion_anim(short sound_num,short special_draw)
if (store_booms[i].boom_type >= 0) { if (store_booms[i].boom_type >= 0) {
to_rect = explode_place_rect[i]; to_rect = explode_place_rect[i];
OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v); OffsetRect(&to_rect,current_terrain_ul.h,current_terrain_ul.v);
rect_draw_some_item(temp_gworld,explode_place_rect[i], rect_draw_some_item(temp_gworld,explode_place_rect[i],to_rect,ul);
temp_gworld,to_rect,0,1);
} }
//if (((PSD[SDF_GAME_SPEED] == 1) && (t % 3 == 0)) || ((PSD[SDF_GAME_SPEED] == 2) && (t % 2 == 0))) //if (((PSD[SDF_GAME_SPEED] == 1) && (t % 3 == 0)) || ((PSD[SDF_GAME_SPEED] == 2) && (t % 2 == 0)))
FlushAndPause(2 * (1 + PSD[SDF_GAME_SPEED])); FlushAndPause(2 * (1 + PSD[SDF_GAME_SPEED]));
@@ -771,7 +765,7 @@ void click_shop_rect(Rect area_rect)
draw_shop_graphics(0,area_rect); draw_shop_graphics(0,area_rect);
} }
void draw_shop_graphics(short draw_mode,Rect clip_area_rect) void draw_shop_graphics(bool pressed,Rect clip_area_rect)
// mode 1 - drawing dark for button press // mode 1 - drawing dark for button press
{ {
Rect area_rect,item_info_from = {11,42,24,56}; Rect area_rect,item_info_from = {11,42,24,56};
@@ -806,7 +800,7 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
TextSize(18); TextSize(18);
TextFace(0); TextFace(0);
if (draw_mode > 0) { if (pressed) {
ClipRect(&clip_area_rect); ClipRect(&clip_area_rect);
} }
@@ -818,7 +812,7 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
FrameRect(&shop_frame); FrameRect(&shop_frame);
// Place store icon // Place store icon
if (draw_mode == 0) { if (!pressed) {
SetPort(GetWindowPort(mainPtr)); SetPort(GetWindowPort(mainPtr));
i = faces[store_shop_type]; i = faces[store_shop_type];
draw_dialog_graphic( talk_gworld, face_rect, i, PICT_TALK, false,1); draw_dialog_graphic( talk_gworld, face_rect, i, PICT_TALK, false,1);
@@ -830,10 +824,10 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
RGBForeColor(&c[3]); RGBForeColor(&c[3]);
dest_rect = title_rect; dest_rect = title_rect;
OffsetRect(&dest_rect,1,1); OffsetRect(&dest_rect,1,1);
char_port_draw_string(talk_gworld,dest_rect,store_store_name,2,18,false); char_port_draw_string(talk_gworld,dest_rect,store_store_name,2,18);
OffsetRect(&dest_rect,-1,-1); OffsetRect(&dest_rect,-1,-1);
RGBForeColor(&c[4]); RGBForeColor(&c[4]);
char_port_draw_string( talk_gworld,dest_rect,store_store_name,2,18,false); char_port_draw_string( talk_gworld,dest_rect,store_store_name,2,18);
TextFont(geneva_font_num); TextFont(geneva_font_num);
TextSize(12); TextSize(12);
@@ -848,22 +842,22 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
case 4: sprintf(cur_name,"Buying Food.");break; case 4: sprintf(cur_name,"Buying Food.");break;
default:sprintf(cur_name,"Shopping for %s.",univ.party[current_pc].name.c_str()); break; default:sprintf(cur_name,"Shopping for %s.",univ.party[current_pc].name.c_str()); break;
} }
char_port_draw_string( talk_gworld,shopper_name,cur_name,2,18,false); char_port_draw_string( talk_gworld,shopper_name,cur_name,2,18);
// Place help and done buttons // Place help and done buttons
ForeColor(blackColor); ForeColor(blackColor);
GetPortBounds(dlg_buttons_gworld[3][0],&help_from); GetPortBounds(dlg_buttons_gworld[3][0],&help_from);
talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left; talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left;
talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top; talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top;
rect_draw_some_item(dlg_buttons_gworld[3][draw_mode],help_from,talk_gworld,talk_help_rect,0,0); rect_draw_some_item(dlg_buttons_gworld[3][pressed],help_from,talk_gworld,talk_help_rect);
GetPortBounds(dlg_buttons_gworld[11][0],&help_from); GetPortBounds(dlg_buttons_gworld[11][0],&help_from);
//talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left; //talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left;
//talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top; //talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top;
rect_draw_some_item(dlg_buttons_gworld[11][draw_mode],help_from,talk_gworld,shop_done_rect,0,0); rect_draw_some_item(dlg_buttons_gworld[11][pressed],help_from,talk_gworld,shop_done_rect);
if (draw_mode == 0) if (pressed)
ForeColor(blackColor); RGBForeColor(&c[4]);
else RGBForeColor(&c[4]); else ForeColor(blackColor);
// Place all the items // Place all the items
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
@@ -926,13 +920,13 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
// 0 - whole area, 1 - active area 2 - graphic 3 - item name // 0 - whole area, 1 - active area 2 - graphic 3 - item name
// 4 - item cost 5 - item extra str 6 - item help button // 4 - item cost 5 - item extra str 6 - item help button
TextSize(12); TextSize(12);
char_port_draw_string( talk_gworld,shopping_rects[i][3],cur_name,0,12,false); char_port_draw_string( talk_gworld,shopping_rects[i][3],cur_name,0,12);
sprintf(cur_name,"Cost: %d",cur_cost); sprintf(cur_name,"Cost: %d",cur_cost);
char_port_draw_string( talk_gworld,shopping_rects[i][4],cur_name,0,12,false); char_port_draw_string( talk_gworld,shopping_rects[i][4],cur_name,0,12);
TextSize(10); TextSize(10);
char_port_draw_string( talk_gworld,shopping_rects[i][5],cur_info_str,0,12,false); char_port_draw_string( talk_gworld,shopping_rects[i][5],cur_info_str,0,12);
if ((store_shop_type != 3) && (store_shop_type != 4)) if ((store_shop_type != 3) && (store_shop_type != 4))
rect_draw_some_item(invenbtn_gworld,item_info_from,talk_gworld,shopping_rects[i][6],1 - draw_mode,0); rect_draw_some_item(invenbtn_gworld,item_info_from,talk_gworld,shopping_rects[i][6],pressed ? srcCopy : transparent);
} }
@@ -940,11 +934,11 @@ char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somew
TextSize(12); TextSize(12);
sprintf(cur_name,"Prices here are %s.",cost_strs[store_cost_mult]); sprintf(cur_name,"Prices here are %s.",cost_strs[store_cost_mult]);
TextSize(10); TextSize(10);
char_port_draw_string( talk_gworld,bottom_help_rects[0],cur_name,0,12,false); char_port_draw_string( talk_gworld,bottom_help_rects[0],cur_name,0,12);
char_port_draw_string( talk_gworld,bottom_help_rects[1],"Click on item name (or type 'a'-'h') to buy.",0,12,false); char_port_draw_string( talk_gworld,bottom_help_rects[1],"Click on item name (or type 'a'-'h') to buy.",0,12);
char_port_draw_string( talk_gworld,bottom_help_rects[2],"Hit done button (or Esc.) to quit.",0,12,false); char_port_draw_string( talk_gworld,bottom_help_rects[2],"Hit done button (or Esc.) to quit.",0,12);
if ((store_shop_type != 3) && (store_shop_type != 4)) if ((store_shop_type != 3) && (store_shop_type != 4))
char_port_draw_string( talk_gworld,bottom_help_rects[3],"'I' button brings up description.",0,12,false); char_port_draw_string( talk_gworld,bottom_help_rects[3],"'I' button brings up description.",0,12);
ForeColor(blackColor); ForeColor(blackColor);
@@ -965,7 +959,7 @@ void refresh_shopping()
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
to_rect = from_rects[i]; to_rect = from_rects[i];
OffsetRect(&to_rect,5,5); OffsetRect(&to_rect,5,5);
rect_draw_some_item(talk_gworld,from_rects[i],talk_gworld,to_rect,0,1); rect_draw_some_item(talk_gworld,from_rects[i],to_rect,ul);
} }
} }
@@ -1138,7 +1132,7 @@ void place_talk_str(char *str_to_place,char *str_to_place2,short color,Rect c_re
GetPortBounds(dlg_buttons_gworld[3][0], &help_from); GetPortBounds(dlg_buttons_gworld[3][0], &help_from);
talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left; talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left;
talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top; talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top;
rect_draw_some_item(dlg_buttons_gworld[3][0],help_from,talk_gworld,talk_help_rect,0,0); rect_draw_some_item(dlg_buttons_gworld[3][0],help_from,talk_gworld,talk_help_rect);
// Place face of talkee // Place face of talkee
if ((color == 0) && (c_rect.right == 0)) { if ((color == 0) && (c_rect.right == 0)) {
@@ -1162,10 +1156,10 @@ void place_talk_str(char *str_to_place,char *str_to_place2,short color,Rect c_re
RGBForeColor(&c[3]); RGBForeColor(&c[3]);
dest_rect = title_rect; dest_rect = title_rect;
OffsetRect(&dest_rect,1,1); OffsetRect(&dest_rect,1,1);
char_port_draw_string( talk_gworld,dest_rect,title_string,2,18,false); char_port_draw_string( talk_gworld,dest_rect,title_string,2,18);
OffsetRect(&dest_rect,-1,-1); OffsetRect(&dest_rect,-1,-1);
RGBForeColor(&c[4]); RGBForeColor(&c[4]);
char_port_draw_string( talk_gworld,dest_rect,title_string,2,18,false); char_port_draw_string( talk_gworld,dest_rect,title_string,2,18);
// Place buttons at bottom. // Place buttons at bottom.
if (color == 0) if (color == 0)
@@ -1174,7 +1168,7 @@ void place_talk_str(char *str_to_place,char *str_to_place2,short color,Rect c_re
for (i = 0; i < 9; i++) for (i = 0; i < 9; i++)
if ((talk_end_forced == false) || (i == 6) || (i == 5)) { if ((talk_end_forced == false) || (i == 6) || (i == 5)) {
OffsetRect(&preset_words[i].word_rect,0,8); OffsetRect(&preset_words[i].word_rect,0,8);
char_port_draw_string( talk_gworld,preset_words[i].word_rect,preset_words[i].word,2,18,false); char_port_draw_string( talk_gworld,preset_words[i].word_rect,preset_words[i].word,2,18);
OffsetRect(&preset_words[i].word_rect,0,-8); OffsetRect(&preset_words[i].word_rect,0,-8);
} }
// Place bulk of what said. Save words. // Place bulk of what said. Save words.
@@ -1376,7 +1370,7 @@ void place_talk_str(char *str_to_place,char *str_to_place2,short color,Rect c_re
// Finally place processed graphics // Finally place processed graphics
SetPort(GetWindowPort(mainPtr)); SetPort(GetWindowPort(mainPtr));
rect_draw_some_item(talk_gworld,oldRect,talk_gworld,talk_area_rect,0,1); rect_draw_some_item(talk_gworld,oldRect,talk_area_rect,ul);
SetPort(old_port); SetPort(old_port);
// Clean up strings // Clean up strings
@@ -1391,7 +1385,7 @@ void refresh_talking()
{ {
Rect tempRect; Rect tempRect;
GetPortBounds(talk_gworld,&tempRect); GetPortBounds(talk_gworld,&tempRect);
rect_draw_some_item(talk_gworld,tempRect,talk_gworld,talk_area_rect,0,1); rect_draw_some_item(talk_gworld,tempRect,talk_area_rect,ul);
} }
short scan_for_response(char *str) short scan_for_response(char *str)

View File

@@ -37,7 +37,7 @@ void add_explosion(location dest,short val_to_place,short place_type,short boom_
void do_missile_anim(short num_steps,location missile_origin,short sound_num) ; void do_missile_anim(short num_steps,location missile_origin,short sound_num) ;
void do_explosion_anim(short sound_num,short expand); void do_explosion_anim(short sound_num,short expand);
void click_shop_rect(Rect area_rect); void click_shop_rect(Rect area_rect);
void draw_shop_graphics(short draw_mode,Rect clip_area_rect); void draw_shop_graphics(bool pressed,Rect clip_area_rect);
void refresh_shopping(); void refresh_shopping();
cItemRec store_mage_spells(short which_s) ; cItemRec store_mage_spells(short which_s) ;
cItemRec store_priest_spells(short which_s); cItemRec store_priest_spells(short which_s);

View File

@@ -143,15 +143,12 @@ void put_pc_screen()
ForeColor(whiteColor); ForeColor(whiteColor);
// Put food, gold, day // Put food, gold, day
sprintf((char *) to_draw, "%d", (short) univ.party.gold); sprintf((char *) to_draw, "%d", (short) univ.party.gold);
win_draw_string( pc_stats_gworld,small_erase_rects[1], win_draw_string( pc_stats_gworld,small_erase_rects[1],to_draw,0,10);
to_draw,0,10,false);
sprintf((char *) to_draw, "%d", (short) univ.party.food); sprintf((char *) to_draw, "%d", (short) univ.party.food);
win_draw_string( pc_stats_gworld,small_erase_rects[0], win_draw_string( pc_stats_gworld,small_erase_rects[0],to_draw,0,10);
to_draw,0,10,false);
i = calc_day(); i = calc_day();
sprintf((char *) to_draw, "%d", i); sprintf((char *) to_draw, "%d", i);
win_draw_string( pc_stats_gworld,small_erase_rects[2], win_draw_string( pc_stats_gworld,small_erase_rects[2],to_draw,0,10);
to_draw,0,10,false);
ForeColor(blackColor); ForeColor(blackColor);
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
@@ -164,8 +161,7 @@ void put_pc_screen()
} }
sprintf((char *) to_draw, "%d. %-20s ", i + 1, (char *) univ.party[i].name.c_str()); sprintf((char *) to_draw, "%d. %-20s ", i + 1, (char *) univ.party[i].name.c_str());
win_draw_string( pc_stats_gworld,pc_buttons[i][0], win_draw_string( pc_stats_gworld,pc_buttons[i][0],to_draw,0,10);
to_draw,0,10,false);
TextFace(0); TextFace(0);
TextFace(bold); TextFace(bold);
ForeColor(blackColor); ForeColor(blackColor);
@@ -178,14 +174,12 @@ void put_pc_screen()
ForeColor(greenColor); ForeColor(greenColor);
else ForeColor(redColor); else ForeColor(redColor);
sprintf((char *) to_draw, "%-3d ",univ.party[i].cur_health); sprintf((char *) to_draw, "%-3d ",univ.party[i].cur_health);
win_draw_string( pc_stats_gworld,pc_buttons[i][1], win_draw_string( pc_stats_gworld,pc_buttons[i][1],to_draw,0,10);
to_draw,0,10,false);
if (univ.party[i].cur_sp == univ.party[i].max_sp) if (univ.party[i].cur_sp == univ.party[i].max_sp)
ForeColor(blueColor); ForeColor(blueColor);
else ForeColor(magentaColor); else ForeColor(magentaColor);
sprintf((char *) to_draw, "%-3d ",univ.party[i].cur_sp); sprintf((char *) to_draw, "%-3d ",univ.party[i].cur_sp);
win_draw_string( pc_stats_gworld,pc_buttons[i][2], win_draw_string( pc_stats_gworld,pc_buttons[i][2],to_draw,0,10);
to_draw,0,10,false);
ForeColor(blackColor); ForeColor(blackColor);
draw_pc_effects(i); draw_pc_effects(i);
break; break;
@@ -212,8 +206,7 @@ void put_pc_screen()
break; break;
} }
if (univ.party[i].main_status != 1) if (univ.party[i].main_status != 1)
win_draw_string( pc_stats_gworld,to_draw_rect, win_draw_string( pc_stats_gworld,to_draw_rect,to_draw,0,10);
to_draw,0,10,false);
// Now put trade and info buttons // Now put trade and info buttons
//rect_draw_some_item(mixed_gworld,info_from,pc_stats_gworld,pc_buttons[i][3],1,0); //rect_draw_some_item(mixed_gworld,info_from,pc_stats_gworld,pc_buttons[i][3],1,0);
@@ -223,7 +216,7 @@ void put_pc_screen()
to_draw_rect.right = pc_buttons[i][4].right + 1; to_draw_rect.right = pc_buttons[i][4].right + 1;
from_rect = info_from; from_rect = info_from;
from_rect.right = from_rect.left + to_draw_rect.right - to_draw_rect.left; from_rect.right = from_rect.left + to_draw_rect.right - to_draw_rect.left;
rect_draw_some_item(invenbtn_gworld,from_rect,pc_stats_gworld,to_draw_rect,1,0); rect_draw_some_item(invenbtn_gworld,from_rect,pc_stats_gworld,to_draw_rect,transparent);
} }
else { else {
for (j = 0; j < 5; j++) for (j = 0; j < 5; j++)
@@ -236,7 +229,7 @@ void put_pc_screen()
GetPortBounds(pc_stats_gworld, &to_draw_rect); GetPortBounds(pc_stats_gworld, &to_draw_rect);
Rect oldRect = to_draw_rect; Rect oldRect = to_draw_rect;
OffsetRect(&to_draw_rect,PC_WIN_UL_X,PC_WIN_UL_Y); OffsetRect(&to_draw_rect,PC_WIN_UL_X,PC_WIN_UL_Y);
rect_draw_some_item (pc_stats_gworld, oldRect, pc_stats_gworld, to_draw_rect, 0, 1); rect_draw_some_item (pc_stats_gworld, oldRect, to_draw_rect,ul);
SetPort(old_port); SetPort(old_port);
RGBBackColor(&store_color); RGBBackColor(&store_color);
@@ -302,15 +295,14 @@ void put_item_screen(short screen_num,short suppress_buttons)
TextFace(bold); TextFace(bold);
ForeColor(whiteColor); ForeColor(whiteColor);
sprintf((char *) to_draw, "Special items:"); sprintf((char *) to_draw, "Special items:");
win_draw_string( item_stats_gworld,upper_frame_rect, win_draw_string( item_stats_gworld,upper_frame_rect,to_draw,0,10);
to_draw,0,10,false);
ForeColor(blackColor); ForeColor(blackColor);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
i_num = i + item_offset; i_num = i + item_offset;
if (spec_item_array[i_num] >= 0) { if (spec_item_array[i_num] >= 0) {
// 2nd condition above is quite kludgy, in case it gets here with array all 0's // 2nd condition above is quite kludgy, in case it gets here with array all 0's
strcpy((char *) to_draw,scenario.scen_strs(60 + spec_item_array[i_num] * 2)); strcpy((char *) to_draw,scenario.scen_strs(60 + spec_item_array[i_num] * 2));
win_draw_string( item_stats_gworld,item_buttons[i][0],to_draw,0,10,false); win_draw_string( item_stats_gworld,item_buttons[i][0],to_draw,0,10);
place_item_button(3,i,4,0); place_item_button(3,i,4,0);
if ((scenario.special_items[spec_item_array[i_num]] % 10 == 1) if ((scenario.special_items[spec_item_array[i_num]] % 10 == 1)
@@ -328,15 +320,13 @@ void put_item_screen(short screen_num,short suppress_buttons)
ForeColor(whiteColor); ForeColor(whiteColor);
sprintf((char *) to_draw, "%s inventory:", sprintf((char *) to_draw, "%s inventory:",
(char *) univ.party[pc].name.c_str()); (char *) univ.party[pc].name.c_str());
win_draw_string( item_stats_gworld,upper_frame_rect, win_draw_string( item_stats_gworld,upper_frame_rect,to_draw,0,10);
to_draw,0,10,false);
ForeColor(blackColor); ForeColor(blackColor);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
i_num = i + item_offset; i_num = i + item_offset;
sprintf((char *) to_draw, "%d.",i_num + 1); sprintf((char *) to_draw, "%d.",i_num + 1);
win_draw_string( item_stats_gworld,item_buttons[i][0], win_draw_string( item_stats_gworld,item_buttons[i][0],to_draw,0,10);
to_draw,0,10,false);
dest_rect = item_buttons[i][0]; dest_rect = item_buttons[i][0];
dest_rect.left += 36; dest_rect.left += 36;
@@ -365,7 +355,7 @@ void put_item_screen(short screen_num,short suppress_buttons)
else sprintf((char *) to_draw, "%s",univ.party[pc].items[i_num].full_name.c_str()); else sprintf((char *) to_draw, "%s",univ.party[pc].items[i_num].full_name.c_str());
} }
dest_rect.left -= 2; dest_rect.left -= 2;
win_draw_string( item_stats_gworld,dest_rect,to_draw,0,10,false); win_draw_string( item_stats_gworld,dest_rect,to_draw,0,10);
TextFace(0); TextFace(0);
TextFace(bold); TextFace(bold);
ForeColor(blackColor); ForeColor(blackColor);
@@ -409,8 +399,7 @@ void put_item_screen(short screen_num,short suppress_buttons)
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
dest_rect = parts_of_area_to_draw[i]; dest_rect = parts_of_area_to_draw[i];
OffsetRect(&dest_rect,ITEM_WIN_UL_X,ITEM_WIN_UL_Y); OffsetRect(&dest_rect,ITEM_WIN_UL_X,ITEM_WIN_UL_Y);
rect_draw_some_item (item_stats_gworld, parts_of_area_to_draw[i], rect_draw_some_item (item_stats_gworld, parts_of_area_to_draw[i], dest_rect,ul);
item_stats_gworld, dest_rect, 0, 1);
} }
SetPort(old_port); SetPort(old_port);
@@ -485,12 +474,11 @@ void place_buy_button(short position,short pc_num,short item_num)
store_selling_values[position] = val_to_place; store_selling_values[position] = val_to_place;
dest_rect = item_buttons[position][5]; dest_rect = item_buttons[position][5];
dest_rect.right = dest_rect.left + 30; dest_rect.right = dest_rect.left + 30;
rect_draw_some_item (invenbtn_gworld, source_rect, item_stats_gworld, dest_rect, 1, 0); rect_draw_some_item (invenbtn_gworld, source_rect, item_stats_gworld, dest_rect, transparent);
sprintf((char *) store_str," %d",val_to_place); sprintf((char *) store_str," %d",val_to_place);
if (val_to_place >= 10000) if (val_to_place >= 10000)
TextFace(0); TextFace(0);
char_port_draw_string( item_stats_gworld,item_buttons[position][5], char_port_draw_string( item_stats_gworld,item_buttons[position][5],store_str,2,10);
store_str,2,10,false);
TextFace(bold); TextFace(bold);
} }
} }
@@ -513,14 +501,14 @@ void place_item_button(short which_button_to_put,short which_slot,short which_bu
InsetRect(&from_rect,2,2); InsetRect(&from_rect,2,2);
if (extra_val >= 150) { if (extra_val >= 150) {
from_rect = get_custom_rect(extra_val - 150); from_rect = get_custom_rect(extra_val - 150);
rect_draw_some_item (spec_scen_g, from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item (spec_scen_g, from_rect, item_stats_gworld, to_rect,transparent);
} }
else rect_draw_some_item (tiny_obj_gworld, from_rect, item_stats_gworld, to_rect, 1, 0); else rect_draw_some_item (tiny_obj_gworld, from_rect, item_stats_gworld, to_rect, transparent);
return; return;
} }
if (which_button_to_put < 4) { // this means put a regular item button if (which_button_to_put < 4) { // this means put a regular item button
item_area_button_active[which_slot][which_button_position] = true; item_area_button_active[which_slot][which_button_position] = true;
rect_draw_some_item (invenbtn_gworld, item_buttons_from[which_button_to_put], item_stats_gworld, item_buttons[which_slot][which_button_position], 1, 0); rect_draw_some_item (invenbtn_gworld, item_buttons_from[which_button_to_put], item_stats_gworld, item_buttons[which_slot][which_button_position], transparent);
} }
if (which_button_to_put == 10) { // this means put all 4 if (which_button_to_put == 10) { // this means put all 4
item_area_button_active[which_slot][1] = true; item_area_button_active[which_slot][1] = true;
@@ -530,7 +518,7 @@ void place_item_button(short which_button_to_put,short which_slot,short which_bu
from_rect = item_buttons_from[0]; from_rect.right = item_buttons_from[3].right; from_rect = item_buttons_from[0]; from_rect.right = item_buttons_from[3].right;
to_rect = item_buttons[which_slot][1]; to_rect = item_buttons[which_slot][1];
to_rect.right = to_rect.left + from_rect.right - from_rect.left; to_rect.right = to_rect.left + from_rect.right - from_rect.left;
rect_draw_some_item (invenbtn_gworld, from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item (invenbtn_gworld, from_rect, item_stats_gworld, to_rect, transparent);
} }
if (which_button_to_put == 11) { // this means put right 3 if (which_button_to_put == 11) { // this means put right 3
item_area_button_active[which_slot][2] = true; item_area_button_active[which_slot][2] = true;
@@ -539,7 +527,7 @@ void place_item_button(short which_button_to_put,short which_slot,short which_bu
from_rect = item_buttons_from[1]; from_rect.right = item_buttons_from[3].right; from_rect = item_buttons_from[1]; from_rect.right = item_buttons_from[3].right;
to_rect = item_buttons[which_slot][2]; to_rect = item_buttons[which_slot][2];
to_rect.right = to_rect.left + from_rect.right - from_rect.left; to_rect.right = to_rect.left + from_rect.right - from_rect.left;
rect_draw_some_item (invenbtn_gworld, from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item (invenbtn_gworld, from_rect, item_stats_gworld, to_rect, transparent);
} }
} }
//Rect get_custom_rect (short which_rect) //// //Rect get_custom_rect (short which_rect) ////
@@ -559,19 +547,19 @@ void place_item_bottom_buttons()
if (univ.party[i].main_status == 1) { if (univ.party[i].main_status == 1) {
item_bottom_button_active[i] = true; item_bottom_button_active[i] = true;
to_rect = item_screen_button_rects[i]; to_rect = item_screen_button_rects[i];
rect_draw_some_item (invenbtn_gworld, but_from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item (invenbtn_gworld, but_from_rect, item_stats_gworld, to_rect, transparent);
pc_from_rect = get_party_template_rect(i,0); pc_from_rect = get_party_template_rect(i,0);
InsetRect(&to_rect,2,2); InsetRect(&to_rect,2,2);
rect_draw_some_item (party_template_gworld, pc_from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item (party_template_gworld, pc_from_rect, item_stats_gworld, to_rect, transparent);
} }
else item_bottom_button_active[i] = false; else item_bottom_button_active[i] = false;
} }
to_rect = item_screen_button_rects[6]; to_rect = item_screen_button_rects[6];
rect_draw_some_item(invenbtn_gworld, spec_from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item(invenbtn_gworld, spec_from_rect, item_stats_gworld, to_rect, transparent);
to_rect = item_screen_button_rects[7]; to_rect = item_screen_button_rects[7];
rect_draw_some_item(invenbtn_gworld, job_from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item(invenbtn_gworld, job_from_rect, item_stats_gworld, to_rect, transparent);
to_rect = item_screen_button_rects[8]; to_rect = item_screen_button_rects[8];
rect_draw_some_item(invenbtn_gworld, help_from_rect, item_stats_gworld, to_rect, 1, 0); rect_draw_some_item(invenbtn_gworld, help_from_rect, item_stats_gworld, to_rect, transparent);
} }
Rect get_party_template_rect(short pc_num,short mode) Rect get_party_template_rect(short pc_num,short mode)
@@ -634,22 +622,22 @@ void refresh_stat_areas(short mode)
short i,x; short i,x;
Rect dest_rect,parts_of_area_to_draw[3] = {{0,0,17,271},{16,0,123,256},{123,0,144,271}}; Rect dest_rect,parts_of_area_to_draw[3] = {{0,0,17,271},{16,0,123,256},{123,0,144,271}};
x = mode * 10; //x = mode * 10;
GetPortBounds(pc_stats_gworld, &dest_rect); GetPortBounds(pc_stats_gworld, &dest_rect);
Rect oldRect = dest_rect; Rect oldRect = dest_rect;
OffsetRect(&dest_rect,PC_WIN_UL_X,PC_WIN_UL_Y); OffsetRect(&dest_rect,PC_WIN_UL_X,PC_WIN_UL_Y);
rect_draw_some_item (pc_stats_gworld, oldRect, pc_stats_gworld, dest_rect, x, 1); if(mode == 1) x = addOver;
else x = srcCopy;
rect_draw_some_item (pc_stats_gworld, oldRect, dest_rect,ul, x);
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
dest_rect = parts_of_area_to_draw[i]; dest_rect = parts_of_area_to_draw[i];
OffsetRect(&dest_rect,ITEM_WIN_UL_X,ITEM_WIN_UL_Y); OffsetRect(&dest_rect,ITEM_WIN_UL_X,ITEM_WIN_UL_Y);
rect_draw_some_item (item_stats_gworld, parts_of_area_to_draw[i], rect_draw_some_item (item_stats_gworld, parts_of_area_to_draw[i], dest_rect,ul, x);
item_stats_gworld, dest_rect, x, 1);
} }
GetPortBounds(text_area_gworld, &dest_rect); GetPortBounds(text_area_gworld, &dest_rect);
oldRect = dest_rect; oldRect = dest_rect;
OffsetRect(&dest_rect,TEXT_WIN_UL_X,TEXT_WIN_UL_Y); OffsetRect(&dest_rect,TEXT_WIN_UL_X,TEXT_WIN_UL_Y);
rect_draw_some_item (text_area_gworld,oldRect, text_area_gworld, dest_rect, x, 1); rect_draw_some_item (text_area_gworld,oldRect, dest_rect,ul, x);
} }
//// ////
@@ -706,7 +694,7 @@ void draw_pc_effects(short pc)
GetBackColor(&store_color); GetBackColor(&store_color);
BackColor(whiteColor); BackColor(whiteColor);
if (pc >= 10) { if (pc >= 10) {return; // TODO: This is a temporary measure only!
pc -= 10; pc -= 10;
right_limit = 490; right_limit = 490;
dest_rect = dlog_dest_rect; dest_rect = dlog_dest_rect;
@@ -726,88 +714,88 @@ void draw_pc_effects(short pc)
if (univ.party[pc].main_status % 10 != 1) if (univ.party[pc].main_status % 10 != 1)
return; return;
// TODO: This used to draw the status icons in the spell dialog, but it no longer does. Fix that.
if ((univ.party[pc].status[STATUS_POISONED_WEAPON] > 0) && (dest_rect.right < right_limit)) { if ((univ.party[pc].status[STATUS_POISONED_WEAPON] > 0) && (dest_rect.right < right_limit)) {
rect_draw_some_item (status_gworld,source_rects[4],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[4],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if (univ.party[pc].status[STATUS_BLESS_CURSE] > 0) { if (univ.party[pc].status[STATUS_BLESS_CURSE] > 0) {
rect_draw_some_item (status_gworld,source_rects[2],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[2],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
else if (univ.party[pc].status[STATUS_BLESS_CURSE] < 0) { else if (univ.party[pc].status[STATUS_BLESS_CURSE] < 0) {
rect_draw_some_item (status_gworld,source_rects[3],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[3],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if (univ.party[pc].status[STATUS_POISON] > 0) { if (univ.party[pc].status[STATUS_POISON] > 0) {
rect_draw_some_item (status_gworld,source_rects[(univ.party[pc].status[STATUS_POISON] > 4) ? 1 : 0],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[(univ.party[pc].status[STATUS_POISON] > 4) ? 1 : 0],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if (univ.party[pc].status[STATUS_INVULNERABLE] > 0) { if (univ.party[pc].status[STATUS_INVULNERABLE] > 0) {
rect_draw_some_item (status_gworld,source_rects[5],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[5],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if (univ.party[pc].status[STATUS_HASTE_SLOW] > 0) { if (univ.party[pc].status[STATUS_HASTE_SLOW] > 0) {
rect_draw_some_item (status_gworld,source_rects[6],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[6],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
else if (univ.party[pc].status[STATUS_HASTE_SLOW] < 0) { else if (univ.party[pc].status[STATUS_HASTE_SLOW] < 0) {
rect_draw_some_item (status_gworld,source_rects[8],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[8],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
}else{ }else{
rect_draw_some_item (status_gworld,source_rects[7],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[7],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_MAGIC_RESISTANCE] > 0) && (dest_rect.right < right_limit)) { if ((univ.party[pc].status[STATUS_MAGIC_RESISTANCE] > 0) && (dest_rect.right < right_limit)) {
rect_draw_some_item (status_gworld,source_rects[9],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[9],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_WEBS] > 0) && (dest_rect.right < right_limit)) { if ((univ.party[pc].status[STATUS_WEBS] > 0) && (dest_rect.right < right_limit)) {
rect_draw_some_item (status_gworld,source_rects[10],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[10],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_DISEASE] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_DISEASE] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[11],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[11],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_INVISIBLE] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_INVISIBLE] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[12],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[12],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_DUMB] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_DUMB] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[13],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[13],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_MARTYRS_SHIELD] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_MARTYRS_SHIELD] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[14],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[14],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_ASLEEP] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_ASLEEP] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[15],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[15],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_PARALYZED] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_PARALYZED] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[16],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[16],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
if ((univ.party[pc].status[STATUS_ACID] > 0) && (dest_rect.right < right_limit)){ if ((univ.party[pc].status[STATUS_ACID] > 0) && (dest_rect.right < right_limit)){
rect_draw_some_item (status_gworld,source_rects[17],pc_stats_gworld,dest_rect,1,dest); rect_draw_some_item (status_gworld,source_rects[17],pc_stats_gworld,dest_rect,transparent);
dest_rect.left += 13; dest_rect.left += 13;
dest_rect.right += 13; dest_rect.right += 13;
} }
@@ -1372,7 +1360,7 @@ void print_buf ()
OffsetRect(&dest_rect,TEXT_WIN_UL_X,TEXT_WIN_UL_Y); OffsetRect(&dest_rect,TEXT_WIN_UL_X,TEXT_WIN_UL_Y);
SetPort(GetWindowPort(mainPtr)); SetPort(GetWindowPort(mainPtr));
rect_draw_some_item (text_area_gworld, store_text_rect, text_area_gworld, dest_rect, 0, 1); rect_draw_some_item (text_area_gworld, store_text_rect, dest_rect,ul);
SetPort(old_port); SetPort(old_port);
} }
@@ -1421,6 +1409,7 @@ void display_string(char *str)
/* Draw a bitmap in the world window. hor in 0 .. 8, vert in 0 .. 8, /* 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. */ object is ptr. to bitmap to be drawn, and masking is for Copybits. */
// TODO: Might as well make this call rect_draw_some_item instead of directly calling CopyBits
void Draw_Some_Item (GWorldPtr src_gworld, Rect src_rect, GWorldPtr targ_gworld, void Draw_Some_Item (GWorldPtr src_gworld, Rect src_rect, GWorldPtr targ_gworld,
location target, char masked, short main_win) location target, char masked, short main_win)
{ {

View File

@@ -1538,8 +1538,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
if (modeless_exists[5] == true) { if (modeless_exists[5] == true) {
SetPort(GetDialogPort(the_dialog)); SetPort(GetDialogPort(the_dialog));
tileImage(map_bar_rect,bg_gworld,bg[4]); tileImage(map_bar_rect,bg_gworld,bg[4]);
char_port_draw_string( GetDialogPort(modeless_dialogs[5]), char_port_draw_string( GetDialogPort(modeless_dialogs[5]),map_bar_rect,"No map here.",0,12);
map_bar_rect,"No map here.",0,12,false);
draw_pcs = false; draw_pcs = false;
SetPort( map_gworld); SetPort( map_gworld);
} }
@@ -1551,8 +1550,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
if (modeless_exists[5] == true) { if (modeless_exists[5] == true) {
SetPort(GetDialogPort(the_dialog)); SetPort(GetDialogPort(the_dialog));
tileImage(map_bar_rect,bg_gworld,bg[4]); tileImage(map_bar_rect,bg_gworld,bg[4]);
char_port_draw_string( GetDialogPort(modeless_dialogs[5]), char_port_draw_string( GetDialogPort(modeless_dialogs[5]),map_bar_rect,"This place defies mapping.",0,12);
map_bar_rect,"This place defies mapping.",0,12,false);
draw_pcs = false; draw_pcs = false;
SetPort( map_gworld); SetPort( map_gworld);
} }
@@ -1633,7 +1631,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
pic = pic % 1000; pic = pic % 1000;
custom_from = coord_to_rect(pic % 10, pic / 10); custom_from = coord_to_rect(pic % 10, pic / 10);
OffsetRect(&custom_from,-13,-13); OffsetRect(&custom_from,-13,-13);
rect_draw_some_item(spec_scen_g,custom_from,map_gworld,draw_rect,0,0); rect_draw_some_item(spec_scen_g,custom_from,map_gworld,draw_rect);
} }
} }
else switch ((pic >= 400) ? anim_map_pats[pic - 400] : map_pats[pic]) { else switch ((pic >= 400) ? anim_map_pats[pic - 400] : map_pats[pic]) {
@@ -1643,8 +1641,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
6 * (terrain_pic[what_ter] % 10),6 * (terrain_pic[what_ter] / 10)); 6 * (terrain_pic[what_ter] % 10),6 * (terrain_pic[what_ter] / 10));
else OffsetRect(&ter_temp_from, else OffsetRect(&ter_temp_from,
24 * ((terrain_pic[what_ter] - 400) / 5),6 * ((terrain_pic[what_ter] - 400) % 5) + 156); 24 * ((terrain_pic[what_ter] - 400) / 5),6 * ((terrain_pic[what_ter] - 400) % 5) + 156);
rect_draw_some_item(small_ter_gworld,ter_temp_from, rect_draw_some_item(small_ter_gworld,ter_temp_from,map_gworld,draw_rect);
map_gworld,draw_rect,0,0);
break; break;
default: default:
@@ -1695,7 +1692,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
21, PICT_DLG, false,0); 21, PICT_DLG, false,0);
ForeColor(whiteColor); ForeColor(whiteColor);
char_port_draw_string( GetDialogPort(modeless_dialogs[5]), char_port_draw_string( GetDialogPort(modeless_dialogs[5]),
map_title_rect,"Your map: (Hit Escape to close.)",0,12,false); map_title_rect,"Your map: (Hit Escape to close.)",0,12);
ForeColor(blackColor); ForeColor(blackColor);
/*SetPort( the_dialog); /*SetPort( the_dialog);
@@ -1707,7 +1704,7 @@ pascal void draw_map (DialogPtr the_dialog, short the_item)
PenSize(1,1); */ PenSize(1,1); */
} }
rect_draw_some_item(map_gworld,area_to_draw_from,map_gworld,area_to_draw_on,0,2); rect_draw_some_item(map_gworld,area_to_draw_from,map_gworld,area_to_draw_on);
} }
// Now place PCs and monsters // Now place PCs and monsters

View File

@@ -461,7 +461,8 @@ void cParty::readFrom(std::istream& file){
} }
cPlayer& cParty::operator[](unsigned short n){ cPlayer& cParty::operator[](unsigned short n){
if(n >= 6) throw std::out_of_range("Attempt to access a player that doesn't exist."); if(n > 6) throw std::out_of_range("Attempt to access a player that doesn't exist.");
else if(n == 6) return adven[0]; // TODO: PC #6 should never be accessed, but bounds checking is rarely done, so this is a quick fix.
return adven[n]; return adven[n];
} }

View File

@@ -58,9 +58,9 @@ void cButton::draw(){
to_gw = (GWorldPtr) parent->win; to_gw = (GWorldPtr) parent->win;
from_rect = btnRects[btnGW[type]][depressed]; from_rect = btnRects[btnGW[type]][depressed];
to_rect = frame; to_rect = frame;
rect_draw_some_item(from_gw,from_rect,to_gw,to_rect,0,2); rect_draw_some_item(from_gw,from_rect,to_gw,to_rect); // TODO: This originally drew to dest 2 (dialog window); does it still?
RGBForeColor(&parent->defTextClr); RGBForeColor(&parent->defTextClr);
char_win_draw_string(parent->win,to_rect,lbl.c_str(),1,8,false); char_win_draw_string(parent->win,to_rect,lbl.c_str(),1,8);
// TODO: Adjust string location as appropriate // TODO: Adjust string location as appropriate
// Tiny button string location should be shifted right 20 pixels (or possibly 18) // Tiny button string location should be shifted right 20 pixels (or possibly 18)
// Push button string should be centred below the button // Push button string should be centred below the button
@@ -225,9 +225,9 @@ void cLed::draw(){
to_gw = (GWorldPtr) parent->win; to_gw = (GWorldPtr) parent->win;
from_rect = ledRects[state][depressed]; from_rect = ledRects[state][depressed];
to_rect = frame; to_rect = frame;
rect_draw_some_item(from_gw,from_rect,to_gw,to_rect,0,2); rect_draw_some_item(from_gw,from_rect,to_gw,to_rect);
RGBForeColor(&parent->defTextClr); RGBForeColor(&parent->defTextClr);
char_win_draw_string(parent->win,to_rect,lbl.c_str(),1,8,false); char_win_draw_string(parent->win,to_rect,lbl.c_str(),1,8);
// TODO: Adjust string location as appropriate // TODO: Adjust string location as appropriate
// String location should be shifted right 20 pixels (or possibly 18) // String location should be shifted right 20 pixels (or possibly 18)
ForeColor(blackColor); ForeColor(blackColor);

View File

@@ -122,10 +122,10 @@ void cTextMsg::draw(){
RGBForeColor(&draw_color); RGBForeColor(&draw_color);
if (to_rect.bottom - to_rect.top < 20) { // essentially, it's a single line if (to_rect.bottom - to_rect.top < 20) { // essentially, it's a single line
to_rect.left += 3; to_rect.left += 3;
char_win_draw_string(parent->win,to_rect,lbl.c_str(),3,12,false); char_win_draw_string(parent->win,to_rect,lbl.c_str(),3,12);
}else { }else {
InsetRect(&to_rect,4,4); InsetRect(&to_rect,4,4);
char_win_draw_string(parent->win,to_rect,lbl.c_str(),0,textSize + 2,false); char_win_draw_string(parent->win,to_rect,lbl.c_str(),0,textSize + 2);
} }
} }

View File

@@ -533,7 +533,7 @@ void cPict::drawPresetTer(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect = calc_rect(num % 10, num / 10); Rect from_rect = calc_rect(num % 10, num / 10);
if (to_rect.right - to_rect.left > 28) if (to_rect.right - to_rect.left > 28)
InsetRect(&to_rect,4,0); InsetRect(&to_rect,4,0);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetTerAnim(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetTerAnim(short num, GWorldPtr to_gw, Rect to_rect){
@@ -544,7 +544,7 @@ void cPict::drawPresetTerAnim(short num, GWorldPtr to_gw, Rect to_rect){
InsetRect(&to_rect,4,0); InsetRect(&to_rect,4,0);
to_rect.right = to_rect.left + 28; to_rect.right = to_rect.left + 28;
} }
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
static Rect calcDefMonstRect(short i, short animFrame){ static Rect calcDefMonstRect(short i, short animFrame){
@@ -571,7 +571,7 @@ void cPict::drawPresetMonstSm(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 28; to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPresetMonstWide(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
@@ -584,14 +584,14 @@ void cPict::drawPresetMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
Rect from_rect = calcDefMonstRect(num, animFrame); Rect from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
m_start_pic = m_pic_index[num].i + 1; m_start_pic = m_pic_index[num].i + 1;
from_gw = monst[m_start_pic / 20]; from_gw = monst[m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
from_rect = calcDefMonstRect(num, animFrame); from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPresetMonstTall(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
@@ -605,14 +605,14 @@ void cPict::drawPresetMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
Rect from_rect = calcDefMonstRect(num, animFrame); Rect from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
m_start_pic = m_pic_index[num].i + 1; m_start_pic = m_pic_index[num].i + 1;
from_gw = monst[m_start_pic / 20]; from_gw = monst[m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
from_rect = calcDefMonstRect(num, animFrame); from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,0,18); OffsetRect(&small_monst_rect,0,18);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPresetMonstLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -626,28 +626,28 @@ void cPict::drawPresetMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
Rect from_rect = calcDefMonstRect(num, animFrame); Rect from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
m_start_pic = m_pic_index[num].i + 1; m_start_pic = m_pic_index[num].i + 1;
from_gw = monst[m_start_pic / 20]; from_gw = monst[m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
from_rect = calcDefMonstRect(num, animFrame); from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
m_start_pic = m_pic_index[num].i + 2; m_start_pic = m_pic_index[num].i + 2;
from_gw = monst[m_start_pic / 20]; from_gw = monst[m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
from_rect = calcDefMonstRect(num, animFrame); from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,-14,18); OffsetRect(&small_monst_rect,-14,18);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
m_start_pic = m_pic_index[num].i + 3; m_start_pic = m_pic_index[num].i + 3;
from_gw = monst[m_start_pic / 20]; from_gw = monst[m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
from_rect = calcDefMonstRect(num, animFrame); from_rect = calcDefMonstRect(num, animFrame);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPresetDlog(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetDlog(short num, GWorldPtr to_gw, Rect to_rect){
@@ -656,7 +656,7 @@ void cPict::drawPresetDlog(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = dlog; GWorldPtr from_gw = dlog;
Rect from_rect = {0,0,36,36}; Rect from_rect = {0,0,36,36};
OffsetRect(&from_rect,36 * (num % 4),36 * (num / 4)); OffsetRect(&from_rect,36 * (num % 4),36 * (num / 4));
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetDlogLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetDlogLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -665,7 +665,7 @@ void cPict::drawPresetDlogLg(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = dlog; GWorldPtr from_gw = dlog;
Rect from_rect = {0,0,72,72}; Rect from_rect = {0,0,72,72};
OffsetRect(&from_rect,36 * (num % 4),36 * (num / 4)); OffsetRect(&from_rect,36 * (num % 4),36 * (num / 4));
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetTalk(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetTalk(short num, GWorldPtr to_gw, Rect to_rect){
@@ -675,7 +675,7 @@ void cPict::drawPresetTalk(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = talk; GWorldPtr from_gw = talk;
Rect from_rect = {0,0,32,32}; Rect from_rect = {0,0,32,32};
OffsetRect(&from_rect,32 * (num % 10),32 * (num / 10)); OffsetRect(&from_rect,32 * (num % 10),32 * (num / 10));
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetScen(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetScen(short num, GWorldPtr to_gw, Rect to_rect){
@@ -684,7 +684,7 @@ void cPict::drawPresetScen(short num, GWorldPtr to_gw, Rect to_rect){
OffsetRect(&from_rect,32 * (num % 5),32 * (num / 5)); OffsetRect(&from_rect,32 * (num % 5),32 * (num / 5));
to_rect.right = to_rect.left + 32; to_rect.right = to_rect.left + 32;
to_rect.bottom = to_rect.top + 32; to_rect.bottom = to_rect.top + 32;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetScenLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetScenLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -693,7 +693,7 @@ void cPict::drawPresetScenLg(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.bottom = to_rect.top + 64; to_rect.bottom = to_rect.top + 64;
Rect from_rect = {0,0,64,64}; Rect from_rect = {0,0,64,64};
OffsetRect(&from_rect, num * 64, 0); OffsetRect(&from_rect, num * 64, 0);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetItem(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetItem(short num, GWorldPtr to_gw, Rect to_rect){
@@ -710,7 +710,7 @@ void cPict::drawPresetItem(short num, GWorldPtr to_gw, Rect to_rect){
InsetRect(&to_rect,5,9); InsetRect(&to_rect,5,9);
OffsetRect(&from_rect,18 * (num % 10), 18 * (num / 10)); OffsetRect(&from_rect,18 * (num % 10), 18 * (num / 10));
} }
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPresetPc(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetPc(short num, GWorldPtr to_gw, Rect to_rect){
@@ -719,7 +719,7 @@ void cPict::drawPresetPc(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 28; to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPresetField(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetField(short num, GWorldPtr to_gw, Rect to_rect){
@@ -728,7 +728,7 @@ void cPict::drawPresetField(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 28; to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPresetBoom(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetBoom(short num, GWorldPtr to_gw, Rect to_rect){
@@ -737,7 +737,7 @@ void cPict::drawPresetBoom(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 28; to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawFullSheet(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawFullSheet(short num, GWorldPtr to_gw, Rect to_rect){
@@ -746,7 +746,7 @@ void cPict::drawFullSheet(short num, GWorldPtr to_gw, Rect to_rect){
GetPortBounds(from_gw, &from_rect); GetPortBounds(from_gw, &from_rect);
to_rect.right = to_rect.left + (from_rect.right - from_rect.left); to_rect.right = to_rect.left + (from_rect.right - from_rect.left);
to_rect.bottom = to_rect.top + (from_rect.bottom - from_rect.top); to_rect.bottom = to_rect.top + (from_rect.bottom - from_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPresetMissile(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetMissile(short num, GWorldPtr to_gw, Rect to_rect){
@@ -757,7 +757,7 @@ void cPict::drawPresetMissile(short num, GWorldPtr to_gw, Rect to_rect){
PaintRect(&to_rect); PaintRect(&to_rect);
short i = animFrame == 7 ? 0 : animFrame + 1; short i = animFrame == 7 ? 0 : animFrame + 1;
OffsetRect(&from_rect,18 * i, 18 * num); OffsetRect(&from_rect,18 * i, 18 * num);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPresetTerMap(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPresetTerMap(short num, GWorldPtr to_gw, Rect to_rect){
@@ -766,7 +766,7 @@ void cPict::drawPresetTerMap(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 24; to_rect.right = to_rect.left + 24;
to_rect.bottom = to_rect.top + 24; to_rect.bottom = to_rect.top + 24;
OffsetRect(&from_rect,12 * (num % 10), 12 * (num / 10)); OffsetRect(&from_rect,12 * (num % 10), 12 * (num / 10));
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawStatusIcon(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawStatusIcon(short num, GWorldPtr to_gw, Rect to_rect){
@@ -775,7 +775,7 @@ void cPict::drawStatusIcon(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.right = to_rect.left + 12; to_rect.right = to_rect.left + 12;
to_rect.bottom = to_rect.top + 12; to_rect.bottom = to_rect.top + 12;
OffsetRect(&from_rect,12 * (num % 3), 12 * (num / 3)); OffsetRect(&from_rect,12 * (num % 3), 12 * (num / 3));
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawCustomTer(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomTer(short num, GWorldPtr to_gw, Rect to_rect){
@@ -784,7 +784,7 @@ void cPict::drawCustomTer(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.bottom = to_rect.top + 32; to_rect.bottom = to_rect.top + 32;
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawCustomTerAnim(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomTerAnim(short num, GWorldPtr to_gw, Rect to_rect){
@@ -794,7 +794,7 @@ void cPict::drawCustomTerAnim(short num, GWorldPtr to_gw, Rect to_rect){
num += animFrame; num += animFrame;
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawCustomMonstSm(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomMonstSm(short num, GWorldPtr to_gw, Rect to_rect){
@@ -807,7 +807,7 @@ void cPict::drawCustomMonstSm(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawCustomMonstWide(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
@@ -821,11 +821,11 @@ void cPict::drawCustomMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_gw = customSheets[get_custom_rect(num + 1,from_rect)]; from_gw = customSheets[get_custom_rect(num + 1,from_rect)];
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawCustomMonstTall(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
@@ -839,11 +839,11 @@ void cPict::drawCustomMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_gw = customSheets[get_custom_rect(num + 1,from_rect)]; from_gw = customSheets[get_custom_rect(num + 1,from_rect)];
OffsetRect(&small_monst_rect,0,18); OffsetRect(&small_monst_rect,0,18);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawCustomMonstLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -857,19 +857,19 @@ void cPict::drawCustomMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_gw = customSheets[get_custom_rect(num+1,from_rect)]; from_gw = customSheets[get_custom_rect(num+1,from_rect)];
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_gw = customSheets[get_custom_rect(num+2,from_rect)]; from_gw = customSheets[get_custom_rect(num+2,from_rect)];
OffsetRect(&small_monst_rect,-14,18); OffsetRect(&small_monst_rect,-14,18);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_gw = customSheets[get_custom_rect(num+3,from_rect)]; from_gw = customSheets[get_custom_rect(num+3,from_rect)];
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawCustomDlog(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomDlog(short num, GWorldPtr to_gw, Rect to_rect){
@@ -879,13 +879,13 @@ void cPict::drawCustomDlog(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
from_rect.right = from_rect.left + 18; from_rect.right = from_rect.left + 18;
from_rect.bottom = from_rect.top + 36; from_rect.bottom = from_rect.top + 36;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
from_gw = customSheets[get_custom_rect(num,from_rect)]; from_gw = customSheets[get_custom_rect(num,from_rect)];
OffsetRect(&to_rect,18,0); OffsetRect(&to_rect,18,0);
from_rect.right = from_rect.left + 18; from_rect.right = from_rect.left + 18;
from_rect.bottom = from_rect.top + 36; from_rect.bottom = from_rect.top + 36;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawCustomDlogLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomDlogLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -905,13 +905,13 @@ void cPict::drawCustomTalk(short num, GWorldPtr to_gw, Rect to_rect){
to_rect.bottom = to_rect.top + 32; to_rect.bottom = to_rect.top + 32;
from_rect.right = from_rect.left + 16; from_rect.right = from_rect.left + 16;
from_rect.bottom = from_rect.top + 32; from_rect.bottom = from_rect.top + 32;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
from_gw = customSheets[get_custom_rect(num+1,from_rect)]; from_gw = customSheets[get_custom_rect(num+1,from_rect)];
OffsetRect(&to_rect,16,0); OffsetRect(&to_rect,16,0);
from_rect.right = from_rect.left + 16; from_rect.right = from_rect.left + 16;
from_rect.bottom = from_rect.top + 32; from_rect.bottom = from_rect.top + 32;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawCustomItem(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomItem(short num, GWorldPtr to_gw, Rect to_rect){
@@ -921,7 +921,7 @@ void cPict::drawCustomItem(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect; Rect from_rect;
GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)]; GWorldPtr from_gw = customSheets[get_custom_rect(num,from_rect)];
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawCustomMissile(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomMissile(short num, GWorldPtr to_gw, Rect to_rect){
@@ -933,7 +933,7 @@ void cPict::drawCustomMissile(short num, GWorldPtr to_gw, Rect to_rect){
if(animFrame >= 4) OffsetRect(&from_rect, 0, 18); if(animFrame >= 4) OffsetRect(&from_rect, 0, 18);
PaintRect(&to_rect); PaintRect(&to_rect);
InsetRect(&to_rect,5,9); InsetRect(&to_rect,5,9);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawCustomTerMap(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawCustomTerMap(short num, GWorldPtr to_gw, Rect to_rect){
@@ -945,7 +945,7 @@ void cPict::drawCustomTerMap(short num, GWorldPtr to_gw, Rect to_rect){
OffsetRect(&from_rect, (num / 3) * 12, (num % 3) * 12); OffsetRect(&from_rect, (num / 3) * 12, (num % 3) * 12);
to_rect.right = to_rect.left + 24; to_rect.right = to_rect.left + 24;
to_rect.bottom = to_rect.top + 24; to_rect.bottom = to_rect.top + 24;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPartyMonstSm(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyMonstSm(short num, GWorldPtr to_gw, Rect to_rect){
@@ -955,7 +955,7 @@ void cPict::drawPartyMonstSm(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = save; GWorldPtr from_gw = save;
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPartyMonstWide(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
@@ -967,11 +967,11 @@ void cPict::drawPartyMonstWide(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top + 7);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
from_rect = get_custom_rect(num+1); from_rect = get_custom_rect(num+1);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPartyMonstTall(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
@@ -983,11 +983,11 @@ void cPict::drawPartyMonstTall(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left + 7,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
OffsetRect(&small_monst_rect,0,18); OffsetRect(&small_monst_rect,0,18);
from_rect = get_custom_rect(num+1); from_rect = get_custom_rect(num+1);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPartyMonstLg(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
@@ -999,19 +999,19 @@ void cPict::drawPartyMonstLg(short num, GWorldPtr to_gw, Rect to_rect){
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
OffsetRect(&small_monst_rect,to_rect.left,to_rect.top); OffsetRect(&small_monst_rect,to_rect.left,to_rect.top);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
from_rect = get_custom_rect(num+1); from_rect = get_custom_rect(num+1);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
OffsetRect(&small_monst_rect,-14,18); OffsetRect(&small_monst_rect,-14,18);
from_rect = get_custom_rect(num+2); from_rect = get_custom_rect(num+2);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
from_rect = get_custom_rect(num+3); from_rect = get_custom_rect(num+3);
rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, small_monst_rect, transparent);
} }
void cPict::drawPartyScen(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyScen(short num, GWorldPtr to_gw, Rect to_rect){
@@ -1020,7 +1020,7 @@ void cPict::drawPartyScen(short num, GWorldPtr to_gw, Rect to_rect){
OffsetRect(&from_rect,32 * (num % 5),32 * (num / 5)); OffsetRect(&from_rect,32 * (num % 5),32 * (num / 5));
to_rect.right = to_rect.left + 32; to_rect.right = to_rect.left + 32;
to_rect.bottom = to_rect.top + 32; to_rect.bottom = to_rect.top + 32;
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 0, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect);
} }
void cPict::drawPartyItem(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyItem(short num, GWorldPtr to_gw, Rect to_rect){
@@ -1030,7 +1030,7 @@ void cPict::drawPartyItem(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = save; GWorldPtr from_gw = save;
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
void cPict::drawPartyPc(short num, GWorldPtr to_gw, Rect to_rect){ void cPict::drawPartyPc(short num, GWorldPtr to_gw, Rect to_rect){
@@ -1040,7 +1040,7 @@ void cPict::drawPartyPc(short num, GWorldPtr to_gw, Rect to_rect){
GWorldPtr from_gw = save; GWorldPtr from_gw = save;
Rect from_rect = get_custom_rect(num); Rect from_rect = get_custom_rect(num);
PaintRect(&to_rect); PaintRect(&to_rect);
rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, 1, 0); rect_draw_some_item(from_gw, from_rect, to_gw, to_rect, transparent);
} }
cPict::~cPict() {} cPict::~cPict() {}

View File

@@ -515,7 +515,7 @@ void draw_preset_ter_pic(short which_g,Rect& rect){ // terrain
Rect from_rect = calc_rect(which_g % 10, which_g / 10); Rect from_rect = calc_rect(which_g % 10, which_g / 10);
if (rect.right - rect.left > 28) if (rect.right - rect.left > 28)
InsetRect(&rect,4,0); InsetRect(&rect,4,0);
rect_draw_some_item(from_gworld,from_rect, to_gworld, rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect, to_gworld, rect);
} }
void draw_preset_anim_ter_pic(short which_g,Rect& rect){ // animated terrain void draw_preset_anim_ter_pic(short which_g,Rect& rect){ // animated terrain
@@ -531,7 +531,7 @@ void draw_preset_anim_ter_pic(short which_g,Rect& rect){ // animated terrain
InsetRect(&rect,4,0); InsetRect(&rect,4,0);
rect.right = rect.left + 28; rect.right = rect.left + 28;
} }
rect_draw_some_item(from_gworld ,from_rect, to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld ,from_rect, to_gworld,rect);
} }
void draw_preset_monst_pic_small(short which_g,Rect& rect){ // monster void draw_preset_monst_pic_small(short which_g,Rect& rect){ // monster
@@ -545,7 +545,7 @@ void draw_preset_monst_pic_small(short which_g,Rect& rect){ // monster
rect.right = rect.left + 28; rect.bottom = rect.top + 36; rect.right = rect.left + 28; rect.bottom = rect.top + 36;
if (w__gw == 0) if (w__gw == 0)
PaintRect(&rect); PaintRect(&rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,transparent);
} }
void draw_preset_monst_pic_wide(short which_g,Rect& rect){ void draw_preset_monst_pic_wide(short which_g,Rect& rect){
@@ -563,7 +563,7 @@ void draw_preset_monst_pic_wide(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,rect.left,rect.top + 7); OffsetRect(&small_monst_rect,rect.left,rect.top + 7);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
m_start_pic = m_pic_index[which_g].i + 1; m_start_pic = m_pic_index[which_g].i + 1;
from_gworld = dlg_gworlds["monst"][m_start_pic / 20]; from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
@@ -571,7 +571,7 @@ void draw_preset_monst_pic_wide(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_preset_monst_pic_tall(short which_g,Rect& rect){ void draw_preset_monst_pic_tall(short which_g,Rect& rect){
@@ -589,7 +589,7 @@ void draw_preset_monst_pic_tall(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,rect.left + 7,rect.top); OffsetRect(&small_monst_rect,rect.left + 7,rect.top);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
m_start_pic = m_pic_index[which_g].i + 1; m_start_pic = m_pic_index[which_g].i + 1;
from_gworld = dlg_gworlds["monst"][m_start_pic / 20]; from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
@@ -597,7 +597,7 @@ void draw_preset_monst_pic_tall(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,0,18); OffsetRect(&small_monst_rect,0,18);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_preset_monst_pic_large(short which_g,Rect& rect){ void draw_preset_monst_pic_large(short which_g,Rect& rect){
@@ -615,7 +615,7 @@ void draw_preset_monst_pic_large(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,rect.left,rect.top); OffsetRect(&small_monst_rect,rect.left,rect.top);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
m_start_pic = m_pic_index[which_g].i + 1; m_start_pic = m_pic_index[which_g].i + 1;
from_gworld = dlg_gworlds["monst"][m_start_pic / 20]; from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
@@ -623,7 +623,7 @@ void draw_preset_monst_pic_large(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
m_start_pic = m_pic_index[which_g].i + 2; m_start_pic = m_pic_index[which_g].i + 2;
from_gworld = dlg_gworlds["monst"][m_start_pic / 20]; from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
@@ -631,7 +631,7 @@ void draw_preset_monst_pic_large(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,-14,18); OffsetRect(&small_monst_rect,-14,18);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
m_start_pic = m_pic_index[which_g].i + 3; m_start_pic = m_pic_index[which_g].i + 3;
from_gworld = dlg_gworlds["monst"][m_start_pic / 20]; from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
m_start_pic = m_start_pic % 20; m_start_pic = m_start_pic % 20;
@@ -639,7 +639,7 @@ void draw_preset_monst_pic_large(short which_g,Rect& rect){
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&small_monst_rect); PaintRect(&small_monst_rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_preset_item_pic(short which_g,Rect& rect){ // item void draw_preset_item_pic(short which_g,Rect& rect){ // item
@@ -662,7 +662,7 @@ void draw_preset_item_pic(short which_g,Rect& rect){ // item
} }
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld); //GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,transparent);
} }
void draw_preset_dlg_pic(short which_g,Rect& rect){ // dialog void draw_preset_dlg_pic(short which_g,Rect& rect){ // dialog
@@ -672,7 +672,7 @@ void draw_preset_dlg_pic(short which_g,Rect& rect){ // dialog
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = {0,0,36,36}; Rect from_rect = {0,0,36,36};
OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4)); OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4));
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
} }
void draw_preset_pc_pic(short which_g,Rect& rect){ // PC void draw_preset_pc_pic(short which_g,Rect& rect){ // PC
@@ -686,7 +686,7 @@ void draw_preset_pc_pic(short which_g,Rect& rect){ // PC
//which_g -= 800; //which_g -= 800;
Rect from_rect = calc_rect(2 * (which_g / 8), which_g % 8); Rect from_rect = calc_rect(2 * (which_g / 8), which_g % 8);
PaintRect(&rect); PaintRect(&rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,transparent);
if (*dlg_gworlds["pc"] == NULL) if (*dlg_gworlds["pc"] == NULL)
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -698,7 +698,7 @@ void draw_preset_talk_pic(short which_g,Rect& rect){ // talk face
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = {0,0,32,32}; Rect from_rect = {0,0,32,32};
OffsetRect(&from_rect,32 * ((which_g - 1) % 10),32 * ((which_g - 1) / 10)); OffsetRect(&from_rect,32 * ((which_g - 1) % 10),32 * ((which_g - 1) / 10));
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,0); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
} }
void draw_item_info_help_pic(Rect& rect){ // item info help void draw_item_info_help_pic(Rect& rect){ // item info help
@@ -709,7 +709,7 @@ void draw_item_info_help_pic(Rect& rect){ // item info help
GWorldPtr to_gworld = (GWorldPtr)hDialog; GWorldPtr to_gworld = (GWorldPtr)hDialog;
rect.right = rect.left + from_rect.right - from_rect.left; rect.right = rect.left + from_rect.right - from_rect.left;
rect.bottom = rect.top + from_rect.bottom - from_rect.top; rect.bottom = rect.top + from_rect.bottom - from_rect.top;
rect_draw_some_item(from_gworld ,from_rect, to_gworld ,rect,0,draw_dest); rect_draw_some_item(from_gworld ,from_rect, to_gworld ,rect);
} }
void draw_pc_info_help_pic(Rect& rect){ // item info help void draw_pc_info_help_pic(Rect& rect){ // item info help
@@ -720,7 +720,7 @@ void draw_pc_info_help_pic(Rect& rect){ // item info help
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
rect.right = rect.left + from_rect.right - from_rect.left; rect.right = rect.left + from_rect.right - from_rect.left;
rect.bottom = rect.top + from_rect.bottom - from_rect.top; rect.bottom = rect.top + from_rect.bottom - from_rect.top;
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
} }
void draw_preset_scen_pic_large(short which_g,Rect& rect){ void draw_preset_scen_pic_large(short which_g,Rect& rect){
@@ -729,7 +729,7 @@ void draw_preset_scen_pic_large(short which_g,Rect& rect){
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld); //GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = {0,0,64,64}; Rect from_rect = {0,0,64,64};
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -742,7 +742,7 @@ void draw_help_pic(short which_g,Rect& rect){ // button help
rect.right = rect.left + from_rect.right; rect.right = rect.left + from_rect.right;
rect.bottom = rect.top + from_rect.bottom; rect.bottom = rect.top + from_rect.bottom;
OffsetRect(&from_rect,0,125 * which_g); OffsetRect(&from_rect,0,125 * which_g);
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -754,7 +754,7 @@ void draw_combat_ap_help_pic(Rect& rect){ // combat ap help
Rect from_rect = {0,0,100,275}; Rect from_rect = {0,0,100,275};
rect.right = rect.left + from_rect.right; rect.right = rect.left + from_rect.right;
rect.bottom = rect.top + from_rect.bottom; rect.bottom = rect.top + from_rect.bottom;
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -766,7 +766,7 @@ void draw_pc_stat_help_pic(Rect& rect){ // stat symbols help
Rect from_rect = {0,0,94,386}; Rect from_rect = {0,0,94,386};
rect.right = rect.left + from_rect.right; rect.right = rect.left + from_rect.right;
rect.bottom = rect.top + from_rect.bottom; rect.bottom = rect.top + from_rect.bottom;
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -779,7 +779,7 @@ void draw_preset_scen_pic(short which_g,Rect& rect){
OffsetRect(&from_rect,32 * (which_g % 5),32 * (which_g / 5)); OffsetRect(&from_rect,32 * (which_g % 5),32 * (which_g / 5));
rect.right = rect.left + 32; rect.right = rect.left + 32;
rect.bottom = rect.top + 32; rect.bottom = rect.top + 32;
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
DisposeGWorld(from_gworld); DisposeGWorld(from_gworld);
} }
@@ -791,7 +791,7 @@ void draw_preset_field_pic(short which_g,Rect& rect){ // dialog
Rect from_rect = calc_rect(which_g % 8, which_g / 8); Rect from_rect = calc_rect(which_g % 8, which_g / 8);
if (w__gw == 0) if (w__gw == 0)
PaintRect(&rect); PaintRect(&rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,transparent);
} }
void draw_custom_space_pic(short which_g,Rect& rect){ void draw_custom_space_pic(short which_g,Rect& rect){
@@ -805,7 +805,7 @@ void draw_custom_space_pic(short which_g,Rect& rect){
Rect from_rect = get_custom_rect(which_g); Rect from_rect = get_custom_rect(which_g);
if ((w__gw == 0) && (fr == true)) if ((w__gw == 0) && (fr == true))
PaintRect(&rect); PaintRect(&rect);
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,transparent);
} }
void draw_custom_monst_wide_pic(short which_g,Rect& rect){ void draw_custom_monst_wide_pic(short which_g,Rect& rect){
@@ -820,10 +820,10 @@ void draw_custom_monst_wide_pic(short which_g,Rect& rect){
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = get_custom_rect(which_g); Rect from_rect = get_custom_rect(which_g);
OffsetRect(&small_monst_rect,rect.left,rect.top + 7); OffsetRect(&small_monst_rect,rect.left,rect.top + 7);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
from_rect = get_custom_rect(which_g+1); from_rect = get_custom_rect(which_g+1);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_custom_monst_tall_pic(short which_g,Rect& rect){ void draw_custom_monst_tall_pic(short which_g,Rect& rect){
@@ -838,10 +838,10 @@ void draw_custom_monst_tall_pic(short which_g,Rect& rect){
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = get_custom_rect(which_g); Rect from_rect = get_custom_rect(which_g);
OffsetRect(&small_monst_rect,rect.left + 7,rect.top); OffsetRect(&small_monst_rect,rect.left + 7,rect.top);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
OffsetRect(&small_monst_rect,0,18); OffsetRect(&small_monst_rect,0,18);
from_rect = get_custom_rect(which_g+1); from_rect = get_custom_rect(which_g+1);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_custom_monst_large_pic(short which_g,Rect& rect){ void draw_custom_monst_large_pic(short which_g,Rect& rect){
@@ -856,16 +856,16 @@ void draw_custom_monst_large_pic(short which_g,Rect& rect){
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = get_custom_rect(which_g); Rect from_rect = get_custom_rect(which_g);
OffsetRect(&small_monst_rect,rect.left,rect.top); OffsetRect(&small_monst_rect,rect.left,rect.top);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
from_rect = get_custom_rect(which_g+1); from_rect = get_custom_rect(which_g+1);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
OffsetRect(&small_monst_rect,-14,18); OffsetRect(&small_monst_rect,-14,18);
from_rect = get_custom_rect(which_g+2); from_rect = get_custom_rect(which_g+2);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
OffsetRect(&small_monst_rect,14,0); OffsetRect(&small_monst_rect,14,0);
from_rect = get_custom_rect(which_g+3); from_rect = get_custom_rect(which_g+3);
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,transparent);
} }
void draw_custom_dlg_pic_split(short which_g,Rect& rect){ // dialog, split void draw_custom_dlg_pic_split(short which_g,Rect& rect){ // dialog, split
@@ -879,12 +879,12 @@ void draw_custom_dlg_pic_split(short which_g,Rect& rect){ // dialog, split
to_rect.bottom = to_rect.top + 36; to_rect.bottom = to_rect.top + 36;
from_rect.right = from_rect.left + 18; from_rect.right = from_rect.left + 18;
from_rect.bottom = from_rect.top + 36; from_rect.bottom = from_rect.top + 36;
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect);
from_rect = get_custom_rect(which_g + 1); from_rect = get_custom_rect(which_g + 1);
OffsetRect(&to_rect,18,0); OffsetRect(&to_rect,18,0);
from_rect.right = from_rect.left + 18; from_rect.right = from_rect.left + 18;
from_rect.bottom = from_rect.top + 36; from_rect.bottom = from_rect.top + 36;
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect);
} }
void draw_custom_talk_pic_split(short which_g,Rect& rect){ // facial graphic, split void draw_custom_talk_pic_split(short which_g,Rect& rect){ // facial graphic, split
@@ -898,12 +898,12 @@ void draw_custom_talk_pic_split(short which_g,Rect& rect){ // facial graphic, sp
to_rect.bottom = to_rect.top + 32; to_rect.bottom = to_rect.top + 32;
from_rect.right = from_rect.left + 16; from_rect.right = from_rect.left + 16;
from_rect.bottom = from_rect.top + 32; from_rect.bottom = from_rect.top + 32;
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect);
from_rect = get_custom_rect(which_g + 1); from_rect = get_custom_rect(which_g + 1);
OffsetRect(&to_rect,16,0); OffsetRect(&to_rect,16,0);
from_rect.right = from_rect.left + 16; from_rect.right = from_rect.left + 16;
from_rect.bottom = from_rect.top + 32; from_rect.bottom = from_rect.top + 32;
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect);
} }
void draw_preset_dlg_pic_large(short which_g,Rect& rect){ void draw_preset_dlg_pic_large(short which_g,Rect& rect){
@@ -913,5 +913,5 @@ void draw_preset_dlg_pic_large(short which_g,Rect& rect){
GWorldPtr to_gworld = (GWorldPtr) hDialog; GWorldPtr to_gworld = (GWorldPtr) hDialog;
Rect from_rect = {0,0,72,72}; Rect from_rect = {0,0,72,72};
OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4)); OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4));
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest); rect_draw_some_item(from_gworld,from_rect,to_gworld,rect);
} }

View File

@@ -594,13 +594,12 @@ void cd_draw_item(short dlog_num,short item_num){
case DLG_BUTTON: case DLG_DEFAULT_BTN: case DLG_BUTTON: case DLG_DEFAULT_BTN:
GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect); GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect);
rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect, rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect,
(GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[buttons[items[item_index].flag].type][0], items[item_index].rect,(Point){0,0});
items[item_index].rect,0,2);
RGBForeColor(&clr[2]); RGBForeColor(&clr[2]);
TextSize(12); TextSize(12);
OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0);
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) (buttons[items[item_index].flag].str),1,8,false); (char *) (buttons[items[item_index].flag].str),1,8);
OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0);
TextSize(10); TextSize(10);
ForeColor(blackColor); ForeColor(blackColor);
@@ -608,13 +607,12 @@ void cd_draw_item(short dlog_num,short item_num){
case DLG_CUSTOM_BTN: case DLG_CUSTOM_DEF_BTN: case DLG_CUSTOM_BTN: case DLG_CUSTOM_DEF_BTN:
GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect); GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect);
rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect, rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect,
(GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[buttons[items[item_index].flag].type][0], items[item_index].rect,(Point){0,0});
items[item_index].rect,0,2);
RGBForeColor(&clr[2]); RGBForeColor(&clr[2]);
TextSize(12); TextSize(12);
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) ((item_index < 10) ? text_long_str[item_index] : (char *) ((item_index < 10) ? text_long_str[item_index] :
text_short_str[item_index - 10]),1,8,false); text_short_str[item_index - 10]),1,8);
TextSize(10); TextSize(10);
ForeColor(blackColor); ForeColor(blackColor);
break; break;
@@ -623,19 +621,13 @@ void cd_draw_item(short dlog_num,short item_num){
GetPortBounds(dlg_buttons_gworld[9][0], &from_rect); GetPortBounds(dlg_buttons_gworld[9][0], &from_rect);
switch (items[item_index].flag) { switch (items[item_index].flag) {
case 0: case 0:
rect_draw_some_item(dlg_buttons_gworld[10][0], rect_draw_some_item(dlg_buttons_gworld[10][0], from_rect, items[item_index].rect,(Point){0,0});
from_rect, (GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[10][0],
items[item_index].rect,0,2);
break; break;
case 1: case 1:
rect_draw_some_item(dlg_buttons_gworld[9][1], rect_draw_some_item(dlg_buttons_gworld[9][1], from_rect, items[item_index].rect,(Point){0,0});
from_rect, (GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[9][1],
items[item_index].rect,0,2);
break; break;
case 2: case 2:
rect_draw_some_item(dlg_buttons_gworld[9][0], rect_draw_some_item(dlg_buttons_gworld[9][0], from_rect, items[item_index].rect,(Point){0,0});
from_rect, (GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[9][0],
items[item_index].rect,0,2);
break; break;
} }
break; break;
@@ -661,14 +653,14 @@ void cd_draw_item(short dlog_num,short item_num){
items[item_index].rect.left += 3; items[item_index].rect.left += 3;
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) ((item_index < 10) ? text_long_str[item_index] : (char *) ((item_index < 10) ? text_long_str[item_index] :
text_short_str[item_index - 10]),3,12,false); text_short_str[item_index - 10]),3,12);
items[item_index].rect.left -= 3; items[item_index].rect.left -= 3;
} }
else { else {
InsetRect(&items[item_index].rect,4,4); InsetRect(&items[item_index].rect,4,4);
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) ((item_index < 10) ? text_long_str[item_index] : (char *) ((item_index < 10) ? text_long_str[item_index] :
text_short_str[item_index - 10]),0,(items[item_index].type == DLG_TEXT_LARGE) ? 14 : 12,false); text_short_str[item_index - 10]),0,(items[item_index].type == DLG_TEXT_LARGE) ? 14 : 12);
InsetRect(&items[item_index].rect,-4,-4); InsetRect(&items[item_index].rect,-4,-4);
} }
// if ((items[item_index].type == DLG_TEXT_CLICKABLE) && (dlog_num == 989)) { // if ((items[item_index].type == DLG_TEXT_CLICKABLE) && (dlog_num == 989)) {
@@ -730,7 +722,7 @@ void cd_draw_item(short dlog_num,short item_num){
else OffsetRect(&to_rect, 0,(to_rect.bottom - to_rect.top) / 6); else OffsetRect(&to_rect, 0,(to_rect.bottom - to_rect.top) / 6);
if (items[item_index].active != 0) { if (items[item_index].active != 0) {
char_win_draw_string(dlgs[dlg_index].win,to_rect, char_win_draw_string(dlgs[dlg_index].win,to_rect,
labels[items[item_index].label_loc].str,2,12,false); labels[items[item_index].label_loc].str,2,12);
} }
TextFace(bold); TextFace(bold);
@@ -895,20 +887,19 @@ void cd_press_button(short dlog_num, short item_num){
TextSize(12); TextSize(12);
GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect); GetPortBounds(dlg_buttons_gworld[buttons[items[item_index].flag].type][0], &from_rect);
rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][1],from_rect, rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][1],from_rect,
(GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[buttons[items[item_index].flag].type][1], items[item_index].rect,(Point){0,0});
items[item_index].rect,0,2);
TextFace(bold); TextFace(bold);
RGBForeColor(&clr[3]); RGBForeColor(&clr[3]);
if (items[item_index].type < DLG_LED_BUTTON) { if (items[item_index].type < DLG_LED_BUTTON) {
OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0);
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) (buttons[items[item_index].flag].str),1,8,false); (char *) (buttons[items[item_index].flag].str),1,8);
OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0);
} }
else { else {
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) ((item_index < 10) ? text_long_str[item_index] : (char *) ((item_index < 10) ? text_long_str[item_index] :
text_short_str[item_index - 10]),1,8,false); text_short_str[item_index - 10]),1,8);
} }
if (play_sounds == true) { if (play_sounds == true) {
@@ -918,20 +909,19 @@ void cd_press_button(short dlog_num, short item_num){
else Delay(14,&dummy); else Delay(14,&dummy);
rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect, rect_draw_some_item(dlg_buttons_gworld[buttons[items[item_index].flag].type][0],from_rect,
(GWorldPtr)dlgs[dlg_index].win,//dlg_buttons_gworld[buttons[items[item_index].flag].type][0], items[item_index].rect,(Point){0,0});
items[item_index].rect,0,2);
RGBForeColor(&clr[2]); RGBForeColor(&clr[2]);
if (items[item_index].type < DLG_LED_BUTTON) { if (items[item_index].type < DLG_LED_BUTTON) {
OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,-1 * buttons[items[item_index].flag].left_adj,0);
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) (buttons[items[item_index].flag].str),1,8,false); (char *) (buttons[items[item_index].flag].str),1,8);
OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0); OffsetRect(&items[item_index].rect,buttons[items[item_index].flag].left_adj,0);
} }
else { else {
char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect, char_win_draw_string(dlgs[dlg_index].win,items[item_index].rect,
(char *) ((item_index < 10) ? text_long_str[item_index] : (char *) ((item_index < 10) ? text_long_str[item_index] :
text_short_str[item_index - 10]),1,8,false); text_short_str[item_index - 10]),1,8);
} }
TextFont(0); TextFont(0);

View File

@@ -24,7 +24,6 @@ CursorRef cursors[24] = {
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
}; };
void (*redraw_screen)(); void (*redraw_screen)();
Point* offset;
Rect bg[21]; Rect bg[21];
Rect map_pat[30]; Rect map_pat[30];
GWorldPtr bg_gworld; GWorldPtr bg_gworld;
@@ -35,11 +34,10 @@ CursorRef GetCursorFromPath(std::string filename, Point hotspot);
void clean_up_graphtool(){ void clean_up_graphtool(){
for(int i = 0; i < 24; i++) for(int i = 0; i < 24; i++)
DisposeNSCursor(cursors[i]); DisposeNSCursor(cursors[i]);
if(offset != NULL) delete offset;
CleanUp(); CleanUp();
} }
void init_graph_tool(void (*redraw_callback)(), Point* p){ void init_graph_tool(void (*redraw_callback)()){
redraw_screen = redraw_callback; redraw_screen = redraw_callback;
int i,j; int i,j;
static const Point cursor_hs[24] = { static const Point cursor_hs[24] = {
@@ -135,12 +133,6 @@ void init_graph_tool(void (*redraw_callback)(), Point* p){
GetFNum(fn2,&dungeon_font_num); GetFNum(fn2,&dungeon_font_num);
if (dungeon_font_num == 0) if (dungeon_font_num == 0)
GetFNum(fn3,&dungeon_font_num); GetFNum(fn3,&dungeon_font_num);
offset = p;
if(offset == NULL){
offset = new Point;
offset->h = 0;
offset->v = 0;
}
} }
unsigned short readUShort(unsigned char ** ptr){ unsigned short readUShort(unsigned char ** ptr){
@@ -322,85 +314,79 @@ void set_cursor(CursHandle which_curs){
} }
*/ */
// masked; // if 10 - make AddOver // masked; // if 10 - make AddOver
// main_win; // if 2, drawing onto dialog void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect,char mode){
void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect, PixMapHandle pix1, pix2;
char masked,short main_win){
PixMapHandle test1, test2;
const BitMap * store_dest;
GrafPtr cur_port; GrafPtr cur_port;
RGBColor store_color; RGBColor store_color;
//if (main_win == 2) {
GetBackColor(&store_color);
BackColor(whiteColor);
//}
GetBackColor(&store_color);
BackColor(whiteColor);
GetPort(&cur_port); GetPort(&cur_port);
if (src_gworld == NULL) { if (src_gworld == NULL) {
if (main_win == 0) { SetPort ( targ_gworld);
SetPort ( targ_gworld); PaintRect(&targ_rect);
PaintRect(&targ_rect); SetPort (cur_port);
SetPort (cur_port);
}
else PaintRect(&targ_rect);
return; return;
} }
store_dest = GetPortBitMapForCopyBits(cur_port); pix1 = GetPortPixMap(src_gworld);
test1 = GetPortPixMap(src_gworld); LockPixels(pix1);
pix2 = GetPortPixMap(targ_gworld);
LockPixels(pix2);
CopyBits((BitMap*)*pix1, (BitMap*)*pix2, &src_rect, &targ_rect, mode, NULL);
UnlockPixels(pix2);
UnlockPixels(pix1);
if (main_win == 1) RGBBackColor(&store_color);
OffsetRect(&targ_rect,offset->h,offset->v); // would this cause problems for the pc editor?
LockPixels(test1);
if (main_win == 0) {
test2 = GetPortPixMap(targ_gworld);
LockPixels(test2);
if (masked == 1)
CopyBits ( (BitMap*)* test1 ,
(BitMap*)*test2 ,
&src_rect, &targ_rect,
transparent , NULL);
else CopyBits ( (BitMap*)* test1 ,
(BitMap*)*test2 ,
&src_rect, &targ_rect,
(masked == 10) ? addOver : srcCopy, NULL);
UnlockPixels(test2);
}
else {
if (masked == 1)
CopyBits ( (BitMap*)*test1 ,
store_dest ,
&src_rect, &targ_rect,
transparent , NULL);
else CopyBits ((BitMap*) *test1 ,
store_dest ,
&src_rect, &targ_rect,
(masked == 10) ? addOver : 0, NULL);
}
UnlockPixels(test1);
//if (main_win == 2)
RGBBackColor(&store_color);
SetPort(cur_port); SetPort(cur_port);
} }
void char_win_draw_string(WindowPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,bool main_win){ void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,Rect targ_rect,Point offset,char mode){
char_port_draw_string(GetWindowPort(dest_window),dest_rect,str,mode,line_height, main_win); PixMapHandle pix1;
const BitMap* pix2;
GrafPtr cur_port;
RGBColor store_color;
GetBackColor(&store_color);
BackColor(whiteColor);
GetPort(&cur_port);
if (src_gworld == NULL) {
PaintRect(&targ_rect);
return;
}
OffsetRect(&targ_rect,offset.h,offset.v);
pix2 = GetPortBitMapForCopyBits(cur_port);
pix1 = GetPortPixMap(src_gworld);
LockPixels(pix1);
CopyBits((BitMap*)*pix1, pix2, &src_rect, &targ_rect, mode, NULL);
UnlockPixels(pix1);
RGBBackColor(&store_color);
SetPort(cur_port);
} }
void char_port_draw_string(GrafPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,bool main_win){ void char_win_draw_string(WindowPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,Point offset){
char_port_draw_string(GetWindowPort(dest_window),dest_rect,str,mode,line_height, offset);
}
void char_port_draw_string(GrafPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,Point offset){
Str255 store_s; Str255 store_s;
strcpy((char*) store_s,str); strcpy((char*) store_s,str);
win_draw_string(dest_window, dest_rect,store_s, mode, line_height, main_win); win_draw_string(dest_window, dest_rect,store_s, mode, line_height, offset);
} }
// mode: 0 - align up and left, 1 - center on one line // mode: 0 - align up and left, 1 - center on one line
// str is a c string, 256 characters // str is a c string, 256 characters
// uses current font // uses current font
void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,short line_height,bool main_win){ void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,short line_height,Point offset){
GrafPtr old_port; GrafPtr old_port;
Str255 p_str,str_to_draw/*,str_to_draw2*/,c_str; Str255 p_str,str_to_draw/*,str_to_draw2*/,c_str;
static Str255 null_s = "8"; static Str255 null_s = "8";
@@ -417,9 +403,9 @@ void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,sh
//RgnHandle current_clip; //RgnHandle current_clip;
short adjust_x = 0,adjust_y = 0; short adjust_x = 0,adjust_y = 0;
if (main_win) { adjust_x = offset.h;
adjust_x = offset->h; adjust_y = offset->v; adjust_y = offset.v;
}
strcpy((char *) p_str,(char *) str); strcpy((char *) p_str,(char *) str);
strcpy((char *) c_str,(char *) str); strcpy((char *) c_str,(char *) str);
c2pstr((char*) p_str); c2pstr((char*) p_str);

View File

@@ -44,18 +44,18 @@ struct m_pic_index_t {
}; };
typedef unsigned short pic_num_t; typedef unsigned short pic_num_t;
void init_graph_tool(void (*redraw_callback)(),Point* p); void init_graph_tool(void (*redraw_callback)());
void clean_up_graphtool(); void clean_up_graphtool();
GWorldPtr load_pict(std::string picture_to_get, std::string scen_name = ""); GWorldPtr load_pict(std::string picture_to_get, std::string scen_name = "");
GWorldPtr load_pict(int picture_to_get) __attribute__((deprecated)); GWorldPtr load_pict(int picture_to_get) __attribute__((deprecated));
GWorldPtr load_bmp(unsigned char *data, unsigned long length); GWorldPtr load_bmp(unsigned char *data, unsigned long length);
void set_cursor(cursor_type which_curs); void set_cursor(cursor_type which_curs);
void restore_cursor(); void restore_cursor();
void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect, void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,GWorldPtr targ_gworld,Rect targ_rect,char mode = srcCopy);
char masked,short main_win); void rect_draw_some_item (GWorldPtr src_gworld,Rect src_rect,Rect targ_rect,Point offset,char mode = srcCopy);
void char_win_draw_string(WindowPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,bool main_win); void char_win_draw_string(WindowPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,Point offset = (Point){0,0});
void char_port_draw_string(GrafPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,bool main_win); void char_port_draw_string(GrafPtr dest_window,Rect dest_rect,const char *str,short mode,short line_height,Point offset = (Point){0,0});
void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,short line_height,bool main_win); void win_draw_string(GrafPtr dest_window,Rect dest_rect,Str255 str,short mode,short line_height,Point offset = (Point){0,0});
short string_length(const char *str); short string_length(const char *str);
//OSStatus flip_pict(OSType domain, OSType type, short id, void *ptr, UInt32 size, bool isNative, void *refcon); //OSStatus flip_pict(OSType domain, OSType type, short id, void *ptr, UInt32 size, bool isNative, void *refcon);
//void draw_terrain(); //void draw_terrain();