Make the code work for images at the right side as well.
It seemed the dialog was 2 pixels to wide for left and right side, which has been fixed. Move the right side trigger closer to the left side test area in the test scenario.
This commit is contained in:
parent
a498796b5d
commit
40075dc494
3 changed files with 62 additions and 44 deletions
|
@ -56,9 +56,9 @@
|
|||
|
||||
[image]
|
||||
x = "(width - image_width)"
|
||||
y = "(250 - image_height)"
|
||||
# NOTE this image can be removed once we move to the final code.
|
||||
name = "arch_fem200.png"
|
||||
y = "(height - image_height)"
|
||||
name = "(portrait_image)"
|
||||
vertical_mirror = "(portrait_mirror)"
|
||||
[/image]
|
||||
|
||||
[/draw]
|
||||
|
@ -227,56 +227,39 @@
|
|||
|
||||
#unddef RESOLUTION
|
||||
|
||||
[window]
|
||||
id = "message_test_right"
|
||||
description = "Test dialog to test Jetryl's new message style and Kitty's portraits."
|
||||
|
||||
#define RESOLUTION_RIGHT WIDTH HEIGHT IMAGE_WIDTH
|
||||
[resolution]
|
||||
window_width = {WIDTH}
|
||||
window_height = {HEIGHT}
|
||||
|
||||
definition = "message_test_right"
|
||||
|
||||
automatic_placement = "true"
|
||||
vertical_placement = "bottom"
|
||||
horizontal_placement = "left"
|
||||
automatic_placement = "false"
|
||||
|
||||
# NOTE the values will be overwritten in the game later on, maybe we should allow
|
||||
# variables here as well...
|
||||
x = 0
|
||||
y = 0
|
||||
width = 750
|
||||
height = 400
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
|
||||
# This spacer makes sure the dialog has a minimum height.
|
||||
[spacer]
|
||||
width = 0
|
||||
height = 250
|
||||
[/spacer]
|
||||
|
||||
[/column]
|
||||
|
||||
|
||||
[column]
|
||||
vertical_alignment = "bottom"
|
||||
horizontal_grow = "true"
|
||||
|
||||
[panel]
|
||||
definition = "message_test"
|
||||
|
||||
[grid]
|
||||
[row]
|
||||
|
||||
[column]
|
||||
|
||||
# This spacer makes sure the panel has a minimum width.
|
||||
[spacer]
|
||||
width = 658
|
||||
height = 0
|
||||
[/spacer]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
horizontal_grow = "true"
|
||||
|
||||
[grid]
|
||||
|
||||
|
@ -284,6 +267,8 @@
|
|||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
horizontal_grow = "true"
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
|
@ -296,15 +281,12 @@
|
|||
[/column]
|
||||
|
||||
[column]
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
|
||||
[spacer]
|
||||
# reserve place for the image and set a minimum height for the text
|
||||
id = "image_place_holder"
|
||||
|
||||
width = 250
|
||||
width = {IMAGE_WIDTH}
|
||||
height = 75
|
||||
[/spacer]
|
||||
|
||||
|
@ -329,6 +311,14 @@
|
|||
[/grid]
|
||||
|
||||
[/resolution]
|
||||
#enddef
|
||||
|
||||
[window]
|
||||
id = "message_test_right"
|
||||
description = "Test dialog to test Jetryl's new message style and Kitty's portraits."
|
||||
{RESOLUTION_RIGHT 1000 700 250}
|
||||
{RESOLUTION_RIGHT 0 0 500}
|
||||
|
||||
[/window]
|
||||
|
||||
#unddef RESOLUTION_RIGHT
|
||||
|
|
|
@ -145,7 +145,7 @@ Xu , Xu , Qxu , Qxu , Ql , Ql
|
|||
[/event]
|
||||
|
||||
[label]
|
||||
x,y=13,7
|
||||
x,y=19,11
|
||||
text="right"
|
||||
[/label]
|
||||
|
||||
|
@ -153,11 +153,11 @@ Xu , Xu , Qxu , Qxu , Ql , Ql
|
|||
name=moveto
|
||||
first_time_only=no
|
||||
[filter]
|
||||
x,y,side=13,7,1
|
||||
x,y,side=19,11,1
|
||||
[/filter]
|
||||
|
||||
[message_test_right]
|
||||
message="Test foo bar bla bla bla bla bla bla bla bla bla bla bla"
|
||||
message="Test message"
|
||||
[/message_test_right]
|
||||
[/event]
|
||||
turns=36
|
||||
|
|
|
@ -1905,7 +1905,6 @@ namespace {
|
|||
// be removed without further notice.
|
||||
WML_HANDLER_FUNCTION(message_test_left,/*handler*/,event_info, cfg)
|
||||
{
|
||||
|
||||
const std::string message = cfg["message"];
|
||||
gui2::init();
|
||||
gui2::twindow window = gui2::build((screen)->video(), "message_test_left");
|
||||
|
@ -1934,7 +1933,7 @@ namespace {
|
|||
*/
|
||||
window.set_size(::create_rect(0,
|
||||
gui2::settings::screen_height - window_height,
|
||||
gui2::settings::screen_width - 140, window_height));
|
||||
gui2::settings::screen_width - 142, window_height));
|
||||
|
||||
window.canvas(1).set_variable("portrait_image", variant(image));
|
||||
window.canvas(1).set_variable("portrait_mirror", variant(mirror));
|
||||
|
@ -1947,12 +1946,41 @@ namespace {
|
|||
window.show();
|
||||
}
|
||||
|
||||
WML_HANDLER_FUNCTION(message_test_right,/*handler*/,/*event_info*/,cfg)
|
||||
WML_HANDLER_FUNCTION(message_test_right,/*handler*/,event_info,cfg)
|
||||
{
|
||||
const std::string message = cfg["message"];
|
||||
gui2::init();
|
||||
gui2::twindow window = gui2::build((screen)->video(), "message_test_right");
|
||||
|
||||
// Use an ugly hack, if the spacer has the wanted best_size we use the
|
||||
// bigger image otherwise the smaller one.
|
||||
gui2::tspacer* spacer =
|
||||
dynamic_cast<gui2::tspacer*>(window.find_widget("image_place_holder", false));
|
||||
unsigned image_size = 200;
|
||||
unsigned window_height = 400;
|
||||
if(spacer && spacer->get_best_size().x == 500) {
|
||||
image_size = 400;
|
||||
window_height = 600;
|
||||
}
|
||||
|
||||
const unit_map::iterator speaker = units->find(event_info.loc1);
|
||||
assert(speaker != units->end());
|
||||
|
||||
const tportrait* portrait = speaker->second.portrait(image_size, tportrait::RIGHT);
|
||||
const std::string image = portrait ? portrait->image : "";
|
||||
const bool mirror = portrait ? portrait->mirror : false;
|
||||
|
||||
/**
|
||||
* @todo FIXME these fixed sizes should depend on the map size and maybe
|
||||
* let wml determine the height.
|
||||
*/
|
||||
window.set_size(::create_rect(0,
|
||||
gui2::settings::screen_height - window_height,
|
||||
gui2::settings::screen_width - 142, window_height));
|
||||
|
||||
window.canvas(1).set_variable("portrait_image", variant(image));
|
||||
window.canvas(1).set_variable("portrait_mirror", variant(mirror));
|
||||
|
||||
gui2::tcontrol* label = dynamic_cast<gui2::tcontrol*>(window.find_widget("message", false));
|
||||
assert(label);
|
||||
label->set_label(message);
|
||||
|
|
Loading…
Add table
Reference in a new issue