private SupportViewComponentState GetBubbleViewComponentStateBasedOnBuilding(SmartEntity building) { SupportViewComponentState result = SupportViewComponentState.Bubble; if (building == null) { return(result); } BuildingComponent buildingComp = building.BuildingComp; if (buildingComp == null) { return(result); } BuildingTypeVO buildingType = buildingComp.BuildingType; if (buildingType.Type == BuildingType.HQ) { return(SupportViewComponentState.BubbleHQ); } if (buildingType.Type == BuildingType.Armory && this.ShouldBadgeArmoryBuilding()) { result = SupportViewComponentState.BubbleArmoryUpgrade; } if (buildingType.Type == BuildingType.TroopResearch && this.ShouldBadgeResearchBuilding()) { result = SupportViewComponentState.BubbleShardUpgrade; } return(result); }
public void SetupElements(BuildingTooltip buildingTooltip, SupportViewComponentState s) { if (this.State != SupportViewComponentState.Dormant) { return; } this.buildingTooltip = buildingTooltip; this.State = s; this.tooltipHelper.SetupElements(this.Entity.Get <GameObjectViewComponent>(), buildingTooltip.TooltipElement, 0f, true, false); }
public void EnsureBuildingTooltip(SmartEntity building) { if (building == null || building.SupportViewComp == null || Service.PostBattleRepairController.IsEntityInRepair(building)) { return; } SupportViewComponent supportViewComp = building.SupportViewComp; BuildingComponent buildingComp = building.BuildingComp; BuildingTypeVO buildingType = buildingComp.BuildingType; if (!supportViewComp.Enabled) { return; } IState currentState = Service.GameStateMachine.CurrentState; if (currentState is WarBoardState) { return; } bool flag = currentState is HomeState; bool editState = currentState is EditBaseState; bool baseLayoutState = currentState is BaseLayoutToolState; int num = -1; int timeTotal = -1; string text = null; IUpgradeableVO iconAsset = null; bool flag2 = Service.BuildingController.SelectedBuilding == building; SupportViewComponentState supportViewComponentState = SupportViewComponentState.Dormant; Contract contract = Service.ISupportController.FindCurrentContract(buildingComp.BuildingTO.Key); if (contract != null) { if (this.ShouldShowProgress(contract, flag, editState, baseLayoutState, building)) { int remainingTimeForView = contract.GetRemainingTimeForView(); if (remainingTimeForView <= 0 || !Service.ISupportController.IsContractValidForStorage(contract)) { text = Service.Lang.Get("STOPPED", new object[0]); supportViewComponentState = SupportViewComponentState.Bubble; } else { num = remainingTimeForView; timeTotal = contract.TotalTime; if (this.ShouldShowIcon(contract.DeliveryType, flag)) { StaticDataController staticDataController = Service.StaticDataController; DeliveryType deliveryType = contract.DeliveryType; if (deliveryType != DeliveryType.UpgradeStarship) { if (deliveryType == DeliveryType.UpgradeEquipment) { iconAsset = staticDataController.Get <EquipmentVO>(contract.ProductUid); goto IL_19B; } if (deliveryType != DeliveryType.Starship) { iconAsset = staticDataController.Get <TroopTypeVO>(contract.ProductUid); goto IL_19B; } } iconAsset = staticDataController.Get <SpecialAttackTypeVO>(contract.ProductUid); IL_19B: supportViewComponentState = SupportViewComponentState.IconProgress; } else { supportViewComponentState = SupportViewComponentState.Progress; } } } } else { text = this.GetBubbleText(building, flag, editState, flag2); if (text != null) { supportViewComponentState = this.GetBubbleViewComponentStateBasedOnBuilding(building); } } if (flag2 && flag && supportViewComponentState == SupportViewComponentState.Dormant && buildingType.Type == BuildingType.Starport) { supportViewComponentState = SupportViewComponentState.General; } if (supportViewComponentState != SupportViewComponentState.Dormant) { bool flag3 = supportViewComponentState == supportViewComp.State; BuildingTooltip buildingTooltip; if (flag3) { buildingTooltip = supportViewComp.BuildingTooltip; } else { supportViewComp.TeardownElements(); UXController uXController = Service.UXController; MiscElementsManager miscElementsManager = uXController.MiscElementsManager; GameObjectViewComponent gameObjectViewComp = building.GameObjectViewComp; string str = gameObjectViewComp.MainGameObject.GetInstanceID().ToString(); string name = "BuildingTooltip" + str; GameObject worldUIParent = Service.UXController.WorldUIParent; switch (supportViewComponentState) { case SupportViewComponentState.Bubble: if (buildingType.Type == BuildingType.ChampionPlatform) { buildingTooltip = miscElementsManager.CreateBubbleRepairTooltip(name, worldUIParent); } else { buildingTooltip = miscElementsManager.CreateBubbleTooltip(name, worldUIParent); } break; case SupportViewComponentState.BubbleHQ: case SupportViewComponentState.BubbleArmoryUpgrade: case SupportViewComponentState.BubbleShardUpgrade: buildingTooltip = miscElementsManager.CreateHQBubbleTooltip(name, worldUIParent); break; case SupportViewComponentState.Progress: buildingTooltip = miscElementsManager.CreateProgressTooltip(name, worldUIParent); break; case SupportViewComponentState.IconProgress: buildingTooltip = miscElementsManager.CreateIconProgressTooltip(name, worldUIParent); break; default: buildingTooltip = miscElementsManager.CreateGeneralTooltip(name, worldUIParent); break; } } buildingTooltip.SetSelected(flag2); buildingTooltip.SetTitle(this.GetBuildingTitle(buildingType)); buildingTooltip.SetLevel(buildingType); buildingTooltip.SetBubbleText(text); buildingTooltip.SetIconAsset(iconAsset); buildingTooltip.SetTime(num); buildingTooltip.SetProgress(num, timeTotal); if (!flag3) { supportViewComp.SetupElements(buildingTooltip, supportViewComponentState); } } }