diff options
Diffstat (limited to 'Client/Assembly-CSharp/PetBehaviour.cs')
-rw-r--r-- | Client/Assembly-CSharp/PetBehaviour.cs | 140 |
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); + } +} |