Exemplo n.º 1
0
 public StructureData(StructureInformation info, Vector3 position)
 {
     Info          = info;
     ID            = $"{Info.ID}-{Guid.NewGuid():N}";
     this.position = position;
     scene         = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
 }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
0
    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;
    }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 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();
 }
Exemplo n.º 7
0
 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();
     }
 }
Exemplo n.º 8
0
 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();
 }
Exemplo n.º 9
0
 public bool HadLearned(StructureInformation structureInfo)
 {
     return(StructuresLearned.Contains(structureInfo));
 }
Exemplo n.º 10
0
 public WarehouseData(StructureInformation info, Vector3 position, int space) : base(info, position)
 {
     Inventory = new Inventory(space, ignoreLock: true);
 }