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:
Mark de Wever 2008-07-12 18:44:47 +00:00
parent a498796b5d
commit 40075dc494
3 changed files with 62 additions and 44 deletions

View file

@ -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

View file

@ -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

View file

@ -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);