Overhaul the game's "rendering pipeline", simplifying it a fair bit
- Also significantly improves performance
This commit is contained in:
@@ -651,7 +651,7 @@ bool handle_action(sf::Event event)
|
|||||||
center = univ.town.p_loc;
|
center = univ.town.p_loc;
|
||||||
//put_pc_screen();
|
//put_pc_screen();
|
||||||
set_stat_window(current_pc);
|
set_stat_window(current_pc);
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_TERRAIN | REFRESH_TEXT);
|
||||||
play_sound(93);
|
play_sound(93);
|
||||||
need_reprint = true;
|
need_reprint = true;
|
||||||
need_redraw = true;
|
need_redraw = true;
|
||||||
@@ -1794,7 +1794,7 @@ bool handle_keystroke(sf::Event& event){
|
|||||||
clear_map();
|
clear_map();
|
||||||
add_string_to_buf("Debug: Reunite party and leave town.");
|
add_string_to_buf("Debug: Reunite party and leave town.");
|
||||||
print_buf();
|
print_buf();
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_ALL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'C':
|
case 'C':
|
||||||
@@ -1943,7 +1943,7 @@ bool handle_keystroke(sf::Event& event){
|
|||||||
position_party(scenario.out_sec_start.x,scenario.out_sec_start.y,
|
position_party(scenario.out_sec_start.x,scenario.out_sec_start.y,
|
||||||
scenario.out_start.x,scenario.out_start.y);
|
scenario.out_start.x,scenario.out_start.y);
|
||||||
center = univ.town.p_loc = scenario.where_start;
|
center = univ.town.p_loc = scenario.where_start;
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_ALL);
|
||||||
add_string_to_buf("Debug: You return to the start.");
|
add_string_to_buf("Debug: You return to the start.");
|
||||||
print_buf();
|
print_buf();
|
||||||
break;
|
break;
|
||||||
@@ -2199,11 +2199,7 @@ void do_save(short mode)
|
|||||||
|
|
||||||
|
|
||||||
pause(6);
|
pause(6);
|
||||||
// initiate_redraw();
|
redraw_screen(REFRESH_TEXT);
|
||||||
// put_pc_screen();
|
|
||||||
// put_item_screen(stat_window,0);
|
|
||||||
// print_buf();
|
|
||||||
redraw_screen();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void increase_age()////
|
void increase_age()////
|
||||||
|
@@ -186,7 +186,8 @@ void end_shop_mode()
|
|||||||
put_item_screen(stat_window,0);
|
put_item_screen(stat_window,0);
|
||||||
put_pc_screen();
|
put_pc_screen();
|
||||||
//refresh_screen(0);
|
//refresh_screen(0);
|
||||||
redraw_screen();
|
// TODO: I suspect REFRESH_NONE will suffice here
|
||||||
|
redraw_screen(REFRESH_TERRAIN | REFRESH_BAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_shop_event(location p)
|
void handle_shop_event(location p)
|
||||||
@@ -564,7 +565,8 @@ void end_talk_mode()
|
|||||||
put_item_screen(stat_window,0);
|
put_item_screen(stat_window,0);
|
||||||
put_pc_screen();
|
put_pc_screen();
|
||||||
//refresh_screen(0);
|
//refresh_screen(0);
|
||||||
redraw_screen();
|
// TODO: I suspect REFRESH_NONE will suffice here
|
||||||
|
redraw_screen(REFRESH_TERRAIN | REFRESH_BAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_talk_event(location p)
|
void handle_talk_event(location p)
|
||||||
|
@@ -214,7 +214,7 @@ void finish_load_party(){
|
|||||||
center = univ.town.p_loc;
|
center = univ.town.p_loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_ALL);
|
||||||
current_pc = first_active_pc();
|
current_pc = first_active_pc();
|
||||||
loaded_yet = true;
|
loaded_yet = true;
|
||||||
|
|
||||||
|
@@ -193,7 +193,6 @@ void adjust_window_mode()
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
redraw_screen();
|
|
||||||
if (text_sbar != NULL) {
|
if (text_sbar != NULL) {
|
||||||
text_sbar->relocate({ul.x + 546,ul.y + 283});
|
text_sbar->relocate({ul.x + 546,ul.y + 283});
|
||||||
item_sbar->relocate({ul.x + 546,ul.y + 146});
|
item_sbar->relocate({ul.x + 546,ul.y + 146});
|
||||||
@@ -266,26 +265,6 @@ void plop_fancy_startup()
|
|||||||
if(display_mode != 5) showMenuBar();
|
if(display_mode != 5) showMenuBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
void fancy_startup_delay()
|
|
||||||
{
|
|
||||||
// OK try this ... destroy and recreate window.
|
|
||||||
/*DisposeWindow(mainPtr);
|
|
||||||
mainPtr = GetNewCWindow(128,NULL,IN_FRONT);
|
|
||||||
SetPort(mainPtr); /* set window to current graf port
|
|
||||||
text_sbar = NewControl(mainPtr,&sbar_rect,tit,false,58,0,58,scrollBarProc,1);
|
|
||||||
item_sbar = NewControl(mainPtr,&item_sbar_rect,tit,false,0,0,16,scrollBarProc,2);
|
|
||||||
shop_sbar = NewControl(mainPtr,&shop_sbar_rect,tit,false,0,0,16,scrollBarProc,3);
|
|
||||||
adjust_window_mode();
|
|
||||||
RestoreDeviceClut(GetMainDevice()); */
|
|
||||||
|
|
||||||
// TODO: This probably isn't needed here?
|
|
||||||
TEXT.style = sf::Text::Regular;
|
|
||||||
|
|
||||||
draw_startup(0);
|
|
||||||
|
|
||||||
flushingInput = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_startup()
|
void init_startup()
|
||||||
{
|
{
|
||||||
startup_loaded = true;
|
startup_loaded = true;
|
||||||
@@ -311,15 +290,6 @@ void draw_startup(short but_type)
|
|||||||
if (startup_loaded == false)
|
if (startup_loaded == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// r1.bottom = ul.x + 5;
|
|
||||||
// tileImage(mainPtr, r1,bg_gworld,bg[4]);
|
|
||||||
// r2.right = ul.y - 13;
|
|
||||||
// tileImage(mainPtr, r2,bg_gworld,bg[4]);
|
|
||||||
// r3.top += ul.x + 5;
|
|
||||||
// tileImage(mainPtr, r3,bg_gworld,bg[4]);
|
|
||||||
// r4.left += ul.y - 13;
|
|
||||||
// tileImage(mainPtr, r4,bg_gworld,bg[4]);
|
|
||||||
tileImage(mainPtr, windRect, bg_gworld, bg[4]);
|
|
||||||
to_rect = startup_from[0];
|
to_rect = startup_from[0];
|
||||||
to_rect.offset(-13,5);
|
to_rect.offset(-13,5);
|
||||||
rect_draw_some_item(startup_gworld,startup_from[0],to_rect,ul);
|
rect_draw_some_item(startup_gworld,startup_from[0],to_rect,ul);
|
||||||
@@ -643,40 +613,18 @@ void set_gworld_fonts(short font_num)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_main_screen()
|
void redraw_screen(int refresh) {
|
||||||
{
|
// We may need to update some of the offscreen textures
|
||||||
// TODO: If this is called during MODE_TALKING, it's done from the wrong place. It's not called from redraw_screen during MODE_TALKING.
|
if(refresh & REFRESH_TERRAIN) draw_terrain(1);
|
||||||
if (overall_mode == MODE_TALKING) {
|
if(refresh & REFRESH_STATS) put_pc_screen();
|
||||||
put_background();
|
if(refresh & REFRESH_INVEN) put_item_screen(stat_window, 0);
|
||||||
}
|
if(refresh & REFRESH_TRANS) print_buf();
|
||||||
else {
|
|
||||||
// rect_draw_some_item(terrain_screen_gworld.getTexture(), win_from_rects[0], win_to_rects[0],ul);
|
|
||||||
|
|
||||||
draw_buttons(0);
|
|
||||||
if (overall_mode == MODE_COMBAT)
|
|
||||||
draw_pcs(pc_pos[current_pc],1);
|
|
||||||
if (overall_mode == MODE_FANCY_TARGET)
|
|
||||||
draw_targets(center);
|
|
||||||
}
|
|
||||||
draw_text_area(0);
|
|
||||||
text_sbar->show();
|
|
||||||
text_sbar->draw();
|
|
||||||
item_sbar->show();
|
|
||||||
item_sbar->draw();
|
|
||||||
if (overall_mode == MODE_SHOPPING) {
|
|
||||||
shop_sbar->show();
|
|
||||||
shop_sbar->draw();
|
|
||||||
}
|
|
||||||
else shop_sbar->hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
// redraw_screen does the very first redraw, and any full redraw
|
|
||||||
void redraw_screen(){
|
|
||||||
put_background();
|
put_background();
|
||||||
if(overall_mode == MODE_STARTUP)
|
|
||||||
draw_startup(0);
|
|
||||||
else{
|
|
||||||
switch(overall_mode) {
|
switch(overall_mode) {
|
||||||
|
case MODE_STARTUP:
|
||||||
|
draw_startup(0);
|
||||||
|
break;
|
||||||
case MODE_TALKING:
|
case MODE_TALKING:
|
||||||
refresh_talking();
|
refresh_talking();
|
||||||
break;
|
break;
|
||||||
@@ -684,35 +632,30 @@ void redraw_screen(){
|
|||||||
refresh_shopping();
|
refresh_shopping();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
draw_main_screen();
|
redraw_terrain();
|
||||||
draw_terrain(0);
|
draw_text_bar(bool(refresh & REFRESH_BAR));
|
||||||
draw_text_bar(1);
|
draw_buttons(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(overall_mode == MODE_COMBAT)
|
if(overall_mode == MODE_COMBAT)
|
||||||
draw_pcs(pc_pos[current_pc],1);
|
draw_pcs(pc_pos[current_pc],1);
|
||||||
if(overall_mode == MODE_FANCY_TARGET)
|
if(overall_mode == MODE_FANCY_TARGET)
|
||||||
draw_targets(center);
|
draw_targets(center);
|
||||||
break;
|
if(overall_mode != MODE_STARTUP) {
|
||||||
}
|
refresh_stat_areas(0);
|
||||||
put_pc_screen();
|
|
||||||
put_item_screen(stat_window,0);
|
|
||||||
print_buf();
|
|
||||||
text_sbar->show();
|
|
||||||
text_sbar->draw();
|
text_sbar->draw();
|
||||||
item_sbar->show();
|
|
||||||
item_sbar->draw();
|
item_sbar->draw();
|
||||||
if (overall_mode == MODE_SHOPPING) {
|
|
||||||
shop_sbar->show();
|
|
||||||
shop_sbar->draw();
|
shop_sbar->draw();
|
||||||
}
|
}
|
||||||
else shop_sbar->hide();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void put_background()
|
void put_background()
|
||||||
{
|
{
|
||||||
RECT bg_pict;
|
RECT bg_pict;
|
||||||
|
|
||||||
if (is_out()) {
|
if(overall_mode == MODE_STARTUP)
|
||||||
|
bg_pict = bg[4];
|
||||||
|
else if(is_out()) {
|
||||||
if (univ.party.outdoor_corner.x >= 7)
|
if (univ.party.outdoor_corner.x >= 7)
|
||||||
bg_pict = bg[0];
|
bg_pict = bg[0];
|
||||||
else bg_pict = bg[10];
|
else bg_pict = bg[10];
|
||||||
@@ -733,10 +676,6 @@ void put_background()
|
|||||||
else bg_pict = bg[13];
|
else bg_pict = bg[13];
|
||||||
}
|
}
|
||||||
tileImage(mainPtr, RECT(mainPtr), bg_gworld, bg_pict);
|
tileImage(mainPtr, RECT(mainPtr), bg_gworld, bg_pict);
|
||||||
text_sbar->show();
|
|
||||||
text_sbar->draw();
|
|
||||||
item_sbar->show();
|
|
||||||
item_sbar->draw();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_buttons(short mode)
|
void draw_buttons(short mode)
|
||||||
@@ -772,15 +711,6 @@ void draw_buttons(short mode)
|
|||||||
// ForeColor(blackColor);
|
// ForeColor(blackColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// In general, refreshes any area that has text in it, the stat areas, the text bar
|
|
||||||
void draw_text_area(short mode)
|
|
||||||
//short mode unused
|
|
||||||
{
|
|
||||||
refresh_stat_areas(0);
|
|
||||||
|
|
||||||
draw_text_bar(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_text_bar()
|
void reset_text_bar()
|
||||||
{
|
{
|
||||||
remember_tiny_text = 300;
|
remember_tiny_text = 300;
|
||||||
|
@@ -1,9 +1,19 @@
|
|||||||
|
|
||||||
#include <SFML/Graphics.hpp>
|
#include <SFML/Graphics.hpp>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
REFRESH_NONE = 0,
|
||||||
|
REFRESH_TERRAIN = 1 << 0,
|
||||||
|
REFRESH_STATS = 1 << 1,
|
||||||
|
REFRESH_INVEN = 1 << 2,
|
||||||
|
REFRESH_TRANS = 1 << 3,
|
||||||
|
REFRESH_BAR = 1 << 4,
|
||||||
|
REFRESH_TEXT = REFRESH_BAR | REFRESH_TRANS,
|
||||||
|
REFRESH_ALL = 0x1f
|
||||||
|
};
|
||||||
|
|
||||||
void adjust_window_mode();
|
void adjust_window_mode();
|
||||||
void plop_fancy_startup();
|
void plop_fancy_startup();
|
||||||
void fancy_startup_delay();
|
|
||||||
void init_startup();
|
void init_startup();
|
||||||
void reload_startup();
|
void reload_startup();
|
||||||
void init_animation();
|
void init_animation();
|
||||||
@@ -18,11 +28,9 @@ void end_startup();
|
|||||||
void Set_up_win ();
|
void Set_up_win ();
|
||||||
void load_main_screen();
|
void load_main_screen();
|
||||||
void set_gworld_fonts(short font_num);
|
void set_gworld_fonts(short font_num);
|
||||||
void redraw_screen();
|
void redraw_screen(int refresh);
|
||||||
void put_background();
|
void put_background();
|
||||||
void draw_main_screen();
|
|
||||||
void draw_buttons(short mode);
|
void draw_buttons(short mode);
|
||||||
void draw_text_area(short mode);
|
|
||||||
void reset_text_bar();
|
void reset_text_bar();
|
||||||
void draw_text_bar(short mode);
|
void draw_text_bar(short mode);
|
||||||
void put_text_bar(char *str);
|
void put_text_bar(char *str);
|
||||||
|
@@ -1108,8 +1108,6 @@ short custom_choice_dialog(std::array<std::string, 6>& strs,short pic_num,ePicTy
|
|||||||
cThreeChoice customDialog(vec, buttons, pic_num, pic_type);
|
cThreeChoice customDialog(vec, buttons, pic_num, pic_type);
|
||||||
std::string item_hit = customDialog.show();
|
std::string item_hit = customDialog.show();
|
||||||
|
|
||||||
redraw_screen();
|
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++) {
|
for(int i = 0; i < 3; i++) {
|
||||||
cBasicButtonType& btn = basic_buttons[available_btns[i]];
|
cBasicButtonType& btn = basic_buttons[available_btns[i]];
|
||||||
if(btn && item_hit == btn->label)
|
if(btn && item_hit == btn->label)
|
||||||
@@ -1191,11 +1189,6 @@ short char_select_pc(short active_only,short free_inv_only,const char *title)
|
|||||||
selectPc.run();
|
selectPc.run();
|
||||||
item_hit = selectPc.getResult<short>();
|
item_hit = selectPc.getResult<short>();
|
||||||
|
|
||||||
if(overall_mode != MODE_STARTUP)
|
|
||||||
//refresh_screen(0);
|
|
||||||
redraw_screen();
|
|
||||||
else draw_startup(0);
|
|
||||||
|
|
||||||
return item_hit;
|
return item_hit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -161,7 +161,7 @@ int main(void)
|
|||||||
init_menubar(); // Do this first of all because otherwise a default File and Window menu will be seen
|
init_menubar(); // Do this first of all because otherwise a default File and Window menu will be seen
|
||||||
Initialize();
|
Initialize();
|
||||||
init_fileio();
|
init_fileio();
|
||||||
init_graph_tool(redraw_screen);
|
init_graph_tool();
|
||||||
|
|
||||||
Set_Window_Drag_Bdry();
|
Set_Window_Drag_Bdry();
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ int main(void)
|
|||||||
//PSD[SDF_GAME_SPEED] = 1;
|
//PSD[SDF_GAME_SPEED] = 1;
|
||||||
//init_anim(0);
|
//init_anim(0);
|
||||||
|
|
||||||
fancy_startup_delay();
|
flushingInput = true;
|
||||||
|
|
||||||
init_spell_menus();
|
init_spell_menus();
|
||||||
|
|
||||||
@@ -456,27 +456,7 @@ bool handle_dialog_event()
|
|||||||
|
|
||||||
void Handle_Update()
|
void Handle_Update()
|
||||||
{
|
{
|
||||||
if(overall_mode == MODE_STARTUP) {
|
redraw_screen(REFRESH_NONE);
|
||||||
/*if (first_startup_update == true)
|
|
||||||
first_startup_update = false;
|
|
||||||
else*/ draw_startup(0);
|
|
||||||
/* if (first_sound_played == false) {
|
|
||||||
play_sound(22);
|
|
||||||
first_sound_played = true;
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (first_update == true) {
|
|
||||||
first_update = false;
|
|
||||||
if (overall_mode == MODE_OUTDOORS)
|
|
||||||
redraw_screen();
|
|
||||||
if ((overall_mode > MODE_OUTDOORS) & (overall_mode < MODE_COMBAT))
|
|
||||||
redraw_screen();
|
|
||||||
// 1st update never combat
|
|
||||||
}
|
|
||||||
else //refresh_screen(0);
|
|
||||||
redraw_screen();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(map_visible) draw_map(false);
|
if(map_visible) draw_map(false);
|
||||||
else mini_map.setVisible(false);
|
else mini_map.setVisible(false);
|
||||||
|
@@ -522,9 +522,7 @@ void put_party_in_scen(std::string scen_name)
|
|||||||
center = scenario.where_start;
|
center = scenario.where_start;
|
||||||
update_explored(scenario.where_start);
|
update_explored(scenario.where_start);
|
||||||
overall_mode = MODE_TOWN;
|
overall_mode = MODE_TOWN;
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_ALL);
|
||||||
// TODO: Maybe I should just be calling mainPtr.display() in redraw_screen()...
|
|
||||||
mainPtr.display();
|
|
||||||
set_stat_window(0);
|
set_stat_window(0);
|
||||||
adjust_spell_menus();
|
adjust_spell_menus();
|
||||||
adjust_monst_menu();
|
adjust_monst_menu();
|
||||||
@@ -1725,7 +1723,7 @@ void do_priest_spell(short pc_num,short spell_num) ////
|
|||||||
// overall_mode = MODE_OUTDOORS;
|
// overall_mode = MODE_OUTDOORS;
|
||||||
// center = univ.party.p_loc;
|
// center = univ.party.p_loc;
|
||||||
// update_explored(univ.party.p_loc);
|
// update_explored(univ.party.p_loc);
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_ALL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: case 20: case 39: case 2: case 11: case 27: case 28: case 36: case 19: case 24:
|
case 1: case 20: case 39: case 2: case 11: case 27: case 28: case 36: case 19: case 24:
|
||||||
|
@@ -224,13 +224,7 @@ void put_pc_screen()
|
|||||||
pc_area_button_active[i][j] = 0;
|
pc_area_button_active[i][j] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Now put text on window.
|
pc_stats_gworld.display();
|
||||||
mainPtr.setActive();
|
|
||||||
to_draw_rect = RECT(pc_stats_gworld);
|
|
||||||
RECT oldRect = to_draw_rect;
|
|
||||||
to_draw_rect.offset(PC_WIN_UL_X,PC_WIN_UL_Y);
|
|
||||||
pc_stats_gworld.display(); // TODO: I think displaying is necessary before accessing the texture...?
|
|
||||||
rect_draw_some_item(pc_stats_gworld.getTexture(), oldRect, to_draw_rect,ul);
|
|
||||||
|
|
||||||
// Sometimes this gets called when character is slain. when that happens, if items for
|
// Sometimes this gets called when character is slain. when that happens, if items for
|
||||||
// that PC are up, switch item page.
|
// that PC are up, switch item page.
|
||||||
@@ -385,15 +379,6 @@ void put_item_screen(short screen_num,short suppress_buttons)
|
|||||||
|
|
||||||
place_item_bottom_buttons();
|
place_item_bottom_buttons();
|
||||||
item_stats_gworld.display();
|
item_stats_gworld.display();
|
||||||
|
|
||||||
// Now put text on window.
|
|
||||||
mainPtr.setActive();
|
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
|
||||||
dest_rect = parts_of_area_to_draw[i];
|
|
||||||
dest_rect.offset(ITEM_WIN_UL_X,ITEM_WIN_UL_Y);
|
|
||||||
rect_draw_some_item(item_stats_gworld.getTexture(), parts_of_area_to_draw[i], dest_rect,ul);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void place_buy_button(short position,short pc_num,short item_num)
|
void place_buy_button(short position,short pc_num,short item_num)
|
||||||
|
@@ -695,7 +695,7 @@ location end_town_mode(short switching_level,location destination) // returns n
|
|||||||
|
|
||||||
|
|
||||||
update_explored(to_return);
|
update_explored(to_return);
|
||||||
redraw_screen();
|
redraw_screen(REFRESH_TERRAIN | REFRESH_TEXT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,7 +27,6 @@ CursorRef cursors[24] = {
|
|||||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
|
||||||
};
|
};
|
||||||
void (*redraw_screen)();
|
|
||||||
RECT bg[21];
|
RECT bg[21];
|
||||||
RECT map_pat[30];
|
RECT map_pat[30];
|
||||||
RECT bw_pats[6];
|
RECT bw_pats[6];
|
||||||
@@ -44,8 +43,7 @@ void clean_up_graphtool(){
|
|||||||
CleanUp();
|
CleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_graph_tool(void (*redraw_callback)()){
|
void init_graph_tool(){
|
||||||
redraw_screen = redraw_callback;
|
|
||||||
int i,j;
|
int i,j;
|
||||||
// TODO: The duplication of location here shouldn't be necessary
|
// TODO: The duplication of location here shouldn't be necessary
|
||||||
// TODO: Store the hotspots on disk instead of hardcoded here
|
// TODO: Store the hotspots on disk instead of hardcoded here
|
||||||
|
@@ -94,7 +94,7 @@ struct cCustomGraphics {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void init_graph_tool(void (*redraw_callback)());
|
void init_graph_tool();
|
||||||
void clean_up_graphtool();
|
void clean_up_graphtool();
|
||||||
void set_cursor(cursor_type which_curs);
|
void set_cursor(cursor_type which_curs);
|
||||||
void restore_cursor();
|
void restore_cursor();
|
||||||
|
Reference in New Issue
Block a user