53 lines
1.7 KiB
C#
Raw Permalink Normal View History

2025-11-20 02:23:07 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
2025-11-21 20:16:36 +08:00
using System.Linq;
using DG.Tweening;
2025-11-20 02:23:07 +08:00
using UnityEngine;
2025-12-01 17:10:33 +08:00
using UnityEngine.UI;
2025-11-20 02:23:07 +08:00
public class Character : MonoBehaviour
{
2025-11-20 14:43:50 +08:00
[SerializeField] private int ID;
2025-12-01 14:22:40 +08:00
[SerializeField] public List<GameObject> ownedCardPrefabList = new();
2025-12-01 17:10:33 +08:00
[SerializeField] private int maxHp = 10;
2025-11-20 14:43:50 +08:00
2025-12-01 14:22:40 +08:00
// ============== private =================
2025-12-01 17:10:33 +08:00
private int hp;
private Canvas canvas;
private Image hp_fill;
2025-12-01 14:22:40 +08:00
private Camera main_camera;
private readonly List<Card> owned_card_list = new();
public List<Card> setup_character(int id, Transform card_container, Camera camera1, bool isFriend)
2025-11-21 02:12:50 +08:00
{
2025-11-21 20:16:36 +08:00
ID = id;
2025-12-01 17:10:33 +08:00
hp = maxHp;
2025-12-01 14:22:40 +08:00
main_camera = camera1;
2025-12-01 17:10:33 +08:00
canvas = transform.Find("Canvas").GetComponent<Canvas>();
hp_fill = canvas.transform.Find("hp/hpFill").GetComponent<Image>();
hp_fill.fillAmount = (float)hp / maxHp;
Transform container = card_container.Find("CardContainer");
2025-12-01 14:22:40 +08:00
if (isFriend) setup_character_card(container);
return owned_card_list;
2025-11-23 02:03:31 +08:00
}
2025-12-01 17:10:33 +08:00
public void take_damage(int damage)
{
hp -= damage;
hp_fill.fillAmount = (float)hp / maxHp;
}
2025-12-01 14:22:40 +08:00
private void setup_character_card(Transform card_container)
2025-11-23 02:03:31 +08:00
{
2025-12-01 14:22:40 +08:00
for (int i = 0; i < ownedCardPrefabList.Count; i++)
2025-11-21 20:16:36 +08:00
{
2025-12-01 14:22:40 +08:00
GameObject _card = Instantiate<GameObject>(ownedCardPrefabList[i],
transform.position, Quaternion.identity, parent: card_container);
int cardID = ID + i + 1;
Card card_component = _card.GetComponent<Card>();
owned_card_list.Add(card_component);
card_component.setup_card(cardID, main_camera);
2025-11-21 20:16:36 +08:00
}
2025-11-21 02:12:50 +08:00
}
2025-11-20 02:23:07 +08:00
}