#textdomain wesnoth-lib ### ### The in game portrait dialogs. ### Due to the excessive amount of dialogs it's not possible to split off the ### window definitions. So this unit is a bit larger as wanted. ### # These might become global have to evaluate later. #define _GUI_HEIGHT_OFFSET 25#enddef # helper convert the scale factor, since we use it in two places define it as # helper value. (Two the not working and working version, but want to avoid # surprises when the not working version is fixed). #define __GUI_SIZE_FACTOR 3#enddef ### The formula language doesn't support variables so macros are used to ### emulate them. This makes the code what harder to read, so the algorithm for ### __GUI_IMAGE_WIDTH is described here: ### ### if gamemap_width <= TEXT_WIDTH_SATURATION ### __GUI_IMAGE_WIDTH = gamemap_width / 3 ### else ### # Text reached it maximum width, take all space. ### __GUI_IMAGE_WIDTH = gamemap_width - MAX_TEXT_WIDTH ### fi ### ### if __GUI_IMAGE_WIDTH < 250 ### __GUI_IMAGE_WIDTH = 250 ### fi ### ### if __GUI_IMAGE_WIDTH > 500 ### __GUI_IMAGE_WIDTH = 500 ### fi #define __GUI_MAX_HEIGHT (gamemap_height - 4) #enddef # The maximum width of the text #define MAX_TEXT_WIDTH 675 #enddef # gamemap_width width needed to reach the MAX_TEXT_WIDTH #define TEXT_WIDTH_SATURATION ((3 * {_GUI_HEIGHT_OFFSET}) / 2) #enddef #define BEST_WIDTH (if(gamemap_width > {TEXT_WIDTH_SATURATION}, gamemap_width - {MAX_TEXT_WIDTH}, (gamemap_width / {__GUI_SIZE_FACTOR}))) #enddef #define ASPECT_RATIO (if(image_original_width > 0, (as_decimal(image_original_height) / image_original_width), 0)) #enddef #define __GUI_BEST_SIZE (if(({BEST_WIDTH} * {ASPECT_RATIO}) > {__GUI_MAX_HEIGHT}, floor({__GUI_MAX_HEIGHT} / {ASPECT_RATIO}), {BEST_WIDTH})) #enddef #define ___GUI_IMAGE_WIDTH if({__GUI_BEST_SIZE} < 250, 250, if({__GUI_BEST_SIZE} > 500, 500, {__GUI_BEST_SIZE}) ) #enddef # This is the version with debug info #define __GUI_IMAGE_WIDTH ([[ debug_print('screen_width ', screen_width), debug_print('screen_height ', screen_height), debug_print('gamemap_width ', gamemap_width), debug_print('gamemap_height ', gamemap_height), debug_print('image_original_width ', image_original_width), debug_print('image_original_height ', image_original_height), debug_print('ASPECT_RATIO ', {ASPECT_RATIO}), debug_print('__GUI_MAX_HEIGHT ', {__GUI_MAX_HEIGHT}), debug_print('BEST_WIDTH ', {BEST_WIDTH}), debug_print('__GUI_BEST_SIZE ', {__GUI_BEST_SIZE}) ], {___GUI_IMAGE_WIDTH} ][1] ) #enddef #undef __GUI_IMAGE_WIDTH # This is the version without debug info #define __GUI_IMAGE_WIDTH ({___GUI_IMAGE_WIDTH})#enddef # This is the macro for the image width which is can be used as string # parameter. #define _GUI_IMAGE_WIDTH "{__GUI_IMAGE_WIDTH}"#enddef # the value the image needs to be scaled by, this version can be used as string # parameter. #define _GUI_IMAGE_SCALE_FACTOR ( {__GUI_IMAGE_WIDTH} / 500 )#enddef # The formula to set the widthe of the real image width depending on the # image real size #define __GUI_IMAGE_DISPLAYED_WIDTH ( if((image_original_width < 300) and (image_original_height < 300), image_original_width, ((image_original_width * {__GUI_IMAGE_WIDTH}) / 500)) )#enddef # The formula to set the heighte of the real image height depending on the # image real size #define __GUI_IMAGE_DISPLAYED_HEIGHT ( if((image_original_width < 300) and (image_original_height < 300), image_original_height, ((image_original_height * {__GUI_IMAGE_WIDTH}) / 500)) )#enddef # The X location of the image to display, only tested on the left side. #define __GUI_IMAGE_DISPLAYED_X X ( if(image_original_width > 100, {X}, ({__GUI_IMAGE_WIDTH} - image_width) / 2) )#enddef # The Y location of the image to display, only tested on the left side. # Note since we don't know the exact height of the text we can't centre # the image. Instead we use the centre of the reserved image space. # # TODO the Y can't be determined properly since we don't know the height # of the panel. Disabled the centring for now. # #define __GUI_IMAGE_DISPLAYED_Y ( if(image_original_height > 0, (height - image_height), height - (({__GUI_IMAGE_WIDTH} - image_height) / 2)) )#enddef [window_definition] id = "wml_message_left" description = "bar" [resolution] [background] [draw] [/draw] [/background] [foreground] [draw] [image] x = "{__GUI_IMAGE_DISPLAYED_X X}" y = "{__GUI_IMAGE_DISPLAYED_Y}" w = "{__GUI_IMAGE_DISPLAYED_WIDTH}" h = "{__GUI_IMAGE_DISPLAYED_HEIGHT}" name = "(portrait_image)" vertical_mirror = "(portrait_mirror)" [/image] [/draw] [/foreground] [/resolution] [/window_definition] [window_definition] id = "wml_message_right" description = "bar" [resolution] [background] [draw] [/draw] [/background] [foreground] [draw] [image] x = "(width - {__GUI_IMAGE_DISPLAYED_WIDTH})" y = "(height - image_height)" w = "{__GUI_IMAGE_DISPLAYED_WIDTH}" h = "{__GUI_IMAGE_DISPLAYED_HEIGHT}" name = "(portrait_image)" vertical_mirror = "(portrait_mirror)" [/image] [/draw] [/foreground] [/resolution] [/window_definition] #define _GUI_INPUT_LIST [listbox] id = "input_list" definition = "wml_message" [list_definition] [row] [column] grow_factor = 1 horizontal_grow = "true" [toggle_panel] definition = "wml_message" return_value_id = "ok" [grid] [row] [column] grow_factor = 0 horizontal_alignment = "left" border = "all" border_size = 5 [image] id = "icon" definition = "default" linked_group = "icon" [/image] [/column] [column] grow_factor = 0 horizontal_alignment = "left" border = "all" border_size = 5 [label] id = "label" definition = "default" linked_group = "label" [/label] [/column] [column] grow_factor = 1 horizontal_grow = "true" border = "all" border_size = 5 [label] id = "description" definition = "default" linked_group = "description" [/label] [/column] [/row] [/grid] [/toggle_panel] [/column] [/row] [/list_definition] [/listbox] #enddef [window] id = "wml_message_left" description = "Dialog showing a unit portrait on the left side" [resolution] window_width = 0 window_height = 0 definition = "wml_message_left" automatic_placement = "false" x = "(gamemap_x_offset)" y = 30 width = "(gamemap_width)" height = "(screen_height - 30)" click_dismiss = "true" [linked_group] id = "icon" fixed_width = "true" [/linked_group] [linked_group] id = "label" fixed_width = "true" [/linked_group] [linked_group] id = "description" fixed_width = "true" [/linked_group] [tooltip] id = "tooltip_large" [/tooltip] [helptip] id = "tooltip_large" [/helptip] [grid] [row] [column] vertical_alignment = "bottom" horizontal_grow = "true" [panel] definition = "wml_message" [grid] [row] [column] horizontal_grow = "true" [grid] [row] [column] [spacer] # reserve place for the image and set a minimum height for the text id = "image_place_holder" width = {_GUI_IMAGE_WIDTH} height = 75 [/spacer] [/column] [column] grow_factor = 1 horizontal_grow = "true" [grid] [row] [column] border = "all" border_size = 5 horizontal_alignment = "left" [label] id = "title" definition = "title" [/label] [/column] [/row] [row] [column] grow_factor = 1 horizontal_grow = "true" border = "all" border_size = 5 [scroll_label] id = "message" definition = "wml_message" [/scroll_label] [/column] [/row] [row] [column] grow_factor = 1 horizontal_grow = "true" [grid] [row] [column] border = "all" border_size = 5 [label] id = "input_caption" definition = "default" [/label] [/column] [column] grow_factor = 1 horizontal_grow = "true" border = "all" border_size = 5 [text_box] id = "input" definition = "transparent" [/text_box] [/column] [/row] [/grid] [/column] [/row] [row] [column] border = "all" border_size = 5 horizontal_grow = "true" {_GUI_INPUT_LIST} [/column] [/row] [row] [column] border = "all" border_size = 5 horizontal_alignment = "center" [button] # This button will be shown or hidden depending on the # whether or not a scrollbar is needed to show the # text. id = "ok" definition = "transparent" label = _ "OK" [/button] [/column] [/row] [/grid] [/column] [column] [spacer] width = "( if(gamemap_width - ({__GUI_IMAGE_WIDTH}) > {MAX_TEXT_WIDTH} , gamemap_width - (({__GUI_IMAGE_WIDTH}) + {MAX_TEXT_WIDTH}) , 0 ))" height = 75 [/spacer] [/column] [/row] [/grid] [/column] [/row] [/grid] [/panel] [/column] [/row] [/grid] [/resolution] [/window] [window] id = "wml_message_right" description = "Dialog showing a unit portrait on the right side" [resolution] window_width = 0 window_height = 0 definition = "wml_message_right" automatic_placement = "false" x = "(gamemap_x_offset)" y = 30 width = "(gamemap_width)" height = "(screen_height - 30)" click_dismiss = "true" [linked_group] id = "icon" fixed_width = "true" [/linked_group] [linked_group] id = "label" fixed_width = "true" [/linked_group] [linked_group] id = "description" fixed_width = "true" [/linked_group] [tooltip] id = "tooltip_large" [/tooltip] [helptip] id = "tooltip_large" [/helptip] [grid] [row] [column] vertical_alignment = "bottom" horizontal_grow = "true" [panel] definition = "wml_message" [grid] [row] [column] horizontal_grow = "true" [grid] [row] [column] [spacer] width = 10 height = 75 [/spacer] [/column] [column] grow_factor = 1 horizontal_grow = "true" [grid] [row] [column] border = "all" border_size = 5 horizontal_alignment = "left" [label] id = "title" definition = "title" [/label] [/column] [/row] [row] [column] grow_factor = 1 horizontal_grow = "true" border = "all" border_size = 5 [scroll_label] id = "message" definition = "default" [/scroll_label] [/column] [/row] [row] [column] grow_factor = 1 horizontal_grow = "true" [grid] [row] [column] border = "all" border_size = 5 [label] id = "input_caption" definition = "default" [/label] [/column] [column] grow_factor = 1 horizontal_grow = "true" border = "all" border_size = 5 [text_box] id = "input" definition = "transparent" [/text_box] [/column] [/row] [/grid] [/column] [/row] [row] [column] border = "all" border_size = 5 horizontal_grow = "true" {_GUI_INPUT_LIST} [/column] [/row] [row] [column] border = "all" border_size = 5 horizontal_alignment = "center" [button] # This button will be shown or hidden depending on the # whether or not a scrollbar is needed to show the # text. id = "ok" definition = "transparent" label = _ "OK" [/button] [/column] [/row] [/grid] [/column] [column] [spacer] width = "( if(gamemap_width - (10 + ({__GUI_IMAGE_WIDTH})) > {MAX_TEXT_WIDTH} , gamemap_width - (10 + ({__GUI_IMAGE_WIDTH}) + {MAX_TEXT_WIDTH}) , 0 ))" height = 75 [/spacer] [/column] [column] [spacer] # reserve place for the image and set a minimum height for the text id = "image_place_holder" width = {_GUI_IMAGE_WIDTH} height = 75 [/spacer] [/column] [/row] [/grid] [/column] [/row] [/grid] [/panel] [/column] [/row] [/grid] [/resolution] [/window] #undef _GUI_INPUT_LIST #undef __GUI_IMAGE_DISPLAYED_Y #undef __GUI_IMAGE_DISPLAYED_X #undef __GUI_IMAGE_DISPLAYED_HEIGHT #undef __GUI_IMAGE_DISPLAYED_WIDTH #undef _GUI_IMAGE_SCALE_FACTOR #undef _GUI_IMAGE_WIDTH #undef __GUI_IMAGE_WIDTH #undef ___GUI_IMAGE_WIDTH #undef __GUI_BEST_SIZE #undef __GUI_MAX_HEIGHT #undef __GUI_SIZE_FACTOR #undef _GUI_HEIGHT_OFFSET