#include <editor_display.hpp>
Public Member Functions | |
editor_display (editor_controller &controller, reports &reports_object) | |
bool | in_editor () const override |
void | add_brush_loc (const map_location &hex) |
void | set_brush_locs (const std::set< map_location > &hexes) |
void | clear_brush_locs () |
void | remove_brush_loc (const map_location &hex) |
const editor_map & | map () const |
void | rebuild_terrain (const map_location &loc) |
virtual const time_of_day & | get_time_of_day (const map_location &loc=map_location::null_location()) const override |
Inherited from display. More... | |
editor_controller & | get_controller () |
virtual void | layout () override |
TLD layout() override. More... | |
void | set_mouseover_hex_overlay (const texture &image) |
Sets texture to be drawn in hex under the mouse's location. More... | |
void | clear_mouseover_hex_overlay () |
void | set_help_string (const std::string &str) |
Sets and shows the tooltip-like text at the top or bottom of the map area. More... | |
void | clear_help_string () |
Removes the help string. More... | |
![]() | |
display (const display_context *dc, std::weak_ptr< wb::manager > wb, reports &reports_object, const std::string &theme_id, const config &level) | |
virtual | ~display () |
bool | show_everything () const |
const gamemap & | get_map () const |
const std::vector< team > & | get_teams () const |
std::size_t | playing_team () const |
The playing team is the team whose turn it is. More... | |
bool | team_valid () const |
std::size_t | viewing_team () const |
The viewing team is the team currently viewing the game. More... | |
int | viewing_side () const |
The 1-based equivalent of the 0-based viewing_team() function. More... | |
void | set_team (std::size_t team, bool observe=false) |
Sets the team controlled by the player using the computer. More... | |
void | set_playing_team (std::size_t team) |
set_playing_team sets the team whose turn it currently is More... | |
void | clear_exclusive_draws () |
Cancels all the exclusive draw requests. More... | |
const unit_map & | get_units () const |
bool | add_exclusive_draw (const map_location &loc, unit &unit) |
Allows a unit to request to be the only one drawn in its hex. More... | |
std::string | remove_exclusive_draw (const map_location &loc) |
Cancels an exclusive draw request. More... | |
void | add_overlay (const map_location &loc, const std::string &image, const std::string &halo="", const std::string &team_name="", const std::string &item_id="", bool visible_under_fog=true, float submerge=0.0f, float z_order=0) |
Functions to add and remove overlays from locations. More... | |
void | remove_overlay (const map_location &loc) |
remove_overlay will remove all overlays on a tile. More... | |
void | remove_single_overlay (const map_location &loc, const std::string &toDelete) |
remove_single_overlay will remove a single overlay from a tile More... | |
void | reload_map () |
Updates internals that cache map size. More... | |
void | change_display_context (const display_context *dc) |
const display_context & | get_disp_context () const |
halo::manager & | get_halo_manager () |
void | update_tod (const time_of_day *tod_override=nullptr) |
Applies r,g,b coloring to the map. More... | |
void | adjust_color_overlay (int r, int g, int b) |
Add r,g,b to the colors for all images displayed on the map. More... | |
tod_color | get_color_overlay () const |
virtual bool | in_game () const |
virtual const map_location & | displayed_unit_hex () const |
Virtual functions shadowed in game_display. More... | |
virtual int | playing_side () const |
virtual const std::set< std::string > & | observers () const |
const rect & | minimap_area () const |
mapx is the width of the portion of the display which shows the game area. More... | |
const rect & | palette_area () const |
const rect & | unit_image_area () const |
rect | max_map_area () const |
Returns the maximum area used for the map regardless to resolution and view size. More... | |
rect | map_area () const |
Returns the area used for the map. More... | |
rect | map_outside_area () const |
Returns the available area for a map, this may differ from the above. More... | |
const map_location | hex_clicked_on (int x, int y) const |
given x,y co-ordinates of an onscreen pixel, will return the location of the hex that this pixel corresponds to. More... | |
const map_location | pixel_position_to_hex (int x, int y) const |
given x,y co-ordinates of a pixel on the map, will return the location of the hex that this pixel corresponds to. More... | |
map_location | minimap_location_on (int x, int y) |
given x,y co-ordinates of the mouse, will return the location of the hex in the minimap that the mouse is currently over, or an invalid location if the mouse isn't over the minimap. More... | |
const map_location & | selected_hex () const |
const map_location & | mouseover_hex () const |
virtual void | select_hex (map_location hex) |
virtual void | highlight_hex (map_location hex) |
void | invalidate_game_status () |
Function to invalidate the game status displayed on the sidebar. More... | |
int | get_location_x (const map_location &loc) const |
Functions to get the on-screen positions of hexes. More... | |
int | get_location_y (const map_location &loc) const |
point | get_location (const map_location &loc) const |
const rect_of_hexes | hexes_under_rect (const SDL_Rect &r) const |
Return the rectangular area of hexes overlapped by r (r is in screen coordinates) More... | |
const rect_of_hexes | get_visible_hexes () const |
Returns the rectangular area of visible hexes. More... | |
bool | shrouded (const map_location &loc) const |
Returns true if location (x,y) is covered in shroud. More... | |
bool | fogged (const map_location &loc) const |
Returns true if location (x,y) is covered in fog. More... | |
surface | screenshot (bool map_screenshot=false) |
Capture a (map-)screenshot into a surface. More... | |
void | queue_rerender () |
Marks everything for rendering including all tiles and sidebar. More... | |
void | queue_repaint () |
Queues repainting to the screen, but doesn't rerender. More... | |
void | add_redraw_observer (std::function< void(display &)> f) |
Adds a redraw observer, a function object to be called when a full rerender is queued. More... | |
void | clear_redraw_observers () |
Clear the redraw observers. More... | |
theme & | get_theme () |
void | set_theme (const std::string &new_theme) |
std::shared_ptr< gui::button > | find_action_button (const std::string &id) |
Retrieves a pointer to a theme UI button. More... | |
std::shared_ptr< gui::button > | find_menu_button (const std::string &id) |
void | create_buttons () |
void | layout_buttons () |
void | draw_buttons () |
void | refresh_report (const std::string &report_name, const config *new_cfg=nullptr) |
Update the given report. More... | |
void | draw_report (const std::string &report_name, bool test_run=false) |
Draw the specified report. More... | |
bool | draw_reports (const rect ®ion) |
Draw all reports in the given region. More... | |
void | draw_minimap_units () |
void | invalidate_all () |
Function to invalidate all tiles. More... | |
bool | invalidate (const map_location &loc) |
Function to invalidate a specific tile for redrawing. More... | |
bool | invalidate (const std::set< map_location > &locs) |
bool | propagate_invalidation (const std::set< map_location > &locs) |
If this set is partially invalidated, invalidate all its hexes. More... | |
bool | invalidate_locations_in_rect (const SDL_Rect &rect) |
invalidate all hexes under the rectangle rect (in screen coordinates) More... | |
bool | invalidate_visible_locations_in_rect (const SDL_Rect &rect) |
void | invalidate_animations () |
Function to invalidate animated terrains and units which may have changed. More... | |
void | invalidate_animations_location (const map_location &loc) |
Per-location invalidation called by invalidate_animations() Extra game per-location invalidation (village ownership) More... | |
void | reset_standing_animations () |
terrain_builder & | get_builder () |
void | update_fps_label () |
void | clear_fps_label () |
void | update_fps_count () |
void | rebuild_all () |
Rebuild all dynamic terrain. More... | |
const theme::action * | action_pressed () |
const theme::menu * | menu_pressed () |
void | set_diagnostic (const std::string &msg) |
double | turbo_speed () const |
void | bounds_check_position () |
void | bounds_check_position (int &xpos, int &ypos) const |
bool | scroll (int xmov, int ymov, bool force=false) |
Scrolls the display by xmov,ymov pixels. More... | |
bool | set_zoom (bool increase) |
Zooms the display in (true) or out (false). More... | |
bool | set_zoom (unsigned int amount, const bool validate_value_and_set_index=true) |
Sets the display zoom to the specified amount. More... | |
void | toggle_default_zoom () |
Sets the zoom amount to the default. More... | |
bool | view_locked () const |
void | set_view_locked (bool value) |
Sets whether the map view is locked (e.g. More... | |
void | scroll_to_tile (const map_location &loc, SCROLL_TYPE scroll_type=ONSCREEN, bool check_fogged=true, bool force=true) |
Scroll such that location loc is on-screen. More... | |
void | scroll_to_tiles (map_location loc1, map_location loc2, SCROLL_TYPE scroll_type=ONSCREEN, bool check_fogged=true, double add_spacing=0.0, bool force=true) |
Scroll such that location loc1 is on-screen. More... | |
void | scroll_to_tiles (const std::vector< map_location >::const_iterator &begin, const std::vector< map_location >::const_iterator &end, SCROLL_TYPE scroll_type=ONSCREEN, bool check_fogged=true, bool only_if_possible=false, double add_spacing=0.0, bool force=true) |
Scroll to fit as many locations on-screen as possible, starting with the first. More... | |
void | scroll_to_tiles (const std::vector< map_location > &locs, SCROLL_TYPE scroll_type=ONSCREEN, bool check_fogged=true, bool only_if_possible=false, double add_spacing=0.0, bool force=true) |
Scroll to fit as many locations on-screen as possible, starting with the first. More... | |
events::generic_event & | scroll_event () const |
Expose the event, so observers can be notified about map scrolling. More... | |
bool | tile_fully_on_screen (const map_location &loc) const |
Check if a tile is fully visible on screen. More... | |
bool | tile_nearly_on_screen (const map_location &loc) const |
Checks if location loc or one of the adjacent tiles is visible on screen. More... | |
void | set_prevent_draw (bool pd) |
Prevent the game display from drawing. More... | |
bool | get_prevent_draw () |
void | fade_tod_mask (const std::string &old, const std::string &new_) |
ToD mask smooth fade. More... | |
void | fade_to (const color_t &color, int duration) |
Screen fade. More... | |
void | set_fade (const color_t &color) |
virtual void | update () override |
Update animations and internal state. More... | |
virtual void | render () override |
Update offscreen render buffers. More... | |
virtual bool | expose (const rect ®ion) override |
Paint the indicated region to the screen. More... | |
virtual rect | screen_location () override |
Return the current draw location of the display, on the screen. More... | |
map_labels & | labels () |
const map_labels & | labels () const |
void | announce (const std::string &msg, const color_t &color=font::GOOD_COLOR, const announce_options &options=announce_options()) |
Announce a message prominently. More... | |
void | recalculate_minimap () |
Schedule the minimap for recalculation. More... | |
void | redraw_minimap () |
Schedule the minimap to be redrawn. More... | |
virtual bool | has_time_area () const |
void | blindfold (bool flag) |
bool | is_blindfolded () const |
void | write (config &cfg) const |
void | init_flags () |
Init the flag list and the team colors used by ~TC. More... | |
void | reinit_flags_for_team (const team &) |
Rebuild the flag list (not team colors) for a single side. More... | |
void | reset_reports (reports &reports_object) |
void | draw_text_in_hex (const map_location &loc, const drawing_layer layer, const std::string &text, std::size_t font_size, color_t color, double x_in_hex=0.5, double y_in_hex=0.5) |
Draw text on a hex. More... | |
void | drawing_buffer_add (const drawing_layer layer, const map_location &loc, decltype(draw_helper::do_draw) draw_func) |
Add an item to the drawing buffer. More... | |
void | add_arrow (arrow &) |
void | remove_arrow (arrow &) |
void | update_arrow (arrow &a) |
Called by arrow objects when they change. More... | |
bool | debug_flag_set (DEBUG_FLAG flag) const |
void | set_debug_flag (DEBUG_FLAG flag, bool value) |
void | toggle_debug_flag (DEBUG_FLAG flag) |
Protected Member Functions | |
void | draw_hex (const map_location &loc) override |
Redraws a single gamemap location. More... | |
virtual overlay_map & | get_overlays () override |
Inherited from display. More... | |
rect | get_clip_rect () const override |
Get the clipping rectangle for drawing. More... | |
![]() | |
map_location | get_middle_location () const |
virtual void | draw_invalidated () |
Only called when there's actual redrawing to do. More... | |
void | get_terrain_images (const map_location &loc, const std::string &timeid, TERRAIN_TYPE terrain_type) |
std::vector< texture > | get_fog_shroud_images (const map_location &loc, image::TYPE image_type) |
void | scroll_to_xy (int screenxpos, int screenypos, SCROLL_TYPE scroll_type, bool force=true) |
void | drawing_buffer_commit () |
Draws the drawing_buffer_ and clears it. More... | |
bool | draw_all_panels (const rect ®ion) |
Redraws all panels intersecting the given region. More... | |
void | process_reachmap_changes () |
![]() | |
top_level_drawable () | |
virtual | ~top_level_drawable () |
top_level_drawable (const top_level_drawable &) | |
top_level_drawable & | operator= (const top_level_drawable &) |
top_level_drawable (top_level_drawable &&) | |
top_level_drawable & | operator= (top_level_drawable &&) |
Private Attributes | |
int | help_handle_ = 0 |
ID of the floating label that's controlled by set_help_string() / clear_help_string(). More... | |
bool | help_string_at_top_ = false |
Ignored when help_handle_ == 0. More... | |
Additional Inherited Members | |
![]() | |
enum | SCROLL_TYPE { SCROLL , WARP , ONSCREEN , ONSCREEN_WARP } |
enum | drawing_layer { LAYER_TERRAIN_BG , LAYER_GRID_TOP , LAYER_MOUSEOVER_OVERLAY , LAYER_FOOTSTEPS , LAYER_MOUSEOVER_TOP , LAYER_UNIT_FIRST , LAYER_UNIT_BG = LAYER_UNIT_FIRST+10 , LAYER_UNIT_DEFAULT =LAYER_UNIT_FIRST+40 , LAYER_TERRAIN_FG = LAYER_UNIT_FIRST+50 , LAYER_GRID_BOTTOM , LAYER_UNIT_MOVE_DEFAULT =LAYER_UNIT_FIRST+60 , LAYER_UNIT_FG = LAYER_UNIT_FIRST+80 , LAYER_UNIT_MISSILE_DEFAULT = LAYER_UNIT_FIRST+90 , LAYER_UNIT_LAST =LAYER_UNIT_FIRST+100 , LAYER_REACHMAP , LAYER_MOUSEOVER_BOTTOM , LAYER_FOG_SHROUD , LAYER_ARROWS , LAYER_ACTIONS_NUMBERING , LAYER_SELECTED_HEX , LAYER_ATTACK_INDICATOR , LAYER_UNIT_BAR , LAYER_MOVE_INFO , LAYER_LINGER_OVERLAY , LAYER_BORDER } |
The layers to render something on. More... | |
enum | DEBUG_FLAG { DEBUG_COORDINATES , DEBUG_TERRAIN_CODES , DEBUG_NUM_BITMAPS , DEBUG_FOREGROUND , DEBUG_BENCHMARK , __NUM_DEBUG_FLAGS } |
![]() | |
static display * | get_singleton () |
Returns the display object if a display object exists. More... | |
static bool | outside_area (const SDL_Rect &area, const int x, const int y) |
Check if the bbox of the hex at x,y has pixels outside the area rectangle. More... | |
static int | hex_width () |
Function which returns the width of a hex in pixels, up to where the next hex starts. More... | |
static int | hex_size () |
Function which returns the size of a hex in pixels (from top tip to bottom tip or left edge to right edge). More... | |
static double | get_zoom_factor () |
Returns the current zoom factor. More... | |
static rect | scaled_to_zoom (const SDL_Rect &r) |
Scale the width and height of a rect by the current zoom factor. More... | |
static point | scaled_to_zoom (const point &p) |
static bool | zoom_at_max () |
static bool | zoom_at_min () |
static void | add_submerge_ipf_mod (std::string &image_path, int image_height, double submersion_amount, int shift=0) |
![]() | |
enum | TERRAIN_TYPE { BACKGROUND , FOREGROUND } |
typedef std::map< map_location, std::string > | exclusive_unit_draw_requests_t |
typedef std::map< map_location, unsigned int > | reach_map |
typedef std::map< map_location, std::vector< overlay > > | overlay_map |
![]() | |
static void | fill_images_list (const std::string &prefix, std::vector< std::string > &images) |
static const std::string & | get_variant (const std::vector< std::string > &variants, const map_location &loc) |
![]() | |
static unsigned int | zoom_ = DefaultZoom |
The current zoom, in pixels (on screen) per 72 pixels (in the graphic assets), i.e., 72 means 100%. More... | |
static unsigned int | last_zoom_ = SmallZoom |
The previous value of zoom_. More... | |
static display * | singleton_ = nullptr |
Definition at line 23 of file editor_display.hpp.
editor::editor_display::editor_display | ( | editor_controller & | controller, |
reports & | reports_object | ||
) |
Definition at line 37 of file editor_display.cpp.
void editor::editor_display::add_brush_loc | ( | const map_location & | hex | ) |
Definition at line 45 of file editor_display.cpp.
References brush_locations_, and display::invalidate().
void editor::editor_display::clear_brush_locs | ( | ) |
Definition at line 58 of file editor_display.cpp.
References brush_locations_, and display::invalidate().
void editor::editor_display::clear_help_string | ( | ) |
Removes the help string.
Definition at line 162 of file editor_display.cpp.
References help_handle_, and font::remove_floating_label().
Referenced by editor::location_palette::hide(), and set_help_string().
|
inline |
Definition at line 59 of file editor_display.hpp.
References mouseover_hex_overlay_, and texture::reset().
Referenced by editor::editor_toolkit::clear_mouseover_overlay(), editor::mouse_action_unit::move(), editor::mouse_action::set_mouse_overlay(), and editor::mouse_action::set_terrain_mouse_overlay().
|
overrideprotectedvirtual |
Redraws a single gamemap location.
Reimplemented from display.
Definition at line 74 of file editor_display.cpp.
References draw::blit(), brush_locations_, d, display::draw_hex(), display::drawing_buffer_add(), game_config::images::editor_brush, image::get_texture(), image::HEXED, display::LAYER_FOG_SHROUD, display::LAYER_MOUSEOVER_OVERLAY, display::LAYER_SELECTED_HEX, map(), display::map_screenshot_, mouseover_hex_overlay_, display::mouseoverHex_, texture::set_alpha_mod(), and image::TOD_COLORED.
|
overrideprotectedvirtual |
Get the clipping rectangle for drawing.
Virtual since the editor might use a slightly different approach.
Reimplemented from display.
Definition at line 106 of file editor_display.cpp.
References display::map_outside_area().
|
inline |
Definition at line 40 of file editor_display.hpp.
References controller_.
Referenced by editor::mouse_action_map_label::drag_end_left(), and editor::mouse_action_map_label::up_left().
|
overrideprotectedvirtual |
Inherited from display.
Implements display.
Definition at line 157 of file editor_display.cpp.
References controller_, editor::editor_controller::get_current_map_context(), and editor::map_context::get_overlays().
|
overridevirtual |
Inherited from display.
Reimplemented from display.
Definition at line 152 of file editor_display.cpp.
References controller_, editor::editor_controller::get_current_map_context(), editor::map_context::get_time_manager(), and tod_manager::get_time_of_day().
|
inlineoverridevirtual |
Reimplemented from display.
Definition at line 28 of file editor_display.hpp.
|
overridevirtual |
TLD layout() override.
Replaces old refresh_reports(). Be sure to call the base class method as well.
This updates some reports that may need to be refreshed every frame.
Reimplemented from display.
Definition at line 111 of file editor_display.cpp.
References config::add_child(), display::dc_, font::get_floating_label_rect(), display::get_map(), gamemap::get_terrain_editor_string(), display::get_visible_hexes(), help_handle_, help_string_at_top_, display::layout(), display::map_outside_area(), display::mouseoverHex_, font::move_floating_label(), display::refresh_report(), utf8::size(), display_context::teams(), and display::rect_of_hexes::top.
|
inline |
Definition at line 34 of file editor_display.hpp.
References display::get_map().
Referenced by editor::mouse_action_fill::affected_hexes(), editor::mouse_action_select::affected_hexes(), editor::mouse_action_paint::click_left(), editor::mouse_action_fill::click_left(), editor::mouse_action_paint::click_right(), editor::mouse_action_fill::click_right(), draw_hex(), editor::mouse_action::key_event(), editor::mouse_action_starting_position::up_left(), and editor::mouse_action_starting_position::up_right().
void editor::editor_display::rebuild_terrain | ( | const map_location & | loc | ) |
Definition at line 70 of file editor_display.cpp.
References display::builder_.
void editor::editor_display::remove_brush_loc | ( | const map_location & | hex | ) |
Definition at line 64 of file editor_display.cpp.
References brush_locations_, and display::invalidate().
void editor::editor_display::set_brush_locs | ( | const std::set< map_location > & | hexes | ) |
Definition at line 51 of file editor_display.cpp.
References brush_locations_, and display::invalidate().
Referenced by editor::mouse_action::update_brush_highlights().
void editor::editor_display::set_help_string | ( | const std::string & | str | ) |
Sets and shows the tooltip-like text at the top or bottom of the map area.
str | The text to display. |
Definition at line 168 of file editor_display.cpp.
References font::add_floating_label(), clear_help_string(), video::game_canvas_size(), font::get_floating_label_rect(), help_handle_, help_string_at_top_, font::move_floating_label(), font::pango_line_width(), font::floating_label::set_bg_color(), font::floating_label::set_border_size(), font::floating_label::set_font_size(), font::floating_label::set_position(), utf8::size(), and font::SIZE_LARGE.
Referenced by editor::location_palette::adjust_size(), and editor::location_palette::select_item().
|
inline |
Sets texture to be drawn in hex under the mouse's location.
Definition at line 54 of file editor_display.hpp.
References mouseover_hex_overlay_.
Referenced by editor::mouse_action_item::set_item_mouse_overlay(), editor::mouse_action_paste::set_mouse_overlay(), editor::mouse_action_starting_position::set_mouse_overlay(), editor::mouse_action_map_label::set_mouse_overlay(), editor::mouse_action_select::set_mouse_overlay(), editor::mouse_action_village::set_mouse_overlay(), editor::mouse_action::set_terrain_mouse_overlay(), and editor::mouse_action_unit::set_unit_mouse_overlay().
|
protected |
Definition at line 82 of file editor_display.hpp.
Referenced by add_brush_loc(), clear_brush_locs(), draw_hex(), remove_brush_loc(), and set_brush_locs().
|
protected |
Definition at line 85 of file editor_display.hpp.
Referenced by get_controller(), get_overlays(), and get_time_of_day().
|
private |
ID of the floating label that's controlled by set_help_string() / clear_help_string().
Definition at line 91 of file editor_display.hpp.
Referenced by clear_help_string(), layout(), and set_help_string().
|
private |
Ignored when help_handle_ == 0.
Othewise, true if the help label obscures the northern hexes in the map area, false if it's over the southern hexes instead.
Definition at line 97 of file editor_display.hpp.
Referenced by layout(), and set_help_string().
|
protected |
Definition at line 87 of file editor_display.hpp.
Referenced by clear_mouseover_hex_overlay(), draw_hex(), and set_mouseover_hex_overlay().