OptionalSkill.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Photon;
  5. using Photon.Pun;
  6. using System.Linq;
  7. using System;
  8. public class OptionalSkill : MonoBehaviourPunCallbacks
  9. {
  10. public string waitingText { get; set; } = "The opponent is considering whether to use the effect.";
  11. bool _endSelect = false;
  12. bool _useOptional = false;
  13. public IEnumerator SelectOptional(ICardEffect cardEffect)
  14. {
  15. List<string> _YesNoTexts = new List<string>() { "Use", "Not use" };
  16. _endSelect = false;
  17. _useOptional = false;
  18. string _Message = $"Will you use \"{cardEffect.EffectName}\"?";
  19. yield return GManager.instance.photonWaitController.StartWait("SelectOptional");
  20. #region ƒgƒ‰ƒbƒVƒ…‚̃J[ƒh‚ð•\ަ
  21. if (cardEffect != null)
  22. {
  23. if (cardEffect.EffectSourceCard != null)
  24. {
  25. if (cardEffect.EffectSourceCard.Owner.TrashCards.Contains(cardEffect.EffectSourceCard) || cardEffect.EffectSourceCard.Owner.LostCards.Contains(cardEffect.EffectSourceCard))
  26. {
  27. if (cardEffect.EffectSourceCard.Owner.TrashHandCard != null)
  28. {
  29. if (!cardEffect.EffectSourceCard.Owner.TrashHandCard.gameObject.activeSelf)
  30. {
  31. cardEffect.EffectSourceCard.Owner.TrashHandCard.gameObject.SetActive(true);
  32. cardEffect.EffectSourceCard.Owner.TrashHandCard.SetUpHandCard(cardEffect.EffectSourceCard);
  33. cardEffect.EffectSourceCard.Owner.TrashHandCard.SetUpHandCardImage();
  34. cardEffect.EffectSourceCard.Owner.TrashHandCard.OnOutline();
  35. cardEffect.EffectSourceCard.Owner.TrashHandCard.SetBlueOutline();
  36. cardEffect.EffectSourceCard.Owner.TrashHandCard.transform.localScale = new Vector3(1.4f, 1.4f, 1.4f);
  37. }
  38. }
  39. }
  40. }
  41. }
  42. #endregion
  43. if (cardEffect.EffectSourceCard.Owner.isYou)
  44. {
  45. Permanent permanent = cardEffect.EffectSourceCard.PermanentOfThisCard();
  46. if (permanent != null)
  47. {
  48. if (permanent.ShowingPermanentCard != null)
  49. {
  50. GManager.instance.hideCannotSelectObject.SetUpHideCannotSelectObject(new List<FieldPermanentCard>() { permanent.ShowingPermanentCard }, false);
  51. }
  52. }
  53. GManager.instance.commandText.OpenCommandText(_Message);
  54. List<Command_SelectCommand> commands = new List<Command_SelectCommand>()
  55. {
  56. new Command_SelectCommand(_YesNoTexts[0] ,() => photonView.RPC("SetUseOptional",RpcTarget.All,true),0),
  57. };
  58. GManager.instance.BackButton.OpenSelectCommandButton(_YesNoTexts[1], () => { photonView.RPC("SetUseOptional", RpcTarget.All, false); }, 0);
  59. GManager.instance.selectCommandPanel.SetUpCommandButton(commands);
  60. }
  61. else
  62. {
  63. bool ShowOpponentMessage = cardEffect.EffectDiscription.Contains("[Hand]") && GManager.instance.autoProcessing.executingMultipleSkills != null && !GManager.instance.autoProcessing.executingMultipleSkills.IsOnlyHandEffectStacked;
  64. if (ShowOpponentMessage)
  65. {
  66. GManager.instance.commandText.OpenCommandText(waitingText);
  67. }
  68. if (GManager.instance.IsAI)
  69. {
  70. _endSelect = true;
  71. _useOptional = RandomUtility.IsSucceedProbability(0.9f);
  72. }
  73. }
  74. yield return new WaitWhile(() => !_endSelect);
  75. _endSelect = false;
  76. GManager.instance.selectCommandPanel.Off();
  77. GManager.instance.BackButton.CloseSelectCommandButton();
  78. GManager.instance.hideCannotSelectObject.Close();
  79. GManager.instance.commandText.CloseCommandText();
  80. yield return new WaitWhile(() => GManager.instance.commandText.gameObject.activeSelf);
  81. cardEffect.SetUseOptional(_useOptional);
  82. cardEffect.EffectSourceCard.Owner.TrashHandCard.gameObject.SetActive(false);
  83. }
  84. [PunRPC]
  85. public void SetUseOptional(bool useOptional)
  86. {
  87. _useOptional = useOptional;
  88. _endSelect = true;
  89. }
  90. }