/// <summary> /// 通过鼠标点击来移动 /// </summary> public void Move(Vector2 point) { if (chessReciprocalState == ChessReciprocalState.beChoosed) { Vector2[] canMovePoints = CanMovePoints(GameCache.Chess2Vector, GameCache.Vector2Chess).ToArray(); if (canMovePoints.Length > 0) { for (int i = 0; i < canMovePoints.Length; i++) { if (GameUtil.CompareVector2(point, canMovePoints[i]) == true) { if (GameController.IsBattle == true) { SetAttackerEvent(gameObject);//派发事件设置攻击者 } int x = (int)point.x; int y = (int)point.y; Vector3 target = Scene3_UI.cells[x, y].transform.position; iTween.MoveTo(gameObject, iTween.Hash("time", 0.1f, "position", target, "easetype", iTween.EaseType.linear, "onstart", "OnMoveStart", "onstarttarget", gameObject, "oncomplete", "OnMoveComplete", "oncompletetarget", gameObject)); break; } else if (chessReciprocalState != ChessReciprocalState.moving) { CancelChoose(); Scene3_UI.ResetChessBoardPoints(); } else { CancelChoose(); Scene3_UI.ResetChessBoardPoints(); } } } else { CancelChoose(); } } }
/// <summary> /// 被选中 /// </summary> /// <param name="isAdding">是否在加属性</param> public void BeChoosed(bool isAdding) { transform.FindChild("baibian").gameObject.SetActive(true); //有白边圈住 if (!isAdding) { Scene3_UI.ResetChessBoardPoints(); //可以提示出该棋子能移动的所有位置 Vector2[] canMovePoints = CanMovePoints(GameCache.Chess2Vector, GameCache.Vector2Chess).ToArray(); for (int i = 0; i < canMovePoints.Length; i++) { int x = (int)canMovePoints[i].x; int y = (int)canMovePoints[i].y; Scene3_UI.cells[x, y].GetComponent <Image>().enabled = true; //若可移动点上存在其他棋子,那肯定就是敌方棋子了,提示可以击杀之 if (GameCache.Vector2Chess.ContainsKey(canMovePoints[i])) { GameCache.Vector2Chess[canMovePoints[i]].transform.FindChild("redpoint").gameObject.SetActive(true); TipsKillEvent(canMovePoints[i]); } } chessReciprocalState = ChessReciprocalState.beChoosed; } }
void Awake() { if (instance == null) { instance = this; } leftGameMode = GameObject.Find("Canvas/Left/GameMode"); leftReplayMode = GameObject.Find("Canvas/Left/ReplayMode"); blackAllTime = GameObject.Find("Canvas/Left/GameMode/Black/AllTime/Value").GetComponent <Text>(); blackStepTime = GameObject.Find("Canvas/Left/GameMode/Black/StepTime/Value").GetComponent <Text>(); redAllTime = GameObject.Find("Canvas/Left/GameMode/Red/AllTime/Value").GetComponent <Text>(); redStepTime = GameObject.Find("Canvas/Left/GameMode/Red/StepTime/Value").GetComponent <Text>(); lostHp = GameObject.Find("Canvas/Left/ReplayMode/LostLife/Label").GetComponent <Text>(); addAttr = GameObject.Find("Canvas/Left/ReplayMode/AddAttr/Label").GetComponent <Text>(); /*****************中******************/ GridsTrans = GameObject.Find("Grids").transform; cells = new GameObject[9, 10]; for (int y = 0; y <= 9; y++) { Transform row = GridsTrans.FindChild("row" + y); for (int x = 0; x <= 8; x++) { cells[x, y] = row.FindChild("cell" + x).gameObject; cells[x, y].GetComponent <Image>().enabled = false; } } GameCache.SetCoords(cells); //将场景找到的cell作为参数,处理写入映射缓存 beginBtn = GameObject.Find("Canvas/Middle/BeginBtn"); addAtrrPanel = GameObject.Find("Canvas/Middle/AddAttrPanel"); addChessName = GameObject.Find("Canvas/Middle/AddAttrPanel/ChessName").GetComponent <Text>(); addHpValue = GameObject.Find("Canvas/Middle/AddAttrPanel/Grid/Hp/Value").GetComponent <Text>(); addAttackValue = GameObject.Find("Canvas/Middle/AddAttrPanel/Grid/Attack/Value").GetComponent <Text>(); addDefenceValue = GameObject.Find("Canvas/Middle/AddAttrPanel/Grid/Defence/Value").GetComponent <Text>(); endPanel = GameObject.Find("Canvas/Middle/EndPanel"); winer = GameObject.Find("Canvas/Middle/EndPanel/ResultLabel").GetComponent <Text>(); /******************右******************/ rightGameMode = GameObject.Find("Canvas/Right/GameMode"); rightReplayMode = GameObject.Find("Canvas/Right/ReplayMode"); blackDetailPanel = GameObject.Find("Canvas/Right/BlackAttrDetail"); b_Name = blackDetailPanel.transform.FindChild("ChessName").GetComponent <Text>(); b_Hp = blackDetailPanel.transform.FindChild("Grid/Hp/Value").GetComponent <Text>(); b_Attack = blackDetailPanel.transform.FindChild("Grid/Attack/Value").GetComponent <Text>(); b_Defence = blackDetailPanel.transform.FindChild("Grid/Defence/Value").GetComponent <Text>(); b_Combat = blackDetailPanel.transform.FindChild("Combat/Value").GetComponent <Text>(); redDetailPanel = GameObject.Find("Canvas/Right/RedAttrDetail"); r_Name = redDetailPanel.transform.FindChild("ChessName").GetComponent <Text>(); r_Hp = redDetailPanel.transform.FindChild("Grid/Hp/Value").GetComponent <Text>(); r_Attack = redDetailPanel.transform.FindChild("Grid/Attack/Value").GetComponent <Text>(); r_Defence = redDetailPanel.transform.FindChild("Grid/Defence/Value").GetComponent <Text>(); r_Combat = redDetailPanel.transform.FindChild("Combat/Value").GetComponent <Text>(); stepsLabel = rightReplayMode.transform.FindChild("Step/StepsLabel").GetComponent <Text>(); AddAttrCompleteEvent += HideAddAttrPanel; AddAttrCompleteEvent += HideAttrPanel; ReplayModeEvent += ResetChessBoardPoints; ReplayModeEvent += UpdateReplayModeText; UndoEvent += ResetChessBoardPoints; UndoEvent += UpdateAttrPanel; TimeManager.TimeUpEventWithParam += ShowEndPanel; TimeManager.TimeUpEvent += ResetChessBoardPoints; TimeManager.TimeUpEvent += HideAddAttrPanel; Chess_Boss.BossKilledEventWithParam += ShowEndPanel; Chess_Boss.BossKilledEvent += ResetChessBoardPoints; Chess_Boss.BossKilledEvent += HideAddAttrPanel; }
/// <summary> /// 棋子点击事件 /// </summary> public virtual void ChesseClicked() { if (GameController.playing == Playing.OnRed) { if (gameObject.tag == "Red") { if (chessReciprocalState == ChessReciprocalState.unChoosed) //若还没被选中 { ChooseEvent(gameObject); BeChoosed(false); } else { CancelChoose(); Scene3_UI.ResetChessBoardPoints(); } } else { if (chessSituationState == ChessSituationState.BeTaget) { //若被选中且被标记为红点,就是有人要吃你,把自身物体派发出去 GameController.IsBattle = true; SetDefenderEvent(gameObject); //将自身防守方派发出去 MoveEvent(GameCache.Chess2Vector[gameObject]); } else { return; } } } else if (GameController.playing == Playing.OnBlack) { if (gameObject.tag == "Black") { if (chessReciprocalState == ChessReciprocalState.unChoosed) //若还没被选中 { ChooseEvent(gameObject); BeChoosed(false); } else { CancelChoose(); Scene3_UI.ResetChessBoardPoints(); } } else { if (chessSituationState == ChessSituationState.BeTaget) { //若被选中且被标记为红点,就是有人要吃你,把自身物体派发出去 GameController.IsBattle = true; SetDefenderEvent(gameObject); //将自身防守方派发出去 MoveEvent(GameCache.Chess2Vector[gameObject]); } else { return; } } } else if (GameController.playing == Playing.RedAdding) { if (gameObject.tag == "Red") { ChooseEvent(gameObject); BeChoosed(true); } else { return; } } else if (GameController.playing == Playing.BlackAdding) { if (gameObject.tag == "Black") { ChooseEvent(gameObject); BeChoosed(true); } else { return; } } }
public void OnMoveStart() { chessReciprocalState = ChessReciprocalState.moving; Scene3_UI.ResetChessBoardPoints(); }