56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
using UnityEngine;
|
|
using Code.Saves;
|
|
|
|
namespace Code.Gameplay.Visuals
|
|
{
|
|
public class VisualApplyer : MonoBehaviour
|
|
{
|
|
public enum ObjectType { Player, Platform, Bonus }
|
|
[SerializeField] private ObjectType type;
|
|
|
|
[SerializeField] private SkinnedMeshRenderer characterRenderer;
|
|
[SerializeField] private Transform hatContainer;
|
|
|
|
private static readonly int ColorId = Shader.PropertyToID("_BaseColor");
|
|
|
|
private void Start() => Apply();
|
|
|
|
public void Apply()
|
|
{
|
|
var data = SaveManager.Load();
|
|
|
|
switch (type)
|
|
{
|
|
case ObjectType.Player:
|
|
ApplyPlayer(data);
|
|
break;
|
|
case ObjectType.Platform:
|
|
GetComponent<Renderer>().material.SetColor(ColorId, data.platformColor);
|
|
break;
|
|
case ObjectType.Bonus:
|
|
GetComponent<Renderer>().material.SetColor(ColorId, data.bonusColor);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void ApplyPlayer(GameData data)
|
|
{
|
|
if (characterRenderer == null) return;
|
|
|
|
var bodymats = Resources.LoadAll<Material>("MaterialsCharacter/Body");
|
|
var facemats = Resources.LoadAll<Material>("MaterialsCharacter/Face");
|
|
|
|
var currentMats = characterRenderer.sharedMaterials;
|
|
currentMats[0] = bodymats[data.bodyMaterialIndex];
|
|
currentMats[1] = facemats[data.faceMaterialIndex];
|
|
characterRenderer.sharedMaterials = currentMats;
|
|
|
|
foreach (Transform child in hatContainer) Destroy(child.gameObject);
|
|
var hats = Resources.LoadAll<GameObject>("Prefabs/Character/Hats");
|
|
if (data.hatIndex > 0 && data.hatIndex <= hats.Length)
|
|
{
|
|
Instantiate(hats[data.hatIndex - 1], hatContainer);
|
|
}
|
|
}
|
|
}
|
|
} |