DRHPS/code-csharp/en_US/TS_VesselController.cs
2025-04-08 11:31:35 +08:00

195 lines
9.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class TS_VesselController : MonoBehaviour
{
[Header("-- Vessel Randomizer --")]
[SerializeField]
private Transform vesselTransform;
public bool CopyAnimationsEnabled = true;
public bool CopyTransformsEnabled = true;
[Space(5f)]
[SerializeField]
private SpriteRenderer HeadRenderer;
[SerializeField]
private int headIndex;
[SerializeField]
private SpriteRenderer BodyRenderer;
[SerializeField]
private int bodyIndex;
[SerializeField]
private SpriteRenderer LegsRenderer;
[SerializeField]
private int legsIndex;
[Space(5f)]
[SerializeField]
private Transform HeadMask;
[SerializeField]
private Transform BodyMask;
[SerializeField]
private Transform LegsMask;
[Space(5f)]
[SerializeField]
private List<TSVesselHead> HeadVarients = new List<TSVesselHead>();
[SerializeField]
private List<TSVesselBody> BodyVarients = new List<TSVesselBody>();
[SerializeField]
private List<TSVesselLegs> LegVarients = new List<TSVesselLegs>();
[Space(5f)]
[SerializeField]
private SpriteRenderer krisAnimator;
private void Start()
{
headIndex = Random.Range(0, HeadVarients.Count);
bodyIndex = Random.Range(0, BodyVarients.Count);
legsIndex = Random.Range(0, LegVarients.Count);
krisAnimator = PlayerManager.Instance.PlayerSpriteRenderer;
PlayerManager.Instance.GetComponentInChildren<SpriteRenderer>().enabled = false;
}
private void LateUpdate()
{
if (CopyAnimationsEnabled)
{
CopyKrisAnimations();
}
if (CopyTransformsEnabled)
{
vesselTransform.transform.position = PlayerManager.Instance.transform.position + new Vector3(0f, 0f, 0f);
}
}
private void CopyKrisAnimations()
{
if (krisAnimator.sprite.name == "kris_idle_down")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Idle_Down, BodyVarients[bodyIndex].BodySprite_Idle_Down, LegVarients[legsIndex].LegSprite_Idle_Down, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true);
}
if (krisAnimator.sprite.name == "kris_idle_right")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Idle_Right, BodyVarients[bodyIndex].BodySprite_Idle_Right, LegVarients[legsIndex].LegSprite_Idle_Right);
}
if (krisAnimator.sprite.name == "kris_idle_up")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Idle_Up, BodyVarients[bodyIndex].BodySprite_Idle_Up, LegVarients[legsIndex].LegSprite_Idle_Up, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true, isUpwards: true);
}
if (krisAnimator.sprite.name == "kris_idle_left")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Idle_Right, BodyVarients[bodyIndex].BodySprite_Idle_Right, LegVarients[legsIndex].LegSprite_Idle_Right, headFlipped: true, bodyFlipped: true, legsFlipped: true);
}
if (krisAnimator.sprite.name == "kris_walk1_down")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Down, BodyVarients[bodyIndex].BodySprite_Walk_Down, LegVarients[legsIndex].LegSprite_Walk_Down, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true);
if (LegVarients[legsIndex].isFlippedVarient)
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Down, BodyVarients[bodyIndex].BodySprite_Walk2_Down, LegVarients[legsIndex].LegSprite_Walk_Down, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true);
}
}
if (krisAnimator.sprite.name == "kris_walk1_right")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Right, BodyVarients[bodyIndex].BodySprite_Walk_Right, LegVarients[legsIndex].LegSprite_Walk_Right);
}
if (krisAnimator.sprite.name == "kris_walk1_up")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Up, BodyVarients[bodyIndex].BodySprite_Walk_Up, LegVarients[legsIndex].LegSprite_Walk_Up, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true, isUpwards: true);
if (LegVarients[legsIndex].isFlippedVarient)
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Up, BodyVarients[bodyIndex].BodySprite_Walk2_Up, LegVarients[legsIndex].LegSprite_Walk_Up, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true, isUpwards: true);
}
}
if (krisAnimator.sprite.name == "kris_walk1_left")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Right, BodyVarients[bodyIndex].BodySprite_Walk_Right, LegVarients[legsIndex].LegSprite_Walk_Right, headFlipped: true, bodyFlipped: true, legsFlipped: true);
}
if (krisAnimator.sprite.name == "kris_walk2_down")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Down, BodyVarients[bodyIndex].BodySprite_Walk2_Down, LegVarients[legsIndex].LegSprite_Walk2_Down, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true);
if (LegVarients[legsIndex].isFlippedVarient)
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Down, BodyVarients[bodyIndex].BodySprite_Walk_Down, LegVarients[legsIndex].LegSprite_Walk2_Down, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true);
}
}
if (krisAnimator.sprite.name == "kris_walk2_right")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Right, BodyVarients[bodyIndex].BodySprite_Walk2_Right, LegVarients[legsIndex].LegSprite_Walk_Right);
}
if (krisAnimator.sprite.name == "kris_walk2_up")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Up, BodyVarients[bodyIndex].BodySprite_Walk2_Up, LegVarients[legsIndex].LegSprite_Walk2_Up, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true, isUpwards: true);
if (LegVarients[legsIndex].isFlippedVarient)
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Up, BodyVarients[bodyIndex].BodySprite_Walk_Up, LegVarients[legsIndex].LegSprite_Walk2_Up, headFlipped: false, bodyFlipped: false, legsFlipped: false, ValidLegFlipping: true, isUpwards: true);
}
}
if (krisAnimator.sprite.name == "kris_walk2_left")
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Walk_Right, BodyVarients[bodyIndex].BodySprite_Walk2_Right, LegVarients[legsIndex].LegSprite_Walk_Right, headFlipped: true, bodyFlipped: true, legsFlipped: true);
}
}
public void SetVesselPartAnimations(Sprite headSprite, Sprite bodySprite, Sprite legSprite, bool headFlipped = false, bool bodyFlipped = false, bool legsFlipped = false, bool ValidLegFlipping = false, bool isUpwards = false)
{
HeadRenderer.sprite = headSprite;
BodyRenderer.sprite = bodySprite;
LegsRenderer.sprite = legSprite;
HeadRenderer.flipX = headFlipped;
BodyRenderer.flipX = bodyFlipped;
if (ValidLegFlipping && LegVarients[legsIndex].isFlippedVarient)
{
LegsRenderer.flipX = !legsFlipped;
LegsMask.transform.localScale = new Vector3((!LegsRenderer.flipX) ? 1 : (-1), 1f, 1f);
if (isUpwards)
{
LegsRenderer.transform.localPosition = new Vector2(-0.05f, -0.9f);
}
else
{
LegsRenderer.transform.localPosition = new Vector2(0.05f, -0.9f);
}
}
else
{
LegsRenderer.flipX = legsFlipped;
LegsMask.transform.localScale = new Vector3((!LegsRenderer.flipX) ? 1 : (-1), 1f, 1f);
LegsRenderer.transform.localPosition = new Vector2(0f, -0.9f);
}
if (HeadRenderer.flipX)
{
HeadMask.transform.localScale = new Vector3(-1f, 1f, 1f);
}
else
{
HeadMask.transform.localScale = new Vector3(1f, 1f, 1f);
}
if (BodyRenderer.flipX)
{
BodyMask.transform.localScale = new Vector3(-1f, 1f, 1f);
}
else
{
BodyMask.transform.localScale = new Vector3(1f, 1f, 1f);
}
}
public void SetVesselToHug()
{
SetVesselPartAnimations(HeadVarients[headIndex].HeadSprite_Hug, BodyVarients[bodyIndex].BodySprite_Hug, LegVarients[legsIndex].LegSprite_Idle_Right, headFlipped: true, bodyFlipped: true, legsFlipped: true);
}
}