public Color32 GetEffectiveColorBuilding(uint buildingId)
 {
     if (GetIgnoreDistrict(buildingId))
     {
         Color32 c = GetColor(buildingId | BUILDING_FLAG);
         if (c.a != 255)
         {
             c = Color.clear;
         }
         return(c);
     }
     else
     {
         Color32 c = GetColor(SVMUtils.GetBuildingDistrict(buildingId) | DISTRICT_FLAG);
         if (c.a != 255)
         {
             c = GetColor(DISTRICT_FLAG);
         }
         if (c.a != 255)
         {
             c = Color.clear;
         }
         return(c);
     }
 }
        private List <string> GetEffectiveAssetList(uint buildingId, out uint targetCodedId)
        {
            uint          codedId = buildingId | BUILDING_FLAG;
            List <string> assetList;

            if (buildingId > 0 && GetIgnoreDistrict(codedId))
            {
                assetList     = GetAssetList(codedId);
                targetCodedId = codedId;
                SVMUtils.doLog("[{0}] GetAModel - assetList (Building) = {1}", typeof(SSD).Name, string.Join(",", assetList.ToArray()));
            }
            else
            {
                targetCodedId = DISTRICT_FLAG | SVMUtils.GetBuildingDistrict(buildingId);
                assetList     = GetAssetList(targetCodedId);
                if (assetList == null || assetList.Count == 0)
                {
                    assetList = GetAssetList(DISTRICT_FLAG);
                }
                SVMUtils.doLog("[{0}] GetAModel - assetList (District) = {1}", typeof(SSD).Name, string.Join(",", assetList.ToArray()));
            }
            if ((assetList?.Count ?? 0) == 0)
            {
                if (basicAssetsList == null)
                {
                    LoadBasicAssets();
                }
                assetList = basicAssetsList;
            }
            SVMUtils.doLog("[{0}] GetAModel - assetList (effective) = {1}", typeof(SSD).Name, string.Join(",", assetList.ToArray()));
            return(assetList);
        }
        private void PopulateCheckboxes()
        {
            foreach (var i in m_checkboxes.Keys)
            {
                UnityEngine.Object.Destroy(m_checkboxes[i].gameObject);
            }
            var ssd = Singleton <T> .instance.GetSSD();

            m_defaultAssets = ssd.GetTransportExtension().GetAllBasicAssets();
            m_checkboxes    = new Dictionary <string, UICheckBox>();

            SVMUtils.doLog("m_defaultAssets Size = {0} ({1})", m_defaultAssets?.Count, string.Join(",", m_defaultAssets.Keys?.ToArray() ?? new string[0]));
            foreach (var i in m_defaultAssets.Keys)
            {
                var checkbox = (UICheckBox)m_uiHelper.AddCheckbox(m_defaultAssets[i], false, (x) =>
                {
                    var ext = Singleton <T> .instance.GetSSD().GetTransportExtension();

                    ushort buildingId = m_buildingInfo.buildingIdSel.Building;
                    if (m_isLoading)
                    {
                        return;
                    }
                    if (x)
                    {
                        if (ext.GetIgnoreDistrict(buildingId))
                        {
                            ext.AddAssetBuilding(buildingId, i);
                        }
                        else
                        {
                            ext.AddAssetDistrict(SVMUtils.GetBuildingDistrict(buildingId), i);
                        }
                    }
                    else
                    {
                        if (ext.GetIgnoreDistrict(buildingId))
                        {
                            ext.RemoveAssetBuilding(buildingId, i);
                        }
                        else
                        {
                            ext.RemoveAssetDistrict(SVMUtils.GetBuildingDistrict(buildingId), i);
                        }
                    }
                });
                CreateModelCheckBox(i, checkbox);
                checkbox.label.tooltip              = checkbox.label.text;
                checkbox.label.textScale            = 0.9f;
                checkbox.label.transform.localScale = new Vector3(Math.Min((m_mainPanel.width - 50) / checkbox.label.width, 1), 1);
                m_checkboxes[i] = checkbox;
            }
        }
        private void onChangeColor(UIComponent component, Color value)
        {
            if (m_isLoading)
            {
                return;
            }
            SVMUtils.doLog("onChangeColor");
            var ssd = Singleton <T> .instance.GetSSD();

            var    ext        = ssd.GetTransportExtension();
            ushort buildingId = m_buildingInfo.buildingIdSel.Building;

            if (ext.GetIgnoreDistrict(buildingId))
            {
                ext.SetColorBuilding(buildingId, value);
            }
            else
            {
                ext.SetColorDistrict(SVMUtils.GetBuildingDistrict(buildingId), value);
            }
        }
        private void OnBuildingChange(ushort buildingId)
        {
            SVMUtils.doLog("EventOnBuildingSelChanged");
            m_isLoading = true;
            IEnumerable <ServiceSystemDefinition> ssds = ServiceSystemDefinition.from(Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingId].Info);

            if (!ssds.Contains(Singleton <T> .instance.GetSSD()))
            {
                m_mainPanel.isVisible = false;
                return;
            }
            m_mainPanel.isVisible = true;
            var ssd = Singleton <T> .instance.GetSSD();

            var  ext            = ssd.GetTransportExtension();
            bool isCustomConfig = ext.GetIgnoreDistrict(buildingId);

            SVMUtils.doLog("ssd = {0}", ssd);

            List <string> selectedAssets;
            Color         selectedColor;

            if (isCustomConfig)
            {
                selectedAssets = ext.GetAssetListBuilding(buildingId);
                selectedColor  = ext.GetColorBuilding(buildingId);
            }
            else
            {
                var districtId = SVMUtils.GetBuildingDistrict(buildingId);
                selectedAssets = ext.GetAssetListDistrict(districtId);
                selectedColor  = ext.GetColorDistrict(districtId);
            }
            foreach (var i in m_checkboxes.Keys)
            {
                m_checkboxes[i].isChecked = selectedAssets.Contains(i);
            }
            if (m_color != null)
            {
                m_color.selectedColor = selectedColor;
            }

            if (isCustomConfig)
            {
                m_title.text = string.Format(Locale.Get("SVM_ASSET_SELECT_WINDOW_TITLE"), Singleton <BuildingManager> .instance.GetBuildingName(buildingId, default(InstanceID)), SVMConfigWarehouse.getNameForServiceSystem(ssd.toConfigIndex()));
            }
            else
            {
                var districtId = SVMUtils.GetBuildingDistrict(buildingId);
                if (districtId > 0)
                {
                    m_title.text = string.Format(Locale.Get("SVM_ASSET_SELECT_WINDOW_TITLE_DISTRICT"), Singleton <DistrictManager> .instance.GetDistrictName(SVMUtils.GetBuildingDistrict(buildingId)), SVMConfigWarehouse.getNameForServiceSystem(ssd.toConfigIndex()));
                }
                else
                {
                    m_title.text = string.Format(Locale.Get("SVM_ASSET_SELECT_WINDOW_TITLE_CITY"), SVMConfigWarehouse.getNameForServiceSystem(ssd.toConfigIndex()));
                }
            }

            m_isLoading = false;
            m_previewPanel.isVisible = false;
        }