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
|
|
|
}
|