summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/PetBehaviour.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/PetBehaviour.cs')
-rw-r--r--Client/Assembly-CSharp/PetBehaviour.cs140
1 files changed, 140 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/PetBehaviour.cs b/Client/Assembly-CSharp/PetBehaviour.cs
new file mode 100644
index 0000000..bf94b13
--- /dev/null
+++ b/Client/Assembly-CSharp/PetBehaviour.cs
@@ -0,0 +1,140 @@
+using System;
+using PowerTools;
+using UnityEngine;
+
+public class PetBehaviour : MonoBehaviour, IBuyable
+{
+ public string ProdId
+ {
+ get
+ {
+ return this.ProductId;
+ }
+ }
+
+ public bool Visible
+ {
+ set
+ {
+ this.rend.enabled = value;
+ this.shadowRend.enabled = value;
+ }
+ }
+
+ private const float SnapDistance = 2f;
+
+ public bool Free;
+
+ public string ProductId;
+
+ public string StoreName;
+
+ public uint SteamId;
+
+ public int ItchId;
+
+ public string ItchUrl;
+
+ public PlayerControl Source;
+
+ public const float MinDistance = 0.2f;
+
+ public const float damping = 0.7f;
+
+ public const float Easing = 0.2f;
+
+ public const float Speed = 5f;
+
+ public float YOffset = -0.25f;
+
+ public SpriteAnim animator;
+
+ public SpriteRenderer rend;
+
+ public SpriteRenderer shadowRend;
+
+ public Rigidbody2D body;
+
+ public Collider2D Collider;
+
+ public AnimationClip idleClip;
+
+ public AnimationClip sadClip;
+
+ public AnimationClip scaredClip;
+
+ public AnimationClip walkClip;
+
+ private Vector2 GetTruePosition()
+ {
+ return base.transform.position + this.Collider.offset * 0.7f;
+ }
+
+ public void FixedUpdate()
+ {
+ if (!this.Source)
+ {
+ this.body.velocity = Vector2.zero;
+ return;
+ }
+ this.Visible = this.Source.Visible;
+ Vector2 truePosition = this.Source.GetTruePosition();
+ Vector2 truePosition2 = this.GetTruePosition();
+ Vector2 vector = this.body.velocity;
+ Vector2 a = truePosition - truePosition2;
+ float num = 0f;
+ if (this.Source.CanMove)
+ {
+ num = 0.2f;
+ }
+ if (a.sqrMagnitude > num)
+ {
+ if (a.sqrMagnitude > 2f)
+ {
+ base.transform.position = truePosition;
+ return;
+ }
+ a *= 5f * PlayerControl.GameOptions.PlayerSpeedMod;
+ vector = vector * 0.8f + a * 0.2f;
+ }
+ else
+ {
+ vector *= 0.7f;
+ }
+ AnimationClip currentAnimation = this.animator.GetCurrentAnimation();
+ if (vector.sqrMagnitude > 0.01f)
+ {
+ if (currentAnimation != this.walkClip)
+ {
+ this.animator.Play(this.walkClip, 1f);
+ }
+ if (vector.x < -0.01f)
+ {
+ this.rend.flipX = true;
+ }
+ else if (vector.x > 0.01f)
+ {
+ this.rend.flipX = false;
+ }
+ }
+ else if (currentAnimation == this.walkClip)
+ {
+ this.animator.Play(this.idleClip, 1f);
+ }
+ this.body.velocity = vector;
+ }
+
+ private void LateUpdate()
+ {
+ Vector3 localPosition = base.transform.localPosition;
+ localPosition.z = (localPosition.y + this.YOffset) / 1000f + 0.0002f;
+ base.transform.localPosition = localPosition;
+ }
+
+ public void SetMourning()
+ {
+ this.Source = null;
+ this.body.velocity = Vector2.zero;
+ this.animator.Play(this.sadClip, 1f);
+ }
+}