All pastes #1935832 Raw Edit

Someone

public text v1 · immutable
#1935832 ·published 2010-09-08 16:44 UTC
rendered paste body
Index: src/character/character.h
===================================================================
--- src/character/character.h	(revision 8401)
+++ src/character/character.h	(working copy)
@@ -96,7 +96,6 @@
   Body* body;
 
 private:
-  bool MustBeDrawn() const;
   bool MustDrawLostEnergy() const;
   bool MustDrawEnergyBar() const;
   bool MustDrawName() const;
@@ -163,6 +162,7 @@
   void Draw();
   void DrawName() const;
   void Refresh();
+  bool MustBeDrawn() const;
 
   void PrepareTurn();
   void StartPlaying();
Index: src/character/member.cpp
===================================================================
--- src/character/member.cpp	(revision 8401)
+++ src/character/member.cpp	(working copy)
@@ -175,7 +175,7 @@
   }
 }
 
-void Member::RefreshSprite(LRDirection direction)
+void Member::RefreshSprite(LRDirection direction, bool animate)
 {
   // The sprite pointer may be invalid at the weapon sprite.
   ASSERT(name != "weapon" && type != "weapon");
@@ -189,8 +189,10 @@
     spr->SetRotation_rad(-angle_rad);
   }
 
-  spr->SetAlpha(alpha);
-  spr->Update();
+  if (animate) {
+    spr->SetAlpha(alpha);
+    spr->Update();
+  }
 }
 
 void Member::Draw(const Point2i & _pos,
Index: src/character/member.h
===================================================================
--- src/character/member.h	(revision 8401)
+++ src/character/member.h	(working copy)
@@ -73,7 +73,7 @@
   void ApplyMovement(const member_mvt &                mvt,
                      std::vector<class c_junction *> & skel_lst);
   void SetAngle(const Double & angle) { angle_rad = angle; };
-  void RefreshSprite(LRDirection direction);
+  void RefreshSprite(LRDirection direction, bool animate=true);
 
   void SetPos(const Point2d & _pos) { pos = _pos; };
 
Index: src/character/body.cpp
===================================================================
--- src/character/body.cpp	(revision 8401)
+++ src/character/body.cpp	(working copy)
@@ -539,12 +539,13 @@
 {
   Member* member;
   int layersCount = (int)current_clothe->GetLayers().size();
+  bool visible = owner->MustBeDrawn();
 
   for (int layer=0; layer < layersCount; layer++) {
     member = current_clothe->GetLayers()[layer];
 
     if ("weapon" != member->GetName()) {
-      member->RefreshSprite(direction);
+      member->RefreshSprite(direction, visible);
     }
   }
 }