Esempio n. 1
0
 private void HideScaffold(Entity building)
 {
     if (this.viewObjects.ContainsKey(building))
     {
         GameObjectViewComponent gameObjectViewComponent = building.Get <GameObjectViewComponent>();
         List <ScaffoldingData>  list = this.viewObjects[building];
         int i     = 0;
         int count = list.Count;
         while (i < count)
         {
             ScaffoldingData scaffoldingData = list[i];
             GameObject      gameObj         = scaffoldingData.GameObj;
             if (gameObj != null && gameObjectViewComponent != null)
             {
                 gameObjectViewComponent.DetachGameObject(gameObj.name);
             }
             this.UnloadScaffold(scaffoldingData);
             i++;
         }
         list.Clear();
         this.viewObjects.Remove(building);
         if (this.waitingForView.Contains(building))
         {
             this.waitingForView.Remove(building);
         }
     }
 }
Esempio n. 2
0
 private void ShowScaffold(Entity building)
 {
     if (!this.viewObjects.ContainsKey(building))
     {
         SmartEntity       smartEntity  = (SmartEntity)building;
         BuildingComponent buildingComp = smartEntity.BuildingComp;
         if (buildingComp == null)
         {
             return;
         }
         BuildingTypeVO buildingType = buildingComp.BuildingType;
         FactionType    faction      = buildingType.Faction;
         string         text;
         if (faction != FactionType.Empire)
         {
             text = "rbl";
         }
         else
         {
             text = "emp";
         }
         if (text != null)
         {
             List <string>      list  = new List <string>();
             List <object>      list2 = new List <object>();
             List <AssetHandle> list3 = new List <AssetHandle>();
             int num = Math.Min(buildingType.SizeY, 6);
             for (int i = 2; i <= num; i++)
             {
                 string item = string.Format("scaffold_{0}-mod_{1}", text, i);
                 list.Add(item);
                 list2.Add(new ScaffoldingData(building, num - i, false));
                 list3.Add(AssetHandle.Invalid);
             }
             int num2 = Math.Min(buildingType.SizeX, 6);
             for (int j = 2; j <= num2; j++)
             {
                 string item2 = string.Format("scaffold_{0}-mod_{1}", text, j);
                 list.Add(item2);
                 list2.Add(new ScaffoldingData(building, num2 - j, true));
                 list3.Add(AssetHandle.Invalid);
             }
             if (list.Count > 0)
             {
                 Service.AssetManager.MultiLoad(list3, list, new AssetSuccessDelegate(this.OnAssetSuccess), new AssetFailureDelegate(this.OnAssetFailure), list2, null, null);
                 int k     = 0;
                 int count = list2.Count;
                 while (k < count)
                 {
                     ScaffoldingData scaffoldingData = (ScaffoldingData)list2[k];
                     scaffoldingData.Handle = list3[k];
                     k++;
                 }
                 List <ScaffoldingData> value = new List <ScaffoldingData>();
                 this.viewObjects.Add(building, value);
             }
         }
     }
 }
Esempio n. 3
0
        private void OnAssetSuccess(object asset, object cookie)
        {
            GameObject      gameObject      = (GameObject)asset;
            ScaffoldingData scaffoldingData = (ScaffoldingData)cookie;

            scaffoldingData.GameObj = gameObject;
            Entity building = scaffoldingData.Building;

            if (this.viewObjects.ContainsKey(building))
            {
                int  offset = scaffoldingData.Offset;
                bool flip   = scaffoldingData.Flip;
                gameObject.name = string.Format("Scaffold_{0}_{1}{2}", new object[]
                {
                    building.ID,
                    flip ? "L" : "R",
                    offset
                });
                BuildingComponent buildingComponent = building.Get <BuildingComponent>();
                BuildingTypeVO    buildingType      = buildingComponent.BuildingType;
                Transform         transform         = gameObject.transform;
                float             num;
                float             num2;
                if (flip)
                {
                    num  = (float)(-(float)offset);
                    num2 = 0f;
                    transform.localScale = new Vector3(-1f, 1f, 1f);
                    transform.rotation   = Quaternion.AngleAxis(-180f, Vector3.up);
                }
                else
                {
                    num  = 0f;
                    num2 = (float)(-(float)offset);
                    transform.rotation = Quaternion.AngleAxis(-90f, Vector3.up);
                }
                transform.localPosition = new Vector3((num + (float)buildingType.SizeX * 0.5f) * 3f, 0f, (num2 + (float)buildingType.SizeY * 0.5f) * 3f);
                List <ScaffoldingData> list = this.viewObjects[building];
                list.Add(scaffoldingData);
                GameObjectViewComponent gameObjectViewComponent = building.Get <GameObjectViewComponent>();
                if (gameObjectViewComponent != null)
                {
                    this.AttachToView(gameObject, gameObjectViewComponent);
                    return;
                }
                gameObject.SetActive(false);
                if (!this.waitingForView.Contains(building))
                {
                    this.waitingForView.Add(building);
                    return;
                }
            }
            else
            {
                this.UnloadScaffold(scaffoldingData);
            }
        }
Esempio n. 4
0
 private void UnloadScaffold(ScaffoldingData data)
 {
     if (data.GameObj != null)
     {
         UnityEngine.Object.Destroy(data.GameObj);
         data.GameObj = null;
     }
     if (data.Handle != AssetHandle.Invalid)
     {
         Service.AssetManager.Unload(data.Handle);
         data.Handle = AssetHandle.Invalid;
     }
 }