// 通过一个棋子模板初始化一个棋子物体的state组件 public void Initialize(GameObject ParaChessBoard, Vector2Int InterCoord, Piece PieceTamplate) { // 为棋子物体的state组件初始化所有位置信息 ChessBoardInternalCoordinate = InterCoord; ChessBoardInternalPosition = ParaChessBoard.GetComponent <ChessBoardController>().GetCheckerboardPosition(InterCoord); ChessBoardOuterCoordinate = ParaChessBoard.GetComponent <ChessBoardController>().ChessBoardOuterCoordinate; LocateChessboard = ParaChessBoard; PieceInfoController ThisPieceInfoController = this.GetComponent <PieceInfoController>(); // 为棋子物体的state组件初始化所有基础属性 ThisPieceInfoController.SetPieceID(PieceTamplate.GetPieceID()); ThisPieceInfoController.SetPieceName(PieceTamplate.GetPieceName()); ThisPieceInfoController.SetPieceCostMineral(PieceTamplate.GetPieceMineralCost()); ThisPieceInfoController.SetPieceCostGas(PieceTamplate.GetPieceGasCost()); SetRetreatThreshold(PieceTamplate.GetRetreatThreshold()); SetCardMainImage(PieceTamplate.GetCardMainImage()); SetUnitIconImage(PieceTamplate.GetUnitIconImage()); SetCardDescriptionItemList(PieceTamplate.GetCardDescriptionItemList()); PieceDeathEffect = PieceTamplate.GetPieceDeathEffect(); // 为棋子物体的state组件初始化所有棋子应该包含的单位 for (int i = 0; i < PieceTamplate.GetUnitTypeNum(); i++) { for (int j = 0; j < PieceTamplate.GetUnitNum(i); j++) { Unit NewUnit = new Unit(); // 根据单位模板将单位初始化为预定单位 NewUnit.InitialUnit(PieceTamplate.GetUnitTamplate(i)); // 设置单位所在的棋子引用 NewUnit.SetLocatePiece(this.transform.parent.gameObject); // 将新生成的单位添加入棋子单位字典中 InitialUnit(NewUnit); } } // 加载棋子默认棋子底座 MainPiecePedestalInfo = PieceTamplate.GetPiecePedestalInfo(); if (MainPiecePedestalInfo != null) { MainPiecePedestal = MainPiecePedestalInfo.LoadPedestal(this.transform.parent.gameObject); } MainPieceStatusInfo = PieceTamplate.GetPieceStatusInfo(); if (MainPieceStatusInfo != null) { MainPieceStatus = MainPieceStatusInfo.LoadStatus(this.transform.parent.gameObject, MainPiecePedestal); } // 初始化棋子UI this.GetComponent <PieceUIController>().InitializePieceUI(); }
// 通过一个棋子模板初始化一个位于棋盘外(尚未被部署到棋盘上的)棋子物体的state组件 public void Initialize(Piece PieceTamplate) { PieceInfoController ThisPieceInfoController = this.GetComponent <PieceInfoController>(); // 为棋子物体的state组件初始化所有基础属性 ThisPieceInfoController.SetPieceID(PieceTamplate.GetPieceID()); ThisPieceInfoController.SetPieceName(PieceTamplate.GetPieceName()); ThisPieceInfoController.SetPieceCostMineral(PieceTamplate.GetPieceMineralCost()); ThisPieceInfoController.SetPieceCostGas(PieceTamplate.GetPieceGasCost()); SetRetreatThreshold(PieceTamplate.GetRetreatThreshold()); SetCardMainImage(PieceTamplate.GetCardMainImage()); SetUnitIconImage(PieceTamplate.GetUnitIconImage()); SetCardDescriptionItemList(PieceTamplate.GetCardDescriptionItemList()); PieceDeathEffect = PieceTamplate.GetPieceDeathEffect(); this.transform.parent.name = PieceTamplate.GetPieceName(); // 为棋子物体的state组件初始化所有棋子应该包含的单位 for (int i = 0; i < PieceTamplate.GetUnitTypeNum(); i++) { for (int j = 0; j < PieceTamplate.GetUnitNum(i); j++) { Unit NewUnit = new Unit(); // 根据单位模板将单位初始化为预定单位 NewUnit.InitialUnit(PieceTamplate.GetUnitTamplate(i)); // 设置单位所在的棋子引用 NewUnit.SetLocatePiece(this.transform.parent.gameObject); // 将新生成的单位添加入棋子单位字典中 InitialUnit(NewUnit); } } // 加载棋子默认棋子底座 MainPiecePedestalInfo = PieceTamplate.GetPiecePedestalInfo(); if (MainPiecePedestalInfo != null) { MainPiecePedestal = MainPiecePedestalInfo.LoadPedestal(this.transform.parent.gameObject); } MainPieceStatusInfo = PieceTamplate.GetPieceStatusInfo(); if (MainPieceStatusInfo != null) { MainPieceStatus = MainPieceStatusInfo.LoadStatus(this.transform.parent.gameObject, MainPiecePedestal); } // 取消当前棋子的碰撞体并且将整体隐藏(棋子本体以及棋子UI) this.GetComponent <CapsuleCollider>().enabled = false; this.transform.parent.gameObject.SetActive(false); //this.GetComponent<PieceUIController>().HidePieceUIBase(); // 初始化棋子UI //this.GetComponent<PieceUIController>().InitializePieceUI(); // 隐藏棋子UI //this.GetComponent<PieceUIController>().HidePieceUIBase(); }