Author: boucman
Date: Sat Nov 1 10:46:52 2008
New Revision: 30487
URL: http://svn.gna.org/viewcvs/wesnoth?rev=30487&view=rev
Log:
reduce jumpyness at change of hex
Modified:
trunk/src/unit_animation.cpp
trunk/src/unit_animation.hpp
Modified: trunk/src/unit_animation.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_animation.cpp?rev=30487&r1=30486&r2=30487&view=diff
==============================================================================
--- trunk/src/unit_animation.cpp (original)
+++ trunk/src/unit_animation.cpp Sat Nov 1 10:46:52 2008
@@ -141,7 +141,9 @@
hits_(),
swing_num_(),
sub_anims_(),
- unit_anim_(start_time)
+ unit_anim_(start_time),
+ src_(),
+ dst_()
{
add_frame(frame.duration(),frame,!frame.does_not_change());
}
@@ -160,7 +162,9 @@
hits_(),
swing_num_(),
sub_anims_(),
- unit_anim_(cfg,frame_string)
+ unit_anim_(cfg,frame_string),
+ src_(),
+ dst_()
{
// if(!cfg["debug"].empty()) printf("DEBUG WML:
FINAL\n%s\n\n",cfg.debug().c_str());
config::child_map::const_iterator frame_itor
=cfg.all_children().begin();
@@ -642,8 +646,6 @@
animated<unit_frame>(),
accelerate(true),
parameters_(cfg,frame_string),
- src_(),
- dst_(),
halo_id_(0),
last_frame_begin_time_(0)
{
@@ -731,8 +733,10 @@
void unit_animation::start_animation(int start_time,const map_location &src,
const map_location &dst, bool cycles, const std::string text, const Uint32
text_color,const bool accelerate)
{
unit_anim_.accelerate = accelerate;
+ src_ = src;
+ dst_ = dst;
new_animation_frame();
- unit_anim_.start_animation(start_time, src, dst, cycles);
+ unit_anim_.start_animation(start_time, cycles);
if(!text.empty()) {
particule crude_build;
crude_build.add_frame(1,frame_builder());
@@ -742,17 +746,14 @@
std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
anim_itor->second.accelerate = accelerate;
- anim_itor->second.start_animation(start_time,src,dst,cycles);
+ anim_itor->second.start_animation(start_time,cycles);
}
}
void unit_animation::update_parameters(const map_location &src, const
map_location &dst)
{
- unit_anim_.update_parameters(src, dst);
- std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
- for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
- anim_itor->second.update_parameters(src,dst);
- }
+ src_ = src;
+ dst_ = dst;
}
void unit_animation::pause_animation()
{
@@ -776,9 +777,9 @@
{
std::map<std::string,particule>::iterator anim_itor =sub_anims_.begin();
- unit_anim_.redraw(value,true);
- for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
- anim_itor->second.redraw( value);
+ unit_anim_.redraw(value,src_,dst_,true);
+ for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
+ anim_itor->second.redraw( value,src_,dst_);
}
}
bool unit_animation::invalidate(const frame_parameters& value) const
@@ -786,28 +787,28 @@
bool result = false;
std::map<std::string,particule>::const_iterator anim_itor
=sub_anims_.begin();
- result |= unit_anim_.invalidate(value,true);
- for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
- result |= anim_itor->second.invalidate(value);
+ result |= unit_anim_.invalidate(value,src_,dst_,true);
+ for( /*null*/; anim_itor != sub_anims_.end() ; anim_itor++) {
+ result |= anim_itor->second.invalidate(value,src_,dst_);
}
return result;
}
-void unit_animation::particule::redraw(const frame_parameters& value,const
bool primary)
+void unit_animation::particule::redraw(const frame_parameters& value,const
map_location &src, const map_location &dst, const bool primary)
{
const unit_frame& current_frame= get_current_frame();
const frame_parameters default_val =
parameters_.parameters(get_animation_time() -get_begin_time());
if(get_current_frame_begin_time() != last_frame_begin_time_ ) {
last_frame_begin_time_ = get_current_frame_begin_time();
-
current_frame.redraw(get_current_frame_time(),true,src_,dst_,&halo_id_,default_val,value,primary);
+
current_frame.redraw(get_current_frame_time(),true,src,dst,&halo_id_,default_val,value,primary);
} else {
-
current_frame.redraw(get_current_frame_time(),false,src_,dst_,&halo_id_,default_val,value,primary);
- }
-}
-bool unit_animation::particule::invalidate(const frame_parameters& value,const
bool primary ) const
+
current_frame.redraw(get_current_frame_time(),false,src,dst,&halo_id_,default_val,value,primary);
+ }
+}
+bool unit_animation::particule::invalidate(const frame_parameters& value,const
map_location &src, const map_location &dst, const bool primary ) const
{
const unit_frame& current_frame= get_current_frame();
const frame_parameters default_val =
parameters_.parameters(get_animation_time() -get_begin_time());
- return
current_frame.invalidate(need_update(),get_current_frame_time(),src_,dst_,default_val,value,primary);
+ return
current_frame.invalidate(need_update(),get_current_frame_time(),src,dst,default_val,value,primary);
}
unit_animation::particule::~particule()
@@ -816,30 +817,15 @@
halo_id_ = halo::NO_HALO;
}
-void unit_animation::particule::start_animation(int start_time,
- const map_location &src, const map_location &dst,
- bool cycles)
+void unit_animation::particule::start_animation(int start_time, bool cycles)
{
halo::remove(halo_id_);
halo_id_ = halo::NO_HALO;
parameters_.duration(get_animation_duration());
animated<unit_frame>::start_animation(start_time,cycles);
last_frame_begin_time_ = get_begin_time() -1;
- if(src != map_location::null_location || dst !=
map_location::null_location) {
- src_ = src;
- dst_ = dst;
- }
-}
-
-
-
-void unit_animation::particule::update_parameters(const map_location &src,
const map_location &dst)
-{
- if(src != map_location::null_location || dst !=
map_location::null_location) {
- src_ = src;
- dst_ = dst;
- }
-}
+}
+
void unit_animator::add_animation(unit* animated_unit,const std::string& event,
const map_location &src , const int value,bool with_bars,bool
cycles,
Modified: trunk/src/unit_animation.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit_animation.hpp?rev=30487&r1=30486&r2=30487&view=diff
==============================================================================
--- trunk/src/unit_animation.hpp (original)
+++ trunk/src/unit_animation.hpp Sat Nov 1 10:46:52 2008
@@ -76,8 +76,6 @@
animated<unit_frame>(start_time),
accelerate(true),
parameters_(),
- src_(),
- dst_(),
halo_id_(0),
last_frame_begin_time_(0)
{};
@@ -85,18 +83,15 @@
virtual ~particule();
bool need_update() const;
void override(int start_time,const std::string
highlight="", const std::string blend_ratio ="",Uint32 blend_color = 0,const
std::string offset="");
- void redraw( const frame_parameters& value,const bool
primary=false);
- bool invalidate(const frame_parameters& value, const
bool primary = false) const;
- void start_animation(int start_time,const map_location&
src,const map_location& dst, bool cycles=false);
- void update_parameters(const map_location& src,const
map_location& dst);
+ void redraw( const frame_parameters& value,const
map_location &src, const map_location &dst, const bool primary=false);
+ bool invalidate(const frame_parameters& value,const
map_location &src, const map_location &dst, const bool primary = false) const;
+ void start_animation(int start_time, bool cycles=false);
const frame_parameters parameters(const
frame_parameters & default_val,bool primary) const { return
get_current_frame().merge_parameters(get_current_frame_time(),parameters_.parameters(get_animation_time()-get_begin_time()),default_val,primary);
};
bool accelerate;
private:
//animation params that can be locally overridden by
frames
frame_builder parameters_;
- map_location src_;
- map_location dst_;
int halo_id_;
int last_frame_begin_time_;
@@ -115,6 +110,9 @@
std::vector<int> swing_num_;
std::map<std::string,particule> sub_anims_;
particule unit_anim_;
+ /* these are drawing parameters, but for efficiancy reason they
are in the anim and not in the particle */
+ map_location src_;
+ map_location dst_;
};
class unit_animator
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits