mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-18 02:29:25 +00:00
Merge branch 'master' of git://github.com/wesnoth/wesnoth
This commit is contained in:
commit
9fd633e5da
@ -40,6 +40,8 @@ Version 1.13.0-dev:
|
|||||||
* Fix bug #21761: wesnoth.synchronize_choice will now give a warning when
|
* Fix bug #21761: wesnoth.synchronize_choice will now give a warning when
|
||||||
the table returned by the user-specified function is not completely valid,
|
the table returned by the user-specified function is not completely valid,
|
||||||
when wesnoth is running in debug mode (--debug command line flag).
|
when wesnoth is running in debug mode (--debug command line flag).
|
||||||
|
* Graphics:
|
||||||
|
* Smooth unit movement over terrain with elevation (e.g. keeps/bridges)
|
||||||
* Units:
|
* Units:
|
||||||
* Increased the experience requirement for the Rami from 32 to 39
|
* Increased the experience requirement for the Rami from 32 to 39
|
||||||
* Increased the experience requirement for the Saree from 56 to 64
|
* Increased the experience requirement for the Saree from 56 to 64
|
||||||
|
31
src/unit.cpp
31
src/unit.cpp
@ -1917,6 +1917,13 @@ void unit::redraw_unit()
|
|||||||
display &disp = *display::get_singleton();
|
display &disp = *display::get_singleton();
|
||||||
const gamemap &map = disp.get_map();
|
const gamemap &map = disp.get_map();
|
||||||
|
|
||||||
|
const map_location dst = loc_.get_direction(facing_);
|
||||||
|
const int xsrc = disp.get_location_x(loc_);
|
||||||
|
const int ysrc = disp.get_location_y(loc_);
|
||||||
|
const int xdst = disp.get_location_x(dst);
|
||||||
|
const int ydst = disp.get_location_y(dst);
|
||||||
|
int d2 = disp.hex_size() / 2;
|
||||||
|
|
||||||
if ( hidden_ || disp.is_blindfolded() || !is_visible_to_team(disp.get_teams()[disp.viewing_team()],disp.show_everything(),map) )
|
if ( hidden_ || disp.is_blindfolded() || !is_visible_to_team(disp.get_teams()[disp.viewing_team()],disp.show_everything(),map) )
|
||||||
{
|
{
|
||||||
clear_haloes();
|
clear_haloes();
|
||||||
@ -1933,11 +1940,14 @@ void unit::redraw_unit()
|
|||||||
|
|
||||||
if (refreshing_) return;
|
if (refreshing_) return;
|
||||||
refreshing_ = true;
|
refreshing_ = true;
|
||||||
|
|
||||||
anim_->update_last_draw_time();
|
anim_->update_last_draw_time();
|
||||||
frame_parameters params;
|
frame_parameters params;
|
||||||
const t_translation::t_terrain terrain = map.get_terrain(loc_);
|
const t_translation::t_terrain terrain = map.get_terrain(loc_);
|
||||||
const terrain_type& terrain_info = map.get_terrain_info(terrain);
|
const terrain_type& terrain_info = map.get_terrain_info(terrain);
|
||||||
|
const t_translation::t_terrain terrain_dst = map.get_terrain(dst);
|
||||||
|
const terrain_type& terrain_dst_info = map.get_terrain_info(terrain_dst);
|
||||||
|
|
||||||
// do not set to 0 so we can distinguish the flying from the "not on submerge terrain"
|
// do not set to 0 so we can distinguish the flying from the "not on submerge terrain"
|
||||||
// instead use -1.0 (as in "negative depth", it will be ignored by rendering)
|
// instead use -1.0 (as in "negative depth", it will be ignored by rendering)
|
||||||
params.submerge= is_flying() ? -1.0 : terrain_info.unit_submerge();
|
params.submerge= is_flying() ? -1.0 : terrain_info.unit_submerge();
|
||||||
@ -1949,7 +1959,12 @@ void unit::redraw_unit()
|
|||||||
if (loc_ == disp.selected_hex() && params.highlight_ratio == 1.0) {
|
if (loc_ == disp.selected_hex() && params.highlight_ratio == 1.0) {
|
||||||
params.highlight_ratio = 1.5;
|
params.highlight_ratio = 1.5;
|
||||||
}
|
}
|
||||||
int height_adjust = static_cast<int>(terrain_info.unit_height_adjust() * disp.get_zoom_factor());
|
|
||||||
|
// Todo: calculate unit offset without processing the whole get_current_params
|
||||||
|
double offset = anim_->get_current_params(params).offset;
|
||||||
|
int height_adjust = static_cast<int>((terrain_info.unit_height_adjust() * (1.0 - offset) +
|
||||||
|
terrain_dst_info.unit_height_adjust() * offset) *
|
||||||
|
disp.get_zoom_factor());
|
||||||
if (is_flying() && height_adjust < 0) {
|
if (is_flying() && height_adjust < 0) {
|
||||||
height_adjust = 0;
|
height_adjust = 0;
|
||||||
}
|
}
|
||||||
@ -1989,18 +2004,6 @@ void unit::redraw_unit()
|
|||||||
|
|
||||||
const frame_parameters adjusted_params = anim_->get_current_params(params);
|
const frame_parameters adjusted_params = anim_->get_current_params(params);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const map_location dst = loc_.get_direction(facing_);
|
|
||||||
const int xsrc = disp.get_location_x(loc_);
|
|
||||||
const int ysrc = disp.get_location_y(loc_);
|
|
||||||
const int xdst = disp.get_location_x(dst);
|
|
||||||
const int ydst = disp.get_location_y(dst);
|
|
||||||
int d2 = disp.hex_size() / 2;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const int x = static_cast<int>(adjusted_params.offset * xdst + (1.0-adjusted_params.offset) * xsrc) + d2;
|
const int x = static_cast<int>(adjusted_params.offset * xdst + (1.0-adjusted_params.offset) * xsrc) + d2;
|
||||||
const int y = static_cast<int>(adjusted_params.offset * ydst + (1.0-adjusted_params.offset) * ysrc) + d2;
|
const int y = static_cast<int>(adjusted_params.offset * ydst + (1.0-adjusted_params.offset) * ysrc) + d2;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user