diff --git a/osx/boe.graphics.cpp b/osx/boe.graphics.cpp index dc4f125e..8b4750c4 100644 --- a/osx/boe.graphics.cpp +++ b/osx/boe.graphics.cpp @@ -809,6 +809,8 @@ ter_num_t get_ter_from_ground(unsigned char ground){ return 0; } +std::vector forcecage_locs; + void draw_terrain(short mode) //mode ... if 1, don't place on screen after redoing // if 2, only redraw over active monst @@ -1029,6 +1031,10 @@ void draw_terrain(short mode) draw_party_symbol(center); else if (overall_mode != MODE_LOOK_TOWN) draw_pcs(center,0); + // Draw top half of forcecages (this list is populated by draw_fields) + // TODO: Move into the above loop to eliminate global variable + for(location fc_loc : forcecage_locs) + Draw_Some_Item(fields_gworld,calc_rect(2,0),terrain_screen_gworld,fc_loc,1,0); // Now do the light mask thing apply_light_mask(false); diff --git a/osx/boe.graphutil.cpp b/osx/boe.graphutil.cpp index cc5b923a..e8ddca38 100644 --- a/osx/boe.graphutil.cpp +++ b/osx/boe.graphutil.cpp @@ -471,6 +471,8 @@ void draw_town_boat(location center) } } +extern std::vector forcecage_locs; + void draw_fields(location where){ if(!point_onscreen(center,where)) return; if(party_can_see(where) >= 6) return; @@ -525,8 +527,10 @@ void draw_fields(location where){ Draw_Some_Item(fields_gworld,calc_rect(6,3),terrain_screen_gworld,where_draw,1,0); if(univ.town.is_rubble(where.x,where.y)) Draw_Some_Item(fields_gworld,calc_rect(7,3),terrain_screen_gworld,where_draw,1,0); - if(univ.town.is_force_cage(where.x,where.y)) - Draw_Some_Item(fields_gworld,calc_rect(2,0),terrain_screen_gworld,where_draw,1,0); + if(univ.town.is_force_cage(where.x,where.y)) { + Draw_Some_Item(fields_gworld,calc_rect(1,0),terrain_screen_gworld,where_draw,1,0); + forcecage_locs.push_back(where_draw); + } } void draw_party_symbol(location center) { diff --git a/osx/boe.text.cpp b/osx/boe.text.cpp index 659dd21b..74ec294d 100644 --- a/osx/boe.text.cpp +++ b/osx/boe.text.cpp @@ -891,6 +891,8 @@ short do_look(location space) add_string_to_buf(" Ice Wall "); if (univ.town.is_blade_wall(space.x,space.y)) add_string_to_buf(" Blade Wall "); + if (univ.town.is_force_cage(space.x,space.y)) + add_string_to_buf(" Force Cage "); if (univ.town.is_sm_blood(space.x,space.y)) add_string_to_buf(" Blood stain "); diff --git a/rsrc/graphics.exd/mac/fields.png b/rsrc/graphics.exd/mac/fields.png index cb5765a9..2f86f445 100644 Binary files a/rsrc/graphics.exd/mac/fields.png and b/rsrc/graphics.exd/mac/fields.png differ