|
|
@@ -74,17 +74,12 @@ public class SpiritSystem : MonoBehaviour
|
|
|
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;
|
|
|
@@ -93,12 +88,7 @@ public class SpiritSystem : MonoBehaviour
|
|
|
//玩家的spirits组件
|
|
|
private PlayerController pc1;
|
|
|
private PlayerController pc2;
|
|
|
- private Spirits s1;
|
|
|
- private Spirits s2;
|
|
|
|
|
|
- //变身后血量
|
|
|
- static public int tranHp1;
|
|
|
- static public int tranHp2;
|
|
|
|
|
|
private void Start()
|
|
|
{
|
|
|
@@ -107,258 +97,137 @@ public class SpiritSystem : MonoBehaviour
|
|
|
XbtnKeepTime = keepTime;
|
|
|
}
|
|
|
|
|
|
- static public void ChangeCheckSpirit(GameObject newSpirit, int id)
|
|
|
+ //拾取一个紫魂统计各可变身次数
|
|
|
+ public void GainNewSpirit(int id, Spirits.SpiritType spirit)
|
|
|
{
|
|
|
switch (id)
|
|
|
{
|
|
|
case 0:
|
|
|
- if (curCheckSpirit2 != newSpirit)
|
|
|
+ if (p1Spirits == null)
|
|
|
{
|
|
|
- if (curCheckSpirit1 != null)
|
|
|
- {
|
|
|
- curCheckSpirit1.SetActive(false);
|
|
|
- }
|
|
|
- curCheckSpirit1 = newSpirit;
|
|
|
- curCheckSpirit1.SetActive(true);
|
|
|
+ pc1 = PlayersInput.instance[0];
|
|
|
+ p1Spirits = pc1.GetComponent<Spirits>();
|
|
|
}
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- if (curCheckSpirit1 != newSpirit)
|
|
|
+ for (int i = 0; i < 3; i++)
|
|
|
{
|
|
|
- if (curCheckSpirit2 != null)
|
|
|
+ if (p1Spirits.ownSpirits[i] == spirit)
|
|
|
{
|
|
|
- curCheckSpirit2.SetActive(false);
|
|
|
+ p1Spirits.ultimateTimes[i] += 1;
|
|
|
+ break;
|
|
|
}
|
|
|
- curCheckSpirit2 = newSpirit;
|
|
|
- curCheckSpirit2.SetActive(true);
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public 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>();
|
|
|
- }
|
|
|
- for(int i = 0;i < 3; i++)
|
|
|
- {
|
|
|
- if (s1.ownSpirits[i] == s1.TranSpirit(spirit))
|
|
|
+ if (i == 2)
|
|
|
{
|
|
|
- s1.ultimateTimes[i] += 1;
|
|
|
- P1nums[i].text = (s1.ultimateTimes[i]).ToString();
|
|
|
- return;
|
|
|
+ for(int j = 0; j < 3; j++)
|
|
|
+ {
|
|
|
+ if(p1Spirits.ultimateTimes[j] == 0)
|
|
|
+ {
|
|
|
+ p1Spirits.ownSpirits[j] = spirit;
|
|
|
+ p1Spirits.ultimateTimes[j] = 1;
|
|
|
+ p1Spirits.hasSpirits += 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- 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.ultimateTimes[s1.hasSpirits] = 1;
|
|
|
- P1nums[s1.hasSpirits].text = (s1.ultimateTimes[s1.hasSpirits]).ToString();
|
|
|
- P1nums[s1.hasSpirits].gameObject.SetActive(true);
|
|
|
- s1.hasSpirits++;
|
|
|
- if (s1.hasSpirits == 1)
|
|
|
- {
|
|
|
- s1.currentSpirit = s1.TranSpirit(spirit);
|
|
|
- tranHp1 = s1.hps[0];
|
|
|
- }
|
|
|
break;
|
|
|
case 1:
|
|
|
- //curCheckSpirit2.transform.parent.gameObject.SetActive(false);
|
|
|
- if (s2 == null)
|
|
|
+ if (p2Spirits == null)
|
|
|
{
|
|
|
pc2 = PlayersInput.instance[1];
|
|
|
- s2 = pc2.GetComponent<Spirits>();
|
|
|
+ p2Spirits = pc2.GetComponent<Spirits>();
|
|
|
}
|
|
|
for (int i = 0; i < 3; i++)
|
|
|
{
|
|
|
- if (s2.ownSpirits[i] == s2.TranSpirit(spirit))
|
|
|
+ if (p2Spirits.ownSpirits[i] == spirit)
|
|
|
{
|
|
|
- s2.ultimateTimes[i] += 1;
|
|
|
- P2nums[i].text = (s2.ultimateTimes[i]).ToString();
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- 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;
|
|
|
+ p2Spirits.ultimateTimes[i] += 1;
|
|
|
break;
|
|
|
- case 3:
|
|
|
- newHead2 = InvisibleHead;
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- player2cards[s2.hasSpirits].sprite = newHead2;
|
|
|
- s2.ultimateTimes[s2.hasSpirits] = 1;
|
|
|
- P2nums[s2.hasSpirits].text = (s2.ultimateTimes[s2.hasSpirits]).ToString();
|
|
|
- P2nums[s2.hasSpirits].gameObject.SetActive(true);
|
|
|
- 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.ultimateTimes[curCard1]==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;
|
|
|
- P1nums[s1.hasSpirits].gameObject.SetActive(false);
|
|
|
- curCard1 = 0;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- P1nums[curCard1].text = s1.ultimateTimes[curCard1].ToString();
|
|
|
- }
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- if (s2.ultimateTimes[curCard2] == 0)
|
|
|
- {
|
|
|
- if (s2.hasSpirits > 0)
|
|
|
+ if (i == 2)
|
|
|
{
|
|
|
- s2.hasSpirits--;
|
|
|
- for (int i = curCard2; i < s2.hasSpirits; i++)
|
|
|
+ for (int j = 0; j < 3; j++)
|
|
|
{
|
|
|
- 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];
|
|
|
+ if (p2Spirits.ultimateTimes[j] == 0)
|
|
|
+ {
|
|
|
+ p2Spirits.ownSpirits[j] = spirit;
|
|
|
+ p2Spirits.ultimateTimes[j] = 1;
|
|
|
+ p2Spirits.hasSpirits += 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- 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;
|
|
|
- P2nums[s2.hasSpirits].gameObject.SetActive(false);
|
|
|
- curCard2 = 0;
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- P2nums[curCard2].text = s2.ultimateTimes[curCard2].ToString();
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- default:
|
|
|
break;
|
|
|
}
|
|
|
+ RefreshPlayerUI();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public void ChangeSpirit(int id, bool chooseLeft)
|
|
|
{
|
|
|
switch (id)
|
|
|
{
|
|
|
case 0:
|
|
|
- int man = p1Spirits.hasSpirits;
|
|
|
- if (man != 0)
|
|
|
+ if (p1Spirits.hasSpirits > 0)
|
|
|
{
|
|
|
- if (chooseLeft)
|
|
|
+ while (true)
|
|
|
{
|
|
|
- curCard1 -= 1;
|
|
|
- if(curCard1 == -1)
|
|
|
+ if (chooseLeft)
|
|
|
{
|
|
|
- curCard1 = man - 1;
|
|
|
+ curCard1 -= 1;
|
|
|
+ if (curCard1 == -1)
|
|
|
+ {
|
|
|
+ curCard1 = 2;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- curCard1 += 1;
|
|
|
- if (curCard1 == man)
|
|
|
+ else
|
|
|
{
|
|
|
- curCard1 = 0;
|
|
|
+ curCard1 += 1;
|
|
|
+ if (curCard1 == 3)
|
|
|
+ {
|
|
|
+ curCard1 = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(p1Spirits.ultimateTimes[curCard1] > 0)
|
|
|
+ {
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
choose1.transform.position = player1cards[curCard1].transform.position;
|
|
|
- p1Spirits.currentSpirit = p1Spirits.ownSpirits[curCard1];
|
|
|
- tranHp1 = s1.hps[curCard1];
|
|
|
+ p1Spirits.nowSpirit = curCard1;
|
|
|
}
|
|
|
break;
|
|
|
case 1:
|
|
|
- int mann = p2Spirits.hasSpirits;
|
|
|
- if (mann != 0)
|
|
|
+ if (p2Spirits.hasSpirits > 0)
|
|
|
{
|
|
|
- if (chooseLeft)
|
|
|
+ while (true)
|
|
|
{
|
|
|
- curCard2 -= 1;
|
|
|
- if (curCard2 == -1)
|
|
|
+ if (chooseLeft)
|
|
|
{
|
|
|
- curCard2 = mann - 1;
|
|
|
+ curCard2 -= 1;
|
|
|
+ if (curCard2 == -1)
|
|
|
+ {
|
|
|
+ curCard2 = 2;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- curCard2 += 1;
|
|
|
- if (curCard2 == mann)
|
|
|
+ else
|
|
|
+ {
|
|
|
+ curCard2 += 1;
|
|
|
+ if (curCard2 == 3)
|
|
|
+ {
|
|
|
+ curCard2 = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (p2Spirits.ultimateTimes[curCard2] > 0)
|
|
|
{
|
|
|
- curCard2 = 0;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
choose2.transform.position = player2cards[curCard2].transform.position;
|
|
|
- p2Spirits.currentSpirit = p2Spirits.ownSpirits[curCard2];
|
|
|
- tranHp2 = s2.hps[curCard2];
|
|
|
+ p2Spirits.nowSpirit = curCard2;
|
|
|
}
|
|
|
break;
|
|
|
- default:
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -374,29 +243,9 @@ public class SpiritSystem : MonoBehaviour
|
|
|
P2icon.transform.localPosition = p2WordTo.localPosition;
|
|
|
choose2.GetComponent<Image>().sprite = isSelected;
|
|
|
break;
|
|
|
- default:
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void EndTransfigurate(int id)
|
|
|
- {
|
|
|
- switch (id)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- P1icon.transform.localPosition = p1WordOrig.localPosition;
|
|
|
- choose1.GetComponent<Image>().sprite = isChoosing;
|
|
|
- EndTranChangeUI(0);
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- P2icon.transform.localPosition = p2WordOrig.localPosition;
|
|
|
- choose2.GetComponent<Image>().sprite = isChoosing;
|
|
|
- EndTranChangeUI(1);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
private void playerUIout(int id)
|
|
|
{
|
|
|
@@ -450,7 +299,6 @@ public class SpiritSystem : MonoBehaviour
|
|
|
|
|
|
private void Update()
|
|
|
{
|
|
|
- //print(p1Spirits.ultimateTimes[curCard1]);
|
|
|
if (isP1Out)
|
|
|
{
|
|
|
playerUIout(0);
|
|
|
@@ -516,27 +364,82 @@ public class SpiritSystem : MonoBehaviour
|
|
|
isSelect2 = false;
|
|
|
SelectSpirit(1);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (isEndtran1)
|
|
|
+ //刷新ui显示
|
|
|
+ public void RefreshPlayerUI()
|
|
|
+ {
|
|
|
+ p1Spirits.hasSpirits = 0;
|
|
|
+ if(p2Spirits != null)
|
|
|
{
|
|
|
- isEndtran1 = false;
|
|
|
- EndTransfigurate(0);
|
|
|
+ p2Spirits.hasSpirits = 0;
|
|
|
}
|
|
|
- if (isEndtran2)
|
|
|
+ for(int i = 0; i < 3; i++)
|
|
|
{
|
|
|
- isEndtran2 = false;
|
|
|
- EndTransfigurate(1);
|
|
|
- }
|
|
|
|
|
|
- if (isGainNewSpirit1 != -1)
|
|
|
+ if(p1Spirits.ultimateTimes[i] > 0)
|
|
|
+ {
|
|
|
+ if (!P1nums[i].gameObject.activeSelf)
|
|
|
+ {
|
|
|
+ P1nums[i].gameObject.SetActive(true);
|
|
|
+ }
|
|
|
+ P1nums[i].text = p1Spirits.ultimateTimes[i].ToString();
|
|
|
+ if (p2Spirits != null)
|
|
|
+ {
|
|
|
+ if (!P2nums[i].gameObject.activeSelf)
|
|
|
+ {
|
|
|
+ P2nums[i].gameObject.SetActive(true);
|
|
|
+ }
|
|
|
+ P2nums[i].text = p2Spirits.ultimateTimes[i].ToString();
|
|
|
+ p2Spirits.hasSpirits += 1;
|
|
|
+ }
|
|
|
+ p1Spirits.hasSpirits += 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ P1nums[i].gameObject.SetActive(false);
|
|
|
+ p1Spirits.ownSpirits[i] = Spirits.SpiritType.None;
|
|
|
+ P2nums[i].gameObject.SetActive(false);
|
|
|
+ if (p2Spirits != null)
|
|
|
+ {
|
|
|
+ p2Spirits.ownSpirits[i] = Spirits.SpiritType.None;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ player1cards[i].GetComponent<Image>().sprite = SpiritTypeToSprite(p1Spirits.ownSpirits[i]);
|
|
|
+ if(p2Spirits != null)
|
|
|
+ {
|
|
|
+ player2cards[i].GetComponent<Image>().sprite = SpiritTypeToSprite(p2Spirits.ownSpirits[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(p1Spirits.ultimateTimes[p1Spirits.nowSpirit] == 0)
|
|
|
{
|
|
|
- GainNewSpirit(0, isGainNewSpirit1);
|
|
|
- isGainNewSpirit1 = -1;
|
|
|
+ if(p2Spirits != null)
|
|
|
+ {
|
|
|
+ ChangeSpirit(1, true);
|
|
|
+ }
|
|
|
+ ChangeSpirit(0, true);
|
|
|
}
|
|
|
- if (isGainNewSpirit2 != -1)
|
|
|
+ }
|
|
|
+
|
|
|
+ //SpiritType转图片
|
|
|
+ public Sprite SpiritTypeToSprite(Spirits.SpiritType spirit)
|
|
|
+ {
|
|
|
+ switch (spirit)
|
|
|
{
|
|
|
- GainNewSpirit(1, isGainNewSpirit2);
|
|
|
- isGainNewSpirit2 = -1;
|
|
|
+ case Spirits.SpiritType.Float:
|
|
|
+ return floatHead;
|
|
|
+ case Spirits.SpiritType.Cook:
|
|
|
+ return CookHead;
|
|
|
+ case Spirits.SpiritType.Assassin:
|
|
|
+ return AssassinHead;
|
|
|
+ case Spirits.SpiritType.Invisible:
|
|
|
+ return InvisibleHead;
|
|
|
+ case Spirits.SpiritType.None:
|
|
|
+ return NoneHead;
|
|
|
+ default:
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|