| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674 |
- using Photon.Pun;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- using UnityEngine.UI;
- public class GManager : MonoBehaviourPun
- {
- [Header("あなた")]
- public Player You;
- [Header("対戦相手")]
- public Player Opponent;
- [Header("CardSourceプレハブ")]
- public CardSource CardPrefab;
- [Header("場のポケモンカードプレハブ")]
- public FieldPermanentCard fieldCardPrefab;
- [Header("手札のカードプレハブ")]
- public HandCard handCardPrefab;
- [Header("読み込み中オブジェクト")]
- public LoadingObject LoadingObject;
- [Header("コマンド選択パネル")]
- public SelectCommandPanel selectCommandPanel;
- [Header("戻るボタン")]
- public SelectCommand BackButton;
- [Header("結果表示オブジェクト")]
- public ResultObject resultObject;
- [Header("メッセージテキスト")]
- public CommandText commandText;
- [Header("ターンプレイヤー表示")]
- public ShowTurnPlayerObject showTurnPlayerObject;
- [Header("フェイズ通知")]
- public ShowPhaseNotificationObject showPhaseNotificationObject;
- [Header("キャンバス")]
- public Canvas canvas;
- [Header("キャンバス2")]
- public Canvas canvas2;
- [Header("カード詳細")]
- public CardDetail cardDetail;
- [Header("パーマネント詳細")]
- public PermanentDetail pokemonDetail;
- [Header("カード選択パネル")]
- public SelectCardPanel selectCardPanel;
- [Header("カード確認パネル")]
- public CheckCardPanel checkCardPanel;
- [Header("次のフェイズに進むボタン")]
- public NextPhaseButton nextPhaseButton;
- [Header("設定パネル")]
- public OptionPanel optionPanel;
- [Header("ターゲット矢印プレハブ")]
- public TargetArrow targetArrowPrefab;
- [Header("ターゲット矢印親")]
- public Transform targetArrowParent;
- [Header("Camera")]
- public Camera camara;
- [Header("StartBattleSE")]
- public AudioClip StartBattleSE;
- [Header("自動処理チェック")]
- public AutoProcessing autoProcessing;
- [Header("プレイログ")]
- public PlayLog playLog;
- [Header("メモリー")]
- public MemoryObject memoryObject;
- [Header("背景")]
- public Image BackgroundImage;
- [Header("背景")]
- public SpriteRenderer BackgroundSpriteRenderer;
- [Header("攻撃処理")]
- public AttackProcess attackProcess;
- [Header("ジョグレス選択")]
- public SelectJogressEffect selectJogressEffect;
- public SelectDNACondition selectDNACondition;
- [Header("burst evolution selection")]
- public SelectBurstDigivolutionEffect selectBurstDigivolutionEffect;
- [Header("app fusion selection")]
- public SelectAppFusionEffect selectAppFusionEffect;
- [Header("自動処理チェック(割り込み処理)")]
- public AutoProcessing autoProcessing_CutIn;
- [Header("ユーザー選択")]
- public UserSelectionManager userSelectionManager;
- [Header("選択可能なものだけ表示")]
- public HideCannotSelectObject hideCannotSelectObject;
- [Header("サイドバー")]
- public SideBar sideBar;
- [Header("UseSkillSE")]
- public AudioClip UseSkillSE;
- [Header("サイド取得SE")]
- public AudioClip GetSideSE;
- [Header("DeleteHandSE")]
- public AudioClip DeleteHandSE;
- [Header("エネルギー追加SE")]
- public AudioClip AddEnergySE;
- [Header("ShowPlayCardSE")]
- public AudioClip ShowPlayCardSE;
- [Header("ポケモンプレイ時SE")]
- public AudioClip PlayPokemonSE;
- [Header("ShuffleSE")]
- public AudioClip ShuffleSE;
- [Header("DrawSE")]
- public AudioClip DrawSE;
- [Header("TargetArrowSE")]
- public AudioClip TargetArrowSE;
- [Header("MoveSE")]
- public AudioClip MoveSE;
- [Header("気絶SE")]
- public AudioClip KnockOutSE;
- [Header("ダメージSE")]
- public AudioClip DamageSE;
- [Header("コイントスSE")]
- public AudioClip CointTossSE;
- [Header("回復SE")]
- public AudioClip HealSE;
- [Header("毒SE")]
- public AudioClip PoisonSE;
- [Header("火傷SE")]
- public AudioClip BurnedSE;
- [Header("WinSE")]
- public AudioClip WinSE;
- [Header("LoseSE")]
- public AudioClip LoseSE;
- [Header("DecisionSE")]
- [SerializeField] AudioClip DecisionSE;
- [Header("CancelSE")]
- [SerializeField] AudioClip CancelSE;
- [Header("BGM")]
- public List<AudioClip> bgms;
- [Header("BGMObject")]
- public BGMObject BattleBGM;
- [Header("オートモード")]
- public bool isAuto;
- [Header("進化演出")]
- public EvolutionEffectObject EvolutionEffectObject;
- [Header("ジョグレス進化演出")]
- public JogressEffectObject jogressEffectObject;
- [Header("デジクロス演出")]
- public DigiXrosEffectObject digiXrosEffectObject;
- [Header("バースト進化演出")]
- public BurstEffectObject burstEffectObject;
- [Header("Background Particle effects")]
- [SerializeField] List<ParticleSystem> _backgroundParticles = new List<ParticleSystem>();
- [Header("Photon wait controller")]
- public PhotonWaitController photonWaitController;
- [Header("Gameobjects closed when ending game")]
- public List<GameObject> CloseWhenEndingGameObjects = new List<GameObject>();
- //Turn progression management state machine
- public TurnStateMachine turnStateMachine { get; set; }
- public static GManager instance = null;
- public bool IsAI { get; private set; } = false;
- public int CardIndex { get; set; } = 0;
- #region Events
- //Cards flipped
- public static Action OnReverseOpponentsCardsChanged;
- public static Action OnCardFlippedChanged;
- public static Action<Player> OnSecurityStackChanged;
-
- #endregion
- private async void Awake()
- {
- //return;
- if (Opening.instance != null)
- {
- if (Opening.instance.OpeningBGM != null)
- {
- Opening.instance.OpeningBGM.StopPlayBGM();
- }
- }
- instance = this;
- StartCoroutine(AwakeCoroutine());
- }
- IEnumerator AwakeCoroutine()
- {
- #if UNITY_EDITOR
- #endif
- if (!PhotonNetwork.IsConnected)
- {
- IsAI = true;
- }
- if (ContinuousController.instance != null)
- {
- if (ContinuousController.instance.isAI)
- {
- IsAI = true;
- }
- }
- if (!IsAI)
- {
- isAuto = false;
- }
- turnStateMachine = gameObject.AddComponent<TurnStateMachine>();
- GetComponent<Effects>().Init();
- playLog.Init();
- hideCannotSelectObject.Init();
- ChangeBackground();
- yield return StartCoroutine(Init());
- StartCoroutine(turnStateMachine.Init());
- StartCoroutine(CheckDisconnect());
- if (Opening.instance != null)
- {
- Opening.instance.openingObject.SetActive(false);
- }
- Debug.Log("Battle Initialization");
- yield return new WaitWhile(() => ContinuousController.instance == null);
- ContinuousController.instance.CanSetRandom = true;
- }
- protected virtual void OnDestroy()
- {
- if (instance == this)
- {
- instance = null;
- }
- }
- public void PlayDecisionSE()
- {
- ContinuousController.instance.PlaySE(DecisionSE);
- }
- public void PlayCancelSE()
- {
- ContinuousController.instance.PlaySE(CancelSE);
- }
- public async void ChangeBackground()
- {
- Sprite backgroundSprite = await StreamingAssetsUtility.GetSprite("Background_battle");
- if (backgroundSprite != null)
- {
- BackgroundImage.sprite = backgroundSprite;
- BackgroundSpriteRenderer.sprite = backgroundSprite;
- BackgroundImage.gameObject.SetActive(true);
- BackgroundSpriteRenderer.transform.localPosition = new Vector3(-134, BackgroundSpriteRenderer.transform.localPosition.y, -77f);
- BackgroundSpriteRenderer.gameObject.SetActive(true);
- }
- else
- {
- BackgroundImage.gameObject.SetActive(false);
- BackgroundSpriteRenderer.gameObject.SetActive(false);
- }
- }
- IEnumerator CheckDisconnect()
- {
- if (IsAI)
- {
- yield break;
- }
- yield return new WaitWhile(() => turnStateMachine == null);
- yield return new WaitForSeconds(5f);
- while (true)
- {
- if (!PhotonNetwork.IsConnected)
- {
- break;
- }
- else
- {
- if (!PhotonNetwork.InRoom)
- {
- break;
- }
- else
- {
- if (PhotonNetwork.CurrentRoom != null)
- {
- if (PhotonNetwork.PlayerList.Length < 2)
- {
- break;
- }
- }
- }
- }
- yield return null;
- }
- if (!turnStateMachine.endGame)
- {
- turnStateMachine.EndGame(null, false);
- }
- }
- public IEnumerator Init()
- {
- yield return StartCoroutine(LoadingObject.StartLoading("Now Loading"));
- selectCommandPanel.Off();
- BackButton.CloseSelectCommandButton();
- resultObject.Init();
- commandText.Init();
- sideBar.Init();
- showTurnPlayerObject.Init();
- showPhaseNotificationObject.Init();
- OffTargetArrow();
- cardDetail.CloseCardDetail();
- pokemonDetail.CloseUnitDetail();
- selectCardPanel.CloseSelectCardPanel();
- yield return StartCoroutine(checkCardPanel.CloseSelectCardPanelCoroutine());
- optionPanel.Init();
- EvolutionEffectObject.Init();
- jogressEffectObject.Init();
- digiXrosEffectObject.Init();
- burstEffectObject.Init();
- }
- public void ReturnToTitle()
- {
- ContinuousController.instance.EndBattle();
- }
- public void ReportBug()
- {
- Application.OpenURL("https://forms.gle/GhZgGVJS1qLeUMcG8");
- }
- public void OnClickSurrenderButton()
- {
- if (turnStateMachine != null)
- {
- if (turnStateMachine.endGame)
- {
- return;
- }
- turnStateMachine.OnClickSurrenderButton();
- }
- }
- public TargetArrow CreateTargetArrow()
- {
- TargetArrow targetArrow = Instantiate(targetArrowPrefab, targetArrowParent);
- return targetArrow;
- }
- public Coroutine OnTargetArrow(Vector3 InitialPosition, Vector3 targetPosition, FieldPermanentCard StartFieldUnitCard, FieldPermanentCard EndFieldUnitCard)
- {
- TargetArrow targetArrow = CreateTargetArrow();
- return targetArrow.OnTargetArrow(InitialPosition, targetPosition, StartFieldUnitCard, EndFieldUnitCard);
- }
- public void OffTargetArrow()
- {
- if (targetArrowParent.childCount > 0)
- {
- if (targetArrowParent.GetChild(targetArrowParent.childCount - 1).GetComponent<TargetArrow>() != null)
- {
- targetArrowParent.GetChild(targetArrowParent.childCount - 1).GetComponent<TargetArrow>().Destroyed = true;
- }
- Destroy(targetArrowParent.GetChild(targetArrowParent.childCount - 1).gameObject);
- }
- }
- void Update()
- {
- if (ContinuousController.instance != null)
- {
- foreach (ParticleSystem particleSystem in _backgroundParticles)
- {
- if (particleSystem != null)
- {
- particleSystem.gameObject.SetActive(ContinuousController.instance.showBackgroundParticle);
- }
- }
- }
- AllowAlphaInputs();
- }
- void AllowAlphaInputs()
- {
- if (turnStateMachine == null)
- return;
-
- if (Application.version.Split(".").Count() < 4)
- return;
- //Draw a card
- if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.D))
- {
- photonView.RPC("DrawCardRPC", RpcTarget.Others);
- StartCoroutine(DrawCard(You));
- }
- //Trash a card
- if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.T))
- {
- photonView.RPC("TrashCardRPC", RpcTarget.Others);
- StartCoroutine(TrashCard(You));
- }
- //Top deck a card
- if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.L))
- {
- photonView.RPC("TopDeckCardRPC", RpcTarget.Others);
- StartCoroutine(TopDeckCard(You));
- }
- //Place Top Security
- if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.R))
- {
- bool keyInput = Input.GetKeyDown(KeyCode.LeftShift);
- photonView.RPC("PlaceInSecurityRPC", RpcTarget.Others, keyInput);
- StartCoroutine(PlaceInSecurity(You, keyInput));
- }
- //Gain Memory
- if(Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.Equals))
- {
- photonView.RPC("AlterMemoryRPC", RpcTarget.Others, -1);
- StartCoroutine(AlterMemory(You, 1));
- }
- //Lose Memory
- if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.Minus))
- {
- photonView.RPC("AlterMemoryRPC", RpcTarget.Others, 1);
- StartCoroutine(AlterMemory(You, -1));
- }
-
- }
- [PunRPC]
- public void DrawCardRPC()
- {
- StartCoroutine(DrawCard(Opponent));
- }
- [PunRPC]
- public void TrashCardRPC()
- {
- StartCoroutine(TrashCard(Opponent));
- }
- [PunRPC]
- public void TopDeckCardRPC()
- {
- StartCoroutine(TopDeckCard(Opponent));
- }
- [PunRPC]
- public void PlaceInSecurityRPC(bool keyInput)
- {
- StartCoroutine(PlaceInSecurity(Opponent, keyInput));
- }
- [PunRPC]
- public void AlterMemoryRPC(int value)
- {
- StartCoroutine(AlterMemory(Opponent,value));
- }
- public IEnumerator DrawCard(Player _player)
- {
- yield return StartCoroutine(new DrawClass(_player, 1, null).Draw());
- yield return StartCoroutine(turnStateMachine.SetMainPhase());
- }
- IEnumerator AlterMemory(Player _player, int value)
- {
- yield return StartCoroutine(You.AddMemory(value, null));
- yield return StartCoroutine(turnStateMachine.SetMainPhase());
- yield return StartCoroutine(autoProcessing.EndTurnCheck());
- }
- IEnumerator TrashCard(Player _player)
- {
- SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
- selectHandEffect.SetUp(
- selectPlayer: _player,
- canTargetCondition: (CardSource) => true,
- canTargetCondition_ByPreSelecetedList: null,
- canEndSelectCondition: null,
- maxCount: _player.HandCards.Count,
- canNoSelect: true,
- canEndNotMax: true,
- isShowOpponent: true,
- selectCardCoroutine: null,
- afterSelectCardCoroutine: null,
- mode: SelectHandEffect.Mode.Discard,
- cardEffect: null);
- yield return StartCoroutine(selectHandEffect.Activate());
- yield return StartCoroutine(turnStateMachine.SetMainPhase());
- }
- IEnumerator TopDeckCard(Player _player)
- {
- SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
- selectHandEffect.SetUp(
- selectPlayer: _player,
- canTargetCondition: (CardSource) => true,
- canTargetCondition_ByPreSelecetedList: null,
- canEndSelectCondition: null,
- maxCount: _player.HandCards.Count,
- canNoSelect: true,
- canEndNotMax: true,
- isShowOpponent: true,
- selectCardCoroutine: null,
- afterSelectCardCoroutine: null,
- mode: SelectHandEffect.Mode.PutLibraryTop,
- cardEffect: null);
- yield return StartCoroutine(selectHandEffect.Activate());
- yield return StartCoroutine(turnStateMachine.SetMainPhase());
- }
- IEnumerator PlaceInSecurity(Player _player, bool placeFaceup)
- {
- CardSource selectedSource = null;
- SelectHandEffect selectHandEffect = GManager.instance.GetComponent<SelectHandEffect>();
- selectHandEffect.SetUp(
- selectPlayer: _player,
- canTargetCondition: (CardSource) => true,
- canTargetCondition_ByPreSelecetedList: null,
- canEndSelectCondition: null,
- maxCount: 1,
- canNoSelect: true,
- canEndNotMax: false,
- isShowOpponent: true,
- selectCardCoroutine: CardSelectCoroutine,
- afterSelectCardCoroutine: null,
- mode: SelectHandEffect.Mode.Custom,
- cardEffect: null);
- yield return StartCoroutine(selectHandEffect.Activate());
- IEnumerator CardSelectCoroutine(CardSource source)
- {
- if (source != null)
- selectedSource = source;
- yield return null;
- }
- if (selectedSource != null)
- {
- // Place this card face up as the top security card
- yield return StartCoroutine(CardObjectController.AddSecurityCard(selectedSource, toTop: true, faceUp: placeFaceup));
- yield return StartCoroutine(GetComponent<Effects>().CreateRecoveryEffect(selectedSource.Owner));
- yield return StartCoroutine(new IAddSecurity(selectedSource.Owner).AddSecurity());
- }
- yield return StartCoroutine(turnStateMachine.SetMainPhase());
- }
- }
|