public StructureData(StructureInformation info, Vector3 position) { Info = info; ID = $"{Info.ID}-{Guid.NewGuid():N}"; this.position = position; scene = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; }
public void LoadData(StructureSystemSaveData structureSystemData) { StructuresLearned.Clear(); StructureInformation[] structureInfos = Resources.LoadAll <StructureInformation>("Configuration"); foreach (string learned in structureSystemData.learneds) { StructureInformation find = Array.Find(structureInfos, x => x.ID == learned); if (find) { StructuresLearned.Add(find); } } foreach (StructureSaveData saveData in structureSystemData.structureDatas) { StructureInformation find = Array.Find(structureInfos, x => x.ID == saveData.modelID); if (find) { StructureData data = new StructureData(find, new Vector3(saveData.posX, saveData.posY, saveData.posZ)); data.LoadBuild(find, saveData); if (data.leftBuildTime <= 0) { DoneBuild(data); } else if (saveData.scene == UnityEngine.SceneManagement.SceneManager.GetActiveScene().name) { StructurePreview2D preview = Instantiate(find.Preview); preview.StartBuild(data); MakeFlag(preview); } AddStructure(data); } } AStarManager.Instance.UpdateGraphs(); }
public void ShowDescription(StructureInformation structureInfo) { if (structureInfo == null) { return; } currentInfo = structureInfo; List <string> materialsInfo = BackpackManager.Instance.GetMaterialsInfoString(structureInfo.Materials); string materials = string.Empty; int lineCount = materialsInfo.Count; for (int i = 0; i < materialsInfo.Count; i++) { string endLine = i == lineCount - 1 ? string.Empty : "\n"; materials += materialsInfo[i] + endLine; } nameText.text = structureInfo.Name; desciptionText.text = string.Format("<b>描述</b>\n{0}\n<b>耗时: </b>{1}\n<b>建造材料:{2}</b>\n{3}", structureInfo.Description, structureInfo.BuildTime > 0 ? structureInfo.BuildTime.ToString("F2") + 's' : "立即", BackpackManager.Instance.IsMaterialsEnough(structureInfo.Materials) ? "<color=green>(可建造)</color>" : "<color=red>(耗材不足)</color>", materials); descriptionWindow.alpha = 1; descriptionWindow.blocksRaycasts = false; }
public void ShowBuiltList(StructureInformation info) { var structures = StructureManager.Instance.GetStructures(info); if (structures == null || structures.Count < 1) { HideBuiltList(); return; } structureList.Refresh(structures); listWindow.alpha = 1; listWindow.blocksRaycasts = true; }
public bool Learn(StructureInformation structureInfo) { if (!structureInfo) { return(false); } if (HadLearned(structureInfo)) { ConfirmWindow.StartConfirm("这种设施已经学会建造。"); return(false); } StructuresLearned.Add(structureInfo); ConfirmWindow.StartConfirm(string.Format("学会了 [{0}] 的建造方法!", structureInfo.Name)); return(true); }
public void CreatPreview(StructureInformation info) { if (!PlayerManager.Instance.CheckIsNormalWithAlert()) { return; } if (info == null) { return; } HideDescription(); HideBuiltList(); currentInfo = info; preview = Instantiate(currentInfo.Preview, StructureManager.Instance.StructureRoot); WindowsManager.HideAll(true); IsPreviewing = true; isDraging = true; PlayerManager.Instance.SetPlayerState(CharacterStates.Busy, CharacterBusyStates.UI); ShowAndMovePreview(); }
public void LoadBuild(StructureInformation info, StructureSaveData structureData) { if (Info != info) { return; } leftBuildTime = structureData.leftBuildTime; currentStageIndex = structureData.stageIndex; ID = structureData.ID; if (leftBuildTime > 0 && currentStageIndex >= 0 && currentStageIndex < info.Stages.Count) { IsBuilt = false; if (Info.AutoBuild) { StartConstruct(); } } else { BuildComplete(); } }
private void FinishPreview(bool destroyPreview = false) { if (!IsPreviewing) { return; } if (destroyPreview) { Destroy(preview.gameObject); } preview = null; currentInfo = null; IsPreviewing = false; ZetanUtility.SetActive(buildButton, false); ZetanUtility.SetActive(backButton, false); ZetanUtility.SetActive(joyStick, false); WindowsManager.HideAll(false); if (PlayerManager.Instance.Player.GetState(out var main, out var sub) && main == CharacterStates.Busy && sub == CharacterBusyStates.UI) { PlayerManager.Instance.SetPlayerState(CharacterStates.Normal, CharacterNormalStates.Idle); } CameraMovement2D.Instance.Stop(); }
public bool HadLearned(StructureInformation structureInfo) { return(StructuresLearned.Contains(structureInfo)); }
public WarehouseData(StructureInformation info, Vector3 position, int space) : base(info, position) { Inventory = new Inventory(space, ignoreLock: true); }