Applied :)

Florian Köberle a écrit :
> This is important as the time when the character shoots depend on the shoot 
> animation.
> ---
>  src/character/body.cpp      |    5 +-
>  src/character/character.cpp |   97 +++++++++++++++++++++++-------------------
>  2 files changed, 56 insertions(+), 46 deletions(-)
>
> diff --git a/src/character/body.cpp b/src/character/body.cpp
> index f78427f..144bb0a 100644
> --- a/src/character/body.cpp
> +++ b/src/character/body.cpp
> @@ -32,9 +32,9 @@
>  #include "interface/mouse.h"
>  #include "particles/body_member.h"
>  #include "particles/teleport_member.h"
> +#include "network/randomsync.h"
>  #include "team/team.h"
>  #include "team/teams_list.h"
> -#include <WORMUX_random.h>
>  #include "tool/resource_manager.h"
>  #include "tool/xml_document.h"
>  
> @@ -607,7 +607,8 @@ void Body::SetMovement(const std::string& name)
>  void Body::PlayAnimation()
>  {
>    std::ostringstream name;
> -  name << "animation" << RandomLocal().GetLong(0, animation_number - 1);
> +  MSG_DEBUG("random.get", "Body::PlayAnimation()");
> +  name << "animation" << RandomSync().GetLong(0, animation_number - 1);
>    SetClotheOnce(name.str());
>    SetMovementOnce(name.str());
>  }
> diff --git a/src/character/character.cpp b/src/character/character.cpp
> index f259f88..dcdf599 100644
> --- a/src/character/character.cpp
> +++ b/src/character/character.cpp
> @@ -94,12 +94,19 @@ void Character::SetBody(Body* char_body)
>    SetClothe("normal");
>    SetMovement("breathe");
>  
> -  MSG_DEBUG("random.get", "Character::SetBody(...)");
> +  MSG_DEBUG("random.get", "Character::SetBody(...) direction");
>    SetDirection(RandomSync().GetBool() ? DIRECTION_LEFT : DIRECTION_RIGHT);
> -  body->SetFrame(RandomLocal().GetLong(0, body->GetFrameCount() - 1));
> +  MSG_DEBUG("random.get", "Character::SetBody(...) body frame");
> +  body->SetFrame(RandomSync().GetLong(0, body->GetFrameCount() - 1));
>    SetSize(body->GetSize());
>  }
>  
> +static uint GetRandomAnimationTimeValue()
> +{
> +  MSG_DEBUG("random.get", "Character::SetBody(...) body frame");
> +  return Time::GetInstance()->Read() + 
> RandomSync().GetLong(ANIM_PAUSE_MIN,ANIM_PAUSE_MAX);
> +}
> +
>  Character::Character (Team& my_team, const std::string &name, Body 
> *char_body) :
>    PhysicalObj("character"),
>    character_name(name),
> @@ -118,7 +125,7 @@ Character::Character (Team& my_team, const std::string 
> &name, Body *char_body) :
>    rl_motion_pause(0),
>    do_nothing_time(0),
>    walking_time(0),
> -  animation_time(Time::GetInstance()->Read() + 
> RandomLocal().GetLong(ANIM_PAUSE_MIN,ANIM_PAUSE_MAX)),
> +  animation_time(GetRandomAnimationTimeValue()),
>    lost_energy(0),
>    hidden(false),
>    channel_step(-1),
> @@ -384,47 +391,6 @@ void Character::Draw()
>        || IsDead())
>      draw_loosing_energy = false;
>  
> -  if (Game::GetInstance()->ReadState() == Game::END_TURN && 
> body->IsWalking())
> -    body->ResetWalk();
> -
> -  if (Time::GetInstance()->Read() > animation_time && !IsActiveCharacter() 
> && !IsDead()
> -      && body->GetMovement().substr(0,9) != "animation"
> -      &&  body->GetClothe().substr(0,9) != "animation")
> -  {
> -    body->PlayAnimation();
> -    animation_time = Time::GetInstance()->Read() + 
> body->GetMovementDuration() + 
> RandomLocal().GetLong(ANIM_PAUSE_MIN,ANIM_PAUSE_MAX);
> -  }
> -
> -  // Stop the animation or the black skin if we are playing
> -  if (IsActiveCharacter()
> -      && Game::GetInstance()->ReadState() == Game::PLAYING
> -      && (body->GetMovement().substr(0,9) == "animation"
> -       || body->GetClothe().substr(0,9) == "animation"
> -       || body->GetClothe() == "black"))
> -  {
> -    SetClothe("normal");
> -    SetMovement("breathe");
> -  }
> -
> -  // Stop flying if we don't go fast enough
> -  double n, a;
> -  GetSpeed(n, a);
> -  if (body->GetMovement() == "fly" && n < MIN_SPEED_TO_FLY)
> -    SetMovement("breathe");
> -
> -
> -  // Refresh the body (needed to determine if "weapon-*-begin-shoot" is 
> finnished)
> -  body->Build();
> -
> -  if (prepare_shoot)
> -  {
> -    if (body->GetMovement() != "weapon-" + ActiveTeam().GetWeapon().GetID() 
> + "-begin-shoot")
> -    {
> -      // if the movement is finnished, shoot !
> -      DoShoot();
> -      prepare_shoot = false;
> -    }
> -  }
>  
>    Point2i pos = GetPosition();
>    body->Draw(pos);
> @@ -639,6 +605,49 @@ void Character::Refresh()
>      rotation = M_PI * speed.y / speed_init;
>      body->SetRotation(rotation);
>    }
> +
> +  if (Game::GetInstance()->ReadState() == Game::END_TURN && 
> body->IsWalking())
> +    body->ResetWalk();
> +
> +  if (Time::GetInstance()->Read() > animation_time && !IsActiveCharacter() 
> && !IsDead()
> +      && body->GetMovement().substr(0,9) != "animation"
> +      &&  body->GetClothe().substr(0,9) != "animation")
> +  {
> +    body->PlayAnimation();
> +    MSG_DEBUG("random.get", "Character::Refresh()");
> +    animation_time = Time::GetInstance()->Read() + 
> body->GetMovementDuration() + 
> RandomSync().GetLong(ANIM_PAUSE_MIN,ANIM_PAUSE_MAX);
> +  }
> +
> +  // Stop the animation or the black skin if we are playing
> +  if (IsActiveCharacter()
> +      && Game::GetInstance()->ReadState() == Game::PLAYING
> +      && (body->GetMovement().substr(0,9) == "animation"
> +       || body->GetClothe().substr(0,9) == "animation"
> +       || body->GetClothe() == "black"))
> +  {
> +    SetClothe("normal");
> +    SetMovement("breathe");
> +  }
> +
> +  // Stop flying if we don't go fast enough
> +  double n, a;
> +  GetSpeed(n, a);
> +  if (body->GetMovement() == "fly" && n < MIN_SPEED_TO_FLY)
> +    SetMovement("breathe");
> +
> +
> +  // Refresh the body (needed to determine if "weapon-*-begin-shoot" is 
> finnished)
> +  body->Build();
> +
> +  if (prepare_shoot)
> +  {
> +    if (body->GetMovement() != "weapon-" + ActiveTeam().GetWeapon().GetID() 
> + "-begin-shoot")
> +    {
> +      // if the movement is finnished, shoot !
> +      DoShoot();
> +      prepare_shoot = false;
> +    }
> +  }
>  }
>  
>  // Prepare a new turn
>   


_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à