Assign GemSprite to BombPrefab

This commit is contained in:
2025-12-17 00:28:22 +08:00
parent de2de35b1b
commit 9f9bf9a3f5
6 changed files with 136 additions and 26 deletions

View File

@@ -2,45 +2,47 @@ using System.Threading;
using Cysharp.Threading.Tasks;
using Enums;
using Services;
using Structs;
using UnityEngine;
using Utils;
namespace Views {
public class GemView : MonoBehaviour {
[SerializeField]
private SpriteRenderer childSpriteRenderer;
private Gem gem;
public Gem Gem => this.gem;
private SpriteRenderer spriteRenderer;
private bool isFalling;
private const float SPAWN_SCALE_FROM = 0f;
private const float SPAWN_SCALE_DURATION = 0.12f;
private CancellationTokenSource spawnScaleCts;
public void Bind(Gem gem, bool isBomb = false) {
public void Bind(Gem gem, GemTypeValues gemvalue, bool isBomb = false) {
this.gem = gem;
this.gameObject.SetActive(true);
SetupGem(isBomb);
SetupGem(isBomb, gemvalue.gemSprite);
PlaySpawnScale();
}
private void SetupGem(bool isBomb) {
this.spriteRenderer ??= GetComponent<SpriteRenderer>();
private void SetupGem(bool isBomb, Sprite gemSprite = null) {
if (!isBomb)
return;
if (isBomb) {
this.spriteRenderer.color = this.gem.MatchColor switch {
GemType.Blue => Color.blue,
GemType.Green => Color.green,
GemType.Red => Color.red,
GemType.Yellow => Color.yellow,
GemType.Purple => Color.magenta,
_ => this.spriteRenderer.color
};
if (this.childSpriteRenderer is null)
return;
if (gemSprite != null) {
this.childSpriteRenderer.enabled = true;
this.childSpriteRenderer.sprite = gemSprite;
} else {
this.spriteRenderer.color = Color.white;
this.childSpriteRenderer.enabled = false;
this.childSpriteRenderer.color = Color.white;
}
}
public void Unbind() {