public override bool OnMessage(UIMessage msg)
 {
     if (msg.type == UIMsgType.Assemble_Part_PropertyChange)
     {
         Config.PartsCustomConfig.ConfigData configData = (Config.PartsCustomConfig.ConfigData)msg.content[0];
         float currentValue = (float)msg.content[1];
         return(CalculateValue(configData, currentValue));
     }
     else if (msg.type == UIMsgType.Assemble_PartTab_Select)
     {
         string typeName = (string)msg.content[0];
         return(RefreshChooseContent(typeName));
     }
     else if (msg.type == UIMsgType.Assemble_PartPreset_Select)
     {
         AssemblePartInfo info = new AssemblePartInfo();
         if (info.InitData((int)msg.content[0]))
         {
             _info = info;
             SetUpContent();
         }
     }
     return(true);
 }
        bool CalculateValue(Config.PartsCustomConfig.ConfigData config, float Value)
        {
            if (config == null)
            {
                return(false);
            }

            int diffValue = (int)System.Math.Round((Value - config.CustomDataRangeMin) * 10, 0);

            if (config.TimeCostPerUnit != 0)
            {
                AssemblePartTimeCostDetialInfo info = new AssemblePartTimeCostDetialInfo
                {
                    customDataName  = config.CustomDataName,
                    modifyTimeValue = diffValue * (float)config.TimeCostPerUnit
                };
                RefreshTimeCostValue(info);
            }

            for (int i = 0; i < config.propertyLinkData.Count; i++)
            {
                var propertyName = config.propertyLinkData[i].Name;
                foreach (var item in _propertyItem)
                {
                    if (item._configData.Name == propertyName)
                    {
                        if (item._configData.PropertyType == 1)
                        {
                            ///Fix Value
                            float currentValue = diffValue * (float)config.propertyLinkData[i].PropertyChangePerUnitValue;
                            AssemblePartPropertyDetailInfo detailInfo = new AssemblePartPropertyDetailInfo
                            {
                                customDataName   = config.CustomDataName,
                                propertyLinkName = config.propertyLinkData[i].Name,
                                modifyType       = config.propertyLinkData[i].PropertyChangeType,
                                modifyValueFix   = currentValue
                            };

                            item.ChangeValue(detailInfo);
                        }
                        else if (item._configData.PropertyType == 2)
                        {
                            float currentValueMin = diffValue * (float)config.propertyLinkData[i].PropertyChangePerUnitMin;
                            float currentValueMax = diffValue * (float)config.propertyLinkData[i].PropertyChangePerUnitMax;
                            AssemblePartPropertyDetailInfo detailInfo = new AssemblePartPropertyDetailInfo
                            {
                                customDataName   = config.CustomDataName,
                                propertyLinkName = config.propertyLinkData[i].Name,
                                modifyType       = config.propertyLinkData[i].PropertyChangeType,
                                modifyValueMin   = currentValueMin,
                                modifyValueMax   = currentValueMax
                            };

                            item.ChangeValue(detailInfo);
                        }
                    }
                }
            }

            return(true);
        }