private void OnChessClick(object content) //移动 { if (App.Package.ChessGame.IsGameStart) //游戏开始了之后才能走 { if (!App.Package.ChessGame.IsMyRound) { Common.UI.OpenTips("敌方回合,无法行动"); return; } if (m_MyChessIsMoving) { return; //正在移动 } Intent intent = (Intent)content; ChessPoint point = (ChessPoint)intent.Value("point"); GameObject go = (GameObject)intent.Value("gameObject"); //Debugger.Warn("ChessItem Click:" + id +"|"+ App.Package.ChessGame.MyselfChooseChessId + "|" +App.Package.ChessGame.GetFieldRoadStationByPoint(point).type); if (App.Package.ChessGame.MyselfChooseChessId > -1) { ChessHeroData heroChoosed = App.Package.ChessGame.GetChessHeroDataById(App.Package.ChessGame.MyselfChooseChessId); if (heroChoosed.group == ChessHeroGroup.Myself) { if (ChessAgainst.IsStronghold(heroChoosed.point)) { Common.UI.OpenTips("大本营的棋子无法移动!"); } else { ChessMoveData moveData = ChessAgainst.ChessHeroCanMoveTo(heroChoosed, point); if (moveData.crashType > 0) { if (moveData.crashType == 1) { switch (moveData.crashHero.heroTypeId) { case 0: Common.UI.OpenTips("地雷无法移动!"); break; case 11: Common.UI.OpenTips("军旗无法移动!"); break; default: Common.UI.OpenTips("嗷!走不过去啊!"); break; } } else { Common.UI.OpenTips("嗷!走不过去啊!"); } } else { RequestToMove(heroChoosed, point, null, moveData); } } } } } else { if (App.Package.ChessGame.IsReadyGame) { Common.UI.OpenTips("比赛还没开始哦,不要心急"); } else { Common.UI.OpenTips("赶紧布兵吧!你还没有准备呢\n长按拖动可以交换棋子!"); } } }
private void OnChessHeroClick(object content)//吃子移动 { if (App.Package.ChessGame.IsGameStart) { if (!App.Package.ChessGame.IsMyRound) { Common.UI.OpenTips("敌方回合,无法行动"); return; } if (m_MyChessIsMoving) { return; //正在移动 } Intent intent = (Intent)content; int id = (int)intent.Value("id"); GameObject go = (GameObject)intent.Value("gameObject"); ChessHeroData hero = App.Package.ChessGame.GetChessHeroDataById(id); ChessHeroGroup group = hero.group; Push("_chessHeroChoosed", id); //明棋模式提醒 if (group == ChessHeroGroup.Myself) { for (int i = 0; i < App.Package.ChessGame.ChessDataIds.Count; i++) { int chessId = App.Package.ChessGame.ChessDataIds[i]; ChessHeroData heroPre = App.Package.ChessGame.GetChessHeroDataById(chessId); if (heroPre.group == ChessHeroGroup.Myself) { continue; } UIWChessHeroItem uiChess = heroPre.gameObject.GetComponent <UIWChessHeroItem>(); uiChess.willLose.SetActive(false); uiChess.willWin.SetActive(false); uiChess.willTie.SetActive(false); if (heroPre.heroTypeId > -1 && ChessAgainst.ChessHeroCanMove(hero)) { ChessMoveResult result = ChessAgainst.ChessCanBeat(hero, heroPre); switch (result) { case ChessMoveResult.LOSE: uiChess.willLose.SetActive(true); break; case ChessMoveResult.TIE: uiChess.willTie.SetActive(true); break; case ChessMoveResult.WIN: uiChess.willWin.SetActive(true); break; } } } } else { for (int i = 0; i < App.Package.ChessGame.ChessDataIds.Count; i++) { int chessId = App.Package.ChessGame.ChessDataIds[i]; ChessHeroData heroPre = App.Package.ChessGame.GetChessHeroDataById(chessId); if (heroPre.group == ChessHeroGroup.Myself) { continue; } UIWChessHeroItem uiChess = heroPre.gameObject.GetComponent <UIWChessHeroItem>(); uiChess.willLose.SetActive(false); uiChess.willWin.SetActive(false); uiChess.willTie.SetActive(false); } } if (App.Package.ChessGame.MyselfChooseChessId > -1) { ChessHeroData heroChoosed = App.Package.ChessGame.GetChessHeroDataById(App.Package.ChessGame.MyselfChooseChessId); if (heroChoosed.group == ChessHeroGroup.Myself && group != ChessHeroGroup.Myself) //之前有选择自己,当前非己方的棋 { if (App.Package.ChessGame.IsGameStart) //游戏开始了之后才能走并吃子 { if (ChessAgainst.IsBarrack(hero.point) && hero.point.y > 5) //敌方的军营 { Common.UI.OpenTips("敌军在行营里,不要浪啊~"); } else { if (ChessAgainst.IsStronghold(heroChoosed.point)) { Common.UI.OpenTips("大本营的棋子无法移动!"); } else { ChessMoveData moveData = ChessAgainst.ChessHeroCanMoveTo(heroChoosed, hero.point); if (moveData.crashType > 0) { if (moveData.crashType == 1) { switch (moveData.crashHero.heroTypeId) { case 0: Common.UI.OpenTips("地雷无法移动!"); break; case 11: Common.UI.OpenTips("军旗无法移动!"); break; default: Common.UI.OpenTips("嗷!走不过去啊!"); break; } } else { Common.UI.OpenTips("嗷!走不过去啊!"); } } else { RequestToMove(heroChoosed, hero.point, hero, moveData); } } } } } } App.Package.ChessGame.MyselfChooseChessId = id; } else { if (App.Package.ChessGame.IsReadyGame) { Common.UI.OpenTips("比赛还没开始哦,不要心急"); } else { Common.UI.OpenTips("赶紧布兵吧!你还没有准备呢\n长按拖动可以交换棋子!"); } } }
/// <summary> /// 走子情况 /// </summary> void OnReceiveChessMove(object data) { ChessMovePush push = (ChessMovePush)data; ChessData source = push.Source; ChessData target = push.Target; ChessMoveResult result = (ChessMoveResult)push.ChessMoveResult; ChessHeroData sourceReal = App.Package.ChessGame.GetChessHeroDataByRemoteId(source.ChessRemoteId); //强制回合同步 App.Package.ChessGame.GameRoundCounter = push.Counter - 1; if (target != null) { ChessHeroData targetReal = App.Package.ChessGame.GetChessHeroDataByRemoteId(target.ChessRemoteId); if (sourceReal == null || (targetReal == null && result != ChessMoveResult.CAN_MOVE && result != ChessMoveResult.CANNOT_MOVE) || push.Counter != App.Package.ChessGame.GameRoundCounter + 1) { ChessDataHasProblem(); return; } ChessHeroData fake = ChessDataToChessHeroData(target, true); if (targetReal != null) { fake = targetReal; } ChessMoveData moveData = ChessAgainst.ChessHeroCanMoveTo(sourceReal, fake.point); switch (result) { case ChessMoveResult.LOSE: fake.heroTypeId = 12; StartCoroutine(TweenMoveChessAndBeat(sourceReal, fake, result, moveData)); break; case ChessMoveResult.WIN: fake.heroTypeId = -2; StartCoroutine(TweenMoveChessAndBeat(sourceReal, fake, result, moveData)); break; case ChessMoveResult.TIE: fake.heroTypeId = -3; StartCoroutine(TweenMoveChessAndBeat(sourceReal, fake, result, moveData)); break; case ChessMoveResult.CAN_MOVE: StartCoroutine(TweenMoveChess(sourceReal, fake.point, result, moveData)); break; case ChessMoveResult.CANNOT_MOVE: break; } } else { NextGameRound(); if (source.Belong == App.Package.Player.GetBelong()) { Common.UI.OpenTips("超时跳过"); } else { Common.UI.OpenTips("敌方超时跳过"); } Debugger.Error("skip"); } }