| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using TMPro;
- public class SpiritSystem : MonoBehaviour
- {
- [Header("玩家UI位置")]
- public Transform p1;
- public Transform p2;
- public Transform p1Orig;
- public Transform p2Orig;
- public Transform p1To;
- public Transform p2To;
- public Transform p1WordOrig;
- public Transform p1WordTo;
- public Transform p2WordOrig;
- public Transform p2WordTo;
- public float uiSpeed;
- [Header("玩家1图标")]
- static public GameObject player1;
- static public Spirits p1Spirits;
- public Image[] player1cards;
- public GameObject choose1;
- private int curCard1;
- static public bool isP1CardChange;
- public GameObject P1icon;
- public TextMeshProUGUI P1times;
- [Header("玩家2图标")]
- static public GameObject player2;
- static public Spirits p2Spirits;
- public Image[] player2cards;
- public GameObject choose2;
- private int curCard2;
- static public bool isP2CardChange;
- public GameObject P2icon;
- public TextMeshProUGUI P2times;
- [Header("英灵图标")]
- public Sprite floatHead;
- public Sprite CookHead;
- public Sprite AssassinHead;
- public Sprite InvisibleHead;
- public Sprite NoneHead;
- public Sprite isChoosing;
- public Sprite isSelected;
- [Header("长按X获得英灵")]
- public float keepTime;
- static public float XbtnKeepTime;
- //ref速度
- private Vector3 re1 = Vector3.right;
- private Vector3 re2 = Vector3.left;
- //ui是否进入离开bool
- static public bool isP1Out = false;
- static public bool isP2Out = false;
- static public bool isP1In = false;
- static public bool isP2In = false;
- //是否选中
- static public bool isSelect1 = false;
- static public bool isSelect2 = false;
- //是否结束变身
- static public bool isEndtran1 = false;
- static public bool isEndtran2 = false;
- //是否按下按钮
- static public bool isXbtnDown1 = false;
- static public bool isXbtnDown2 = false;
- static public bool isBbtnDown1 = false;
- static public bool isBbtnDown2 = false;
- static public int isGainNewSpirit1 = -1;
- static public int isGainNewSpirit2 = -1;
- //当前查看的英灵
- static public GameObject curCheckSpirit1;
- static public GameObject curCheckSpirit2;
- //玩家的spirits组件
- private PlayerController pc1;
- private PlayerController pc2;
- private Spirits s1;
- private Spirits s2;
- //变身中
- private bool isTran1;
- private bool isTran2;
- private bool isChangeUltimateText1;
- private bool isChangeUltimateText2;
- //变身后血量
- static public int tranHp1;
- static public int tranHp2;
- private void Start()
- {
- p1.position = p1Orig.position;
- p2.position = p2Orig.position;
- XbtnKeepTime = keepTime;
- }
- static public void ChangeCheckSpirit(GameObject newSpirit, int id)
- {
- switch (id)
- {
- case 0:
- if (curCheckSpirit2 != newSpirit)
- {
- if (curCheckSpirit1 != null)
- {
- curCheckSpirit1.SetActive(false);
- }
- curCheckSpirit1 = newSpirit;
- curCheckSpirit1.SetActive(true);
- }
- break;
- case 1:
- if (curCheckSpirit1 != newSpirit)
- {
- if (curCheckSpirit2 != null)
- {
- curCheckSpirit2.SetActive(false);
- }
- curCheckSpirit2 = newSpirit;
- curCheckSpirit2.SetActive(true);
- }
- break;
- default:
- break;
- }
- }
- private void GainNewSpirit(int id, int spirit)
- {
- switch (id)
- {
- case 0:
- curCheckSpirit1.transform.parent.gameObject.SetActive(false);
- if (s1 == null)
- {
- pc1 = PlayersInput.instance[0];
- s1 = pc1.GetComponent<Spirits>();
- }
- s1.ownSpirits[s1.hasSpirits] = s1.TranSpirit(spirit);
- Sprite newHead = NoneHead;
- switch (spirit)
- {
- case 0:
- newHead = floatHead;
- break;
- case 1:
- newHead = AssassinHead;
- break;
- case 2:
- newHead = CookHead;
- break;
- case 3:
- newHead = InvisibleHead;
- break;
- default:
- break;
- }
- player1cards[s1.hasSpirits].sprite = newHead;
- s1.hasSpirits++;
- if (s1.hasSpirits == 1)
- {
- s1.currentSpirit = s1.TranSpirit(spirit);
- tranHp1 = s1.hps[0];
- print(tranHp1);
- }
- break;
- case 1:
- curCheckSpirit2.transform.parent.gameObject.SetActive(false);
- if (s2 == null)
- {
- pc2 = PlayersInput.instance[1];
- s2 = pc2.GetComponent<Spirits>();
- }
- s2.ownSpirits[s2.hasSpirits] = s2.TranSpirit(spirit);
- Sprite newHead2 = NoneHead;
- switch (spirit)
- {
- case 0:
- newHead2 = floatHead;
- break;
- case 1:
- newHead2 = AssassinHead;
- break;
- case 2:
- newHead2 = CookHead;
- break;
- case 3:
- newHead2 = InvisibleHead;
- break;
- default:
- break;
- }
- player2cards[s2.hasSpirits].sprite = newHead2;
- s2.hasSpirits++;
- if (s2.hasSpirits == 1)
- {
- s2.currentSpirit = s2.TranSpirit(spirit);
- tranHp2 = s2.hps[0];
- }
- break;
- default:
- break;
- }
- }
- private void EndTranChangeUI(int id)
- {
- switch (id)
- {
- case 0:
- if (s1.hasSpirits > 0)
- {
- s1.hasSpirits--;
- for (int i = curCard1; i < s1.hasSpirits; i++)
- {
- player1cards[i].sprite = player1cards[i + 1].sprite;
- s1.ownSpirits[i] = s1.ownSpirits[i + 1];
- s1.ultimateTimes[i] = s1.ultimateTimes[i + 1];
- s1.hps[i] = s1.hps[i + 1];
- }
- tranHp1 = s1.hps[0];
- player1cards[s1.hasSpirits].sprite = NoneHead;
- s1.ownSpirits[s1.hasSpirits] = Spirits.SpiritType.None;
- s1.currentSpirit = s1.ownSpirits[0];
- choose1.transform.position = player1cards[0].transform.position;
- P1times.gameObject.SetActive(false);
- curCard1 = 0;
- }
- break;
- case 1:
- if (s2.hasSpirits > 0)
- {
- s2.hasSpirits--;
- for (int i = curCard2; i < s2.hasSpirits; i++)
- {
- player2cards[i].sprite = player2cards[i + 1].sprite;
- s2.ownSpirits[i] = s2.ownSpirits[i + 1];
- s2.ultimateTimes[i] = s2.ultimateTimes[i + 1];
- s2.hps[i] = s2.hps[i + 1];
- }
- tranHp2 = s2.hps[0];
- player2cards[s2.hasSpirits].sprite = NoneHead;
- s2.ownSpirits[s2.hasSpirits] = Spirits.SpiritType.None;
- s2.currentSpirit = s2.ownSpirits[0];
- choose2.transform.position = player2cards[0].transform.position;
- P2times.gameObject.SetActive(false);
- curCard2 = 0;
- }
- break;
- default:
- break;
- }
- }
- private void ChangeSpirit(int id)
- {
- switch (id)
- {
- case 0:
- int man = p1Spirits.hasSpirits;
- if (man != 0)
- {
- curCard1 += 1;
- if (curCard1 == man)
- {
- curCard1 = 0;
- }
- choose1.transform.position = player1cards[curCard1].transform.position;
- p1Spirits.currentSpirit = p1Spirits.ownSpirits[curCard1];
- tranHp1 = s1.hps[curCard1];
- }
- break;
- case 1:
- int mann = p2Spirits.hasSpirits;
- if (mann != 0)
- {
- curCard2 += 1;
- if (curCard2 == mann)
- {
- curCard2 = 0;
- }
- choose2.transform.position = player2cards[curCard2].transform.position;
- p2Spirits.currentSpirit = p2Spirits.ownSpirits[curCard2];
- tranHp2 = s2.hps[curCard2];
- }
- break;
- default:
- break;
- }
- }
- private void SelectSpirit(int id)
- {
- switch (id)
- {
- case 0:
- P1icon.transform.localPosition = p1WordTo.localPosition;
- choose1.GetComponent<Image>().sprite = isSelected;
- P1times.text = s1.ultimateTimes[curCard1].ToString();
- P1times.gameObject.SetActive(true);
- isTran1 = true;
- break;
- case 1:
- P2icon.transform.localPosition = p2WordTo.localPosition;
- choose2.GetComponent<Image>().sprite = isSelected;
- P2times.text = s2.ultimateTimes[curCard2].ToString();
- P2times.gameObject.SetActive(true);
- isTran2 = true;
- break;
- default:
- break;
- }
- }
- private void EndTransfigurate(int id)
- {
- switch (id)
- {
- case 0:
- P1icon.transform.localPosition = p1WordOrig.localPosition;
- choose1.GetComponent<Image>().sprite = isChoosing;
- EndTranChangeUI(0);
- isTran1 = false;
- break;
- case 1:
- P2icon.transform.localPosition = p2WordOrig.localPosition;
- choose2.GetComponent<Image>().sprite = isChoosing;
- EndTranChangeUI(1);
- isTran2 = false;
- break;
- default:
- break;
- }
- }
- private void playerUIout(int id)
- {
- switch (id)
- {
- case 0:
- p1.position = Vector3.SmoothDamp(p1.position, p1To.position, ref re1, uiSpeed);
- if (p1To.position.x - p1.position.x <= 0.5f)
- {
- p1.position = p1To.position;
- isP1Out = false;
- }
- break;
- case 1:
- p2.position = Vector3.SmoothDamp(p2.position, p2To.position, ref re2, uiSpeed);
- if (p2.position.x - p2To.position.x <= 0.5f)
- {
- p2.position = p2To.position;
- isP2Out = false;
- }
- break;
- default:
- break;
- }
- }
- private void playerUIin(int id)
- {
- switch (id)
- {
- case 0:
- p1.position = Vector3.SmoothDamp(p1.position, p1Orig.position, ref re2, uiSpeed);
- if (p1.position.x - p1Orig.position.x <= 0.5f)
- {
- p1.position = p1Orig.position;
- isP1In = false;
- }
- break;
- case 1:
- p2.position = Vector3.SmoothDamp(p2.position, p2Orig.position, ref re1, uiSpeed);
- if (p2Orig.position.x - p2.position.x <= 0.5f)
- {
- p2.position = p2Orig.position;
- isP2In = false;
- }
- break;
- default:
- break;
- }
- }
- private void Update()
- {
- if (isP1Out)
- {
- playerUIout(0);
- }
- if (isP2Out)
- {
- playerUIout(1);
- }
- if (isP1In)
- {
- playerUIin(0);
- }
- if (isP2In)
- {
- playerUIin(1);
- }
- if (isP1CardChange)
- {
- isP1CardChange = false;
- ChangeSpirit(0);
- }
- if (isP2CardChange)
- {
- isP2CardChange = false;
- ChangeSpirit(1);
- }
- if (isSelect1)
- {
- isSelect1 = false;
- SelectSpirit(0);
- }
- if (isSelect2)
- {
- isSelect2 = false;
- SelectSpirit(1);
- }
- if (isEndtran1)
- {
- isEndtran1 = false;
- EndTransfigurate(0);
- }
- if (isEndtran2)
- {
- isEndtran2 = false;
- EndTransfigurate(1);
- }
- if (isGainNewSpirit1 != -1)
- {
- GainNewSpirit(0, isGainNewSpirit1);
- isGainNewSpirit1 = -1;
- }
- if (isGainNewSpirit2 != -1)
- {
- GainNewSpirit(1, isGainNewSpirit2);
- isGainNewSpirit2 = -1;
- }
- if (isTran1)
- {
- if (pc1.isUltimate)
- {
- isChangeUltimateText1 = true;
- }
- }
- if (isTran2)
- {
- if (pc2.isUltimate)
- {
- isChangeUltimateText2 = true;
- }
- }
- if (isChangeUltimateText1)
- {
- isChangeUltimateText1 = false;
- P1times.text = (--s1.ultimateTimes[curCard1]).ToString();
- }
- if (isChangeUltimateText2)
- {
- isChangeUltimateText2 = false;
- P2times.text = (--s2.ultimateTimes[curCard2]).ToString();
- }
- }
- }
|