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); } }