/// <summary> /// Send move by Photon event (Photon turn extention). /// </summary> /// <param name="Action">Move action type.</param> /// <param name="PawnID">Moving pawnID</param> /// <param name="EffectName">Card effect class name</param> /// <param name="TargetPawnID">Move target pawn ID</param> /// <param name="TargetPosition">Target position</param> /// <param name="TargetRotation">Target rotation index (0-5)</param> /// <param name="HandIndex">Card hand index</param> /// <param name="SendBackEvent">Process this move locally (false by default)</param> public void GameplaySendMove( GamePlayActionStack.ActionTypeEnum Action, int PawnID, string EffectName, int TargetPawnID, int TargetPosition, int TargetRotation, int HandIndex, bool SendBackEvent = false) { GameplayPlayerMove move = new GameplayPlayerMove(); move.Action = Action; move.PawnID = PawnID; move.EffectName = EffectName; move.TargetPawnID = TargetPawnID; move.TargetPosition = TargetPosition; move.TargetRotation = TargetRotation; move.HandIndex = HandIndex; Debug.Log("[SEND EVENT]:" + JsonUtility.ToJson(move).ToString()); this.turnManager.SendMove(JsonUtility.ToJson(move), false, SendBackEvent); }
public void OnPlayerMove(PhotonPlayer sender, int turn, object move) { GameplayPlayerMove gPlayMove = JsonUtility.FromJson <GameplayPlayerMove> (move.ToString()); Debug.Log("[RECEIVE EVENT]:" + move.ToString()); if (gPlay.skipAnimations) { gPlay.RefreshPawnsHealth(); } if ((gPlay.skipAnimations) && (turn == this.turnManager.Turn)) { gPlay.skipAnimations = false; } if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.firstPlayer) { if (sender != PhotonNetwork.player) { gPlay.SetAsSecondPlayer(); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.setHero) { if (sender == PhotonNetwork.player) { gPlay.SetMyHero(gPlayMove.EffectName); //hacky way, one string in struckture } else { gPlay.SetEnemyHero(gPlayMove.EffectName); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.signalReady) { if (sender != PhotonNetwork.player) { gPlay.EnemyIsReady = true; gPlay.MatchStart(); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.redraw) { if (sender != PhotonNetwork.player) { gPlay.EnemyRemoveCardFromHand(gPlayMove.HandIndex); gPlay.EnemyCardDraw(); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.draw) { if (sender != PhotonNetwork.player) { gPlay.EnemyCardDraw(); } else { gPlay.Draw(true); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.play) { if (sender != PhotonNetwork.player) { gPlay.PutEnemyPawnOnBoard(gPlayMove.EffectName, gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.HandIndex, gPlayMove.TargetPosition); } else { gPlay.PutEnemyPawnOnBoard(gPlayMove.EffectName, gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.HandIndex, gPlayMove.TargetPosition, false); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.move) { if (sender != PhotonNetwork.player) { gPlay.ChangeEnemyPawnPos(gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.TargetPosition); } else { gPlay.ChangeEnemyPawnPos(gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.TargetPosition); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.moveConfirm) { if (sender != PhotonNetwork.player) { gPlay.ConfirmEnemyPawnPos(gPlayMove.EffectName, gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.TargetPosition); } else { gPlay.ConfirmEnemyPawnPos(gPlayMove.EffectName, gPlayMove.PawnID, gPlayMove.TargetRotation, gPlayMove.TargetPosition); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.playItem) { if (sender != PhotonNetwork.player) { gPlay.PutEnemyWeaponOnBoard(gPlayMove.EffectName, gPlayMove.TargetRotation, gPlayMove.HandIndex, gPlayMove.TargetPosition); } else { gPlay.PutEnemyWeaponOnBoard(gPlayMove.EffectName, gPlayMove.TargetRotation, gPlayMove.HandIndex, gPlayMove.TargetPosition, false); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.playEffect) { if (sender != PhotonNetwork.player) { gPlay.PlayEnemyEffectOnBoard(gPlayMove.EffectName, gPlayMove.TargetPawnID, gPlayMove.TargetPosition, gPlayMove.HandIndex); } else { gPlay.PlayEnemyEffectOnBoard(gPlayMove.EffectName, gPlayMove.TargetPawnID, gPlayMove.TargetPosition, gPlayMove.HandIndex, false); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.itemConfirm) { if (sender != PhotonNetwork.player) { gPlay.GiveWeaponToEnemyPawn(gPlayMove.EffectName, gPlayMove.TargetPosition, gPlayMove.TargetRotation); } else { gPlay.GiveWeaponToEnemyPawn(gPlayMove.EffectName, gPlayMove.TargetPosition, gPlayMove.TargetRotation); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.attack) { if (sender != PhotonNetwork.player) { gPlay.DoAttack(gPlayMove.PawnID, gPlayMove.TargetPosition, true); } else { gPlay.DoAttack(gPlayMove.PawnID, gPlayMove.TargetPosition, true); } } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.newTurn) { OnHandleNewTurnEvent(turn); } else if (gPlayMove.Action == GamePlayActionStack.ActionTypeEnum.giveup) { if (sender != PhotonNetwork.player) { gPlay.WinGame(0); } else { gPlay.DefeatGame(0); } } else { Debug.LogWarning("Unsupported move:" + move.ToString()); } }