// 通过一个棋子模板初始化一个棋子物体的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(); }
// 向棋子雕像模板库中添加一个新棋子雕像模板 public void AddPieceStatusInfo(PieceStatusInfo NewPieceStatusInfo) { if (!PieceStatusInfoLibrary.ContainsKey(NewPieceStatusInfo.GetPieceStatusID())) { PieceStatusInfoLibrary.Add(NewPieceStatusInfo.GetPieceStatusID(), NewPieceStatusInfo); } else { Debug.LogError("Same PieceStatusInfo has existed in library."); } }
// 从XML中载入棋子雕像模板信息 public void LoadStatusFromXML() { string filePath = Application.dataPath + "/Resources/Status.xml"; if (File.Exists(filePath)) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(filePath); XmlNodeList node = xmlDoc.SelectSingleNode("PieceStatus").ChildNodes; foreach (XmlElement PieceStatusInfo in node) { PieceStatusInfo NewPieceStatus = new PieceStatusInfo(); foreach (XmlElement PieceStatusItem in PieceStatusInfo.ChildNodes) { if (PieceStatusItem.Name == "PieceStatusID") { //Debug.Log(PieceStatusItem.InnerText); NewPieceStatus.SetPieceStatusID(PieceStatusItem.InnerText); NewPieceStatus.SetStatusPrefab(PieceStatusItem.InnerText); } else if (PieceStatusItem.Name == "PieceStatusName") { NewPieceStatus.SetPieceStatusName(PieceStatusItem.InnerText); } else if (PieceStatusItem.Name == "Position") { //NewPieceStatus.SetLocalPosition(StringToVector3(PieceStatusItem.InnerText)); } else if (PieceStatusItem.Name == "Scale") { NewPieceStatus.SetLocalScale(PublicUtility.StringToVector3(PieceStatusItem.InnerText)); //Debug.Log(StringToVector3(PieceStatusItem.InnerText)); } else if (PieceStatusItem.Name == "Rotation") { NewPieceStatus.SetLocalRotation(PublicUtility.StringToVector3(PieceStatusItem.InnerText)); } } AddPieceStatusInfo(NewPieceStatus); } } }
// 通过一个棋子模板初始化一个位于棋盘外(尚未被部署到棋盘上的)棋子物体的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(); }
public void SetPieceStatusInfo(PieceStatusInfo NewPieceStatusInfo) { MainPieceStatusInfo = NewPieceStatusInfo; }