예제 #1
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();
 }
예제 #2
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();
 }
예제 #3
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();
 }
예제 #4
0
 public void Destroy()
 {
     StopAllCoroutines();
     structure = null;
     ObjectPool.Put(gameObject);
 }
예제 #5
0
 public void Init(StructurePreview2D structure)
 {
     this.structure = structure;
     structure.flag = this;
     Update();
 }