Files
Continentis/Assets/Scripts/MainGame/Character/CharacterView/CombatCharacterViewBase.cs

78 lines
2.6 KiB
C#
Raw Normal View History

2025-12-10 18:22:26 -05:00
using System;
2025-10-23 00:49:44 -04:00
using System.Collections.Generic;
2025-12-10 18:22:26 -05:00
using AnimatorPlus;
2025-10-03 00:02:43 -04:00
using Continentis.MainGame.UI;
2025-12-10 18:22:26 -05:00
using SLSFramework.General;
2025-10-03 00:02:43 -04:00
using UnityEngine;
namespace Continentis.MainGame.Character
{
2025-12-10 18:22:26 -05:00
public partial class CombatCharacterViewBase : MonoBehaviour
2025-10-03 00:02:43 -04:00
{
public CharacterBase character;
2025-10-23 00:49:44 -04:00
public GameObject mainView;
public Animator animator;
2025-12-10 18:22:26 -05:00
public AnimatorPlus2D animatorPlus2D;
public SerializableDictionary<string, AnimationClip> animations;
2025-10-23 00:49:44 -04:00
2025-10-03 00:02:43 -04:00
public Collider selector;
2025-10-23 00:49:44 -04:00
public Transform numbersPivot;
public Transform textsPivot;
2025-10-03 00:02:43 -04:00
public Transform hudPivot;
2025-10-23 00:49:44 -04:00
public Transform centerPoint => hudPivot;
2025-10-03 00:02:43 -04:00
public HUDContainer hudContainer;
2025-10-23 00:49:44 -04:00
2025-12-10 18:22:26 -05:00
public List<SpriteRenderer> spriteRenderers;
public List<Material> materials;
public void Initialize(CharacterBase character)
2025-10-23 00:49:44 -04:00
{
2025-12-10 18:22:26 -05:00
this.character = character;
2025-10-23 00:49:44 -04:00
2025-12-10 18:22:26 -05:00
spriteRenderers = new List<SpriteRenderer>(mainView.GetComponentsInChildren<SpriteRenderer>());
materials = new List<Material>();
foreach (SpriteRenderer sr in spriteRenderers)
2025-10-23 00:49:44 -04:00
{
2025-12-10 18:22:26 -05:00
materials.Add(sr.material);
2025-10-23 00:49:44 -04:00
}
2025-12-10 18:22:26 -05:00
SetOutline(false);
animations = new SerializableDictionary<string, AnimationClip>();
2025-10-23 00:49:44 -04:00
2025-12-10 18:22:26 -05:00
foreach (KeyValuePair<string, AnimationClip> anim in character.data.animations)
{
animations.Add(anim.Key, anim.Value);
}
if (animations.TryGetValue("Idle", out AnimationClip idle))
{
animatorPlus2D.defaultIdleClip = idle;
animatorPlus2D.Initialize();
}
else
{
throw new Exception($"No Idle animation found for character {character.data.displayName}");
}
}
}
public partial class CombatCharacterViewBase
{
public void SetOutline(bool isEnabled)
{
if (isEnabled)
{
Color fractionColor = MainGameManager.Instance.basePrefabs.fractionColors[character.fraction];
materials.ForEach(material => material.SetFloat("_InnerOutlineFade", 1));
materials.ForEach(material => material.SetColor("_InnerOutlineColor", fractionColor * 2));
}
else
2025-10-23 00:49:44 -04:00
{
2025-12-10 18:22:26 -05:00
materials.ForEach(material => material.SetFloat("_InnerOutlineFade", 0));
materials.ForEach(material => material.SetColor("_InnerOutlineColor", Color.white));
2025-10-23 00:49:44 -04:00
}
}
2025-10-03 00:02:43 -04:00
}
}