Exemple #1
0
        // 获取参数定义
        private Dictionary <int, FormulaParam> GetFormulaParamDict()
        {
            var formulaParamDict = new Dictionary <int, FormulaParam>();

            using
            (DataSet ds = this._helper.Query(@"
SELECT
	  P.FormulaID fid,
      P.[Order] ,
	  P.FormulaParaID pid,
      N.ParaName name, N.ParaAlias alias
  FROM  T_DIM_FORMULA_PARA P,T_DIM_FORMULA_PARA_NAME N
  where P.ParaNameID = N.ParaNameID
  order by FormulaID, P.[Order]"))
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    FormulaParam pi = new FormulaParam
                    {
                        PID   = Convert.ToInt32(row["pid"]),
                        FID   = Convert.ToInt32(row["fid"]),
                        Index = Convert.ToInt32(row["Order"]),
                        Name  = Convert.ToString(row["name"]),
                        Alias = Convert.ToString(row["alias"])
                    };
                    formulaParamDict[pi.PID] = pi;
                }
            }
            return(formulaParamDict);
        }
Exemple #2
0
        // 获取传感器参数定义。
        private void GetParameters(DataTable table, Sensor sensor, Dictionary <int, FormulaParam> formulaParamDict)
        {
            var sr = from r in table.AsEnumerable()
                     where r.Field <int>("SENSOR_ID") == sensor.SensorID
                     select r;

            if (!sr.Any())
            {
                return;
            }
            foreach (DataRow row in sr)
            {
                for (int i = 1; i < 7; i++)
                {
                    string pName  = string.Format("FormulaParaID{0}", i);
                    string pValue = string.Format("Parameter{0}", i);
                    if (row.IsNull(pName))
                    {
                        break;
                    }
                    int          pid  = Convert.ToInt32(row[pName]);
                    FormulaParam temp = this.GetFormulaParam(pid, formulaParamDict);
                    var          pi   = new SensorParam(temp);
                    if (row.IsNull(pValue))
                    {
                        Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i,
                                          temp.Name);
                    }
                    pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]);
                    sensor.AddParameter(pi);
                }
            }
        }
Exemple #3
0
        private FormulaParam GetFormulaParam(int paramId)
        {
            FormulaParam fp = null;

            _formulaParamDict.TryGetValue(paramId, out fp);
            return(fp);
        }
Exemple #4
0
        //获取参数定义
        private void GetFormulaParamDict()
        {
            _formulaParamDict = new Dictionary <int, FormulaParam>();
            DataSet ds = _cfgHelper.Query(@"
SELECT
	  P.FORMULA_ID fid,
	  P.Formula_Para_ID pid,
    N.Para_Name name, N.Para_Alias alias
  FROM  C_FORMULA_PARA P,C_FORMULA_PARA_NAME N
  where P.Para_Name_ID = N.Para_Name_ID  
order by fid, pid");

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                FormulaParam pi = new FormulaParam
                {
                    PID   = Convert.ToInt32(row["pid"]),
                    FID   = Convert.ToInt32(row["fid"]),
                    Index = 0, // 表中未定义.
                    Name  = Convert.ToString(row["name"]),
                    Alias = Convert.ToString(row["alias"])
                };
                _formulaParamDict[pi.PID] = pi;
            }
        }
Exemple #5
0
        // 获取传感器参数定义。
        private void GetParameters(DataTable table, Sensor sensor)
        {
            var sr = from r in table.AsEnumerable()
                     where r.Field <int>("SENSOR_SET_ID") == sensor.SensorID
                     select r;

            if (!sr.Any())
            {
                return;
            }
            foreach (DataRow row in sr)
            {
                ushort paraCount = Convert.ToUInt16(row["ParaCount"]);
                for (int i = 1; i <= paraCount; i++)
                {
                    string pName  = string.Format("PARA_NAME_ID{0}", i);
                    string pValue = string.Format("PARAMETER{0}", i);
                    if (row.IsNull(pName))
                    {
                        break;
                    }
                    int          pid  = Convert.ToInt32(row[pName]);
                    FormulaParam temp = GetFormulaParam(pid);
                    SensorParam  pi   = new SensorParam(temp);
                    if (row.IsNull(pValue))
                    {
                        // TODO write Log.
                        Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i,
                                          temp.Name);
                    }
                    pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]);
                    sensor.AddParameter(pi);
                }
            }
        }
    public List <FormulaInfo> FormulaList = new List <FormulaInfo>(); //升段公式列表


    public void Load(BinaryHelper helper)
    {
        ID            = helper.ReadInt();
        GradeUpTime   = helper.ReadInt();
        LevelLimitUp  = helper.ReadInt();
        HpUp          = helper.ReadInt();
        AttackUp      = helper.ReadInt();
        MagicAttackUp = helper.ReadInt();
        Formula1_Cost = helper.ReadInt();
        FormulaNum    = helper.ReadInt();
        for (int index = 1; index <= (FormulaNum - 1); ++index)
        {
            FormulaInfo formulainfo = new FormulaInfo();
            formulainfo.Formula_Cost = helper.ReadInt();
            formulainfo.Param_Num    = helper.ReadInt();
            for (int temp = 1; temp <= 5; ++temp)
            {
                FormulaParam formulaParam = new FormulaParam();
                formulaParam.paramType = helper.ReadInt();
                //if (ID == 29)
                //{
                //    int aaa = 0;
                //}
                formulaParam.paramId      = helper.ReadInt();
                formulaParam.paramLevel   = helper.ReadInt();
                formulaParam.paramRarity  = helper.ReadInt();
                formulaParam.paramOccu    = helper.ReadInt();
                formulaParam.paramRingNum = helper.ReadInt();
                formulainfo.ParamList.Add(formulaParam);
            }
            FormulaList.Add(formulainfo);
        }
    }
    //添加指定卡牌素材
    void AddAppointCard(UISprite sprite, FormulaParam param, int index)
    {
        UICardHead tempHead = UICardHead.Create();

        m_materialList.Add(tempHead);//加入到素材列表
        tempHead.SetParent(sprite.transform);
        tempHead.SetLocalPosition(Vector3.zero);
        tempHead.RegisterCallBack(null, PressCardHead);
        CSItem tempCard = new CSItem();

        tempCard.m_id = (short)param.paramId;
        tempHead.SetCardInfo(tempCard);

        tempHead.ShowCard();
        tempHead.SetCardLoveShow(false);

        //获得这张ID的卡牌在背包中有多少张
        int cardCount = User.Singleton.ItemBag.GetCardNumById(param.paramId);

        tempHead.m_cardInfo.text = string.Format(Localization.Get("WithTheMaterial"), cardCount);
        int tempCardCount = cardCount;

        foreach (UICardHead item in m_materialList)
        {
            if (item != tempHead && tempHead.m_showCard.m_id == param.paramId)
            {
                tempCardCount--;
            }
            if (item == tempHead)
            {
                if (tempCardCount > 0)
                {
                    tempHead.m_cardInfo.color = Color.green;
                }
                else
                {
                    tempHead.m_cardInfo.color = Color.red;
                    tempHead.SetCardMask(true);
                }
            }
        }
    }
    //添加非指定素材
    void AddUnAppoint(UISprite sprite, FormulaParam param)
    {
        Transform      texure     = sprite.transform.Find("Sprite");
        Transform      starTexure = sprite.transform.Find("Texture");
        WorldParamInfo worldInfo  = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enCardDivisionUnAppointIcon);
        IconInfomation imageInfo  = GameTable.IconInfoTableAsset.Lookup(worldInfo.IntTypeValue);

        texure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(imageInfo.dirName);
        Transform      label    = sprite.transform.Find("MateriaLabel");
        int            level    = param.paramLevel;
        int            occ      = param.paramOccu;
        int            star     = param.paramRarity;
        OccupationInfo occTable = GameTable.OccupationInfoAsset.LookUp(occ);

        if (null == occTable)
        {
            return;
        }
        label.GetComponent <UILabel>().text  = string.Format(Localization.Get("Occupation"), occTable.m_name, level);
        label.GetComponent <UILabel>().color = Color.red;
        label.gameObject.SetActive(true);
        //设置星级图标
        RarityRelativeInfo rarityInfo = GameTable.RarityRelativeAsset.LookUp(star);

        if (null == rarityInfo)
        {
            Debug.Log("RarityRelativeInfo rarityInfo == null info.RarityId:" + star);
            return;
        }
        IconInfomation rarityIcon = GameTable.IconInfoTableAsset.Lookup(rarityInfo.m_iconId);

        if (null == rarityIcon)
        {
            Debug.Log("IconInfomation rarityIcon == null rarityInfo.m_iconId:" + rarityInfo.m_iconId);
            return;
        }
        starTexure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(rarityIcon.dirName);
        starTexure.gameObject.SetActive(true);
    }
    //点击已经选择的素材卡牌头像 显示素材卡牌界面
    void OnClickCardHeadChooseMaterial(CSItem temp, int materialId)
    {
        CSItem card = CardBag.Singleton.GetCardByGuid(CardDivisionUpdateProp.Singleton.m_curDivisionCardGuid);
        //设置素材卡牌
        GradeUpRequireInfo gradeInfo = GameTable.gradeUpRequireAsset.Lookup(card.m_id);

        if (null == gradeInfo)
        {
            return;
        }
        int         curtFormula = CardDivisionUpdateProp.Singleton.m_curtFormula;
        FormulaInfo tempFormula = gradeInfo.FormulaList[curtFormula - 2];

        if (null == tempFormula)
        {
            return;
        }
        FormulaParam param = tempFormula.ParamList[materialId];

        OperateCardList.Singleton.OnShowDivisionCard(param.paramOccu, param.paramLevel, param.paramRarity, materialId);
        MainUIManager.Singleton.OnSwitchSingelUI(MainUIManager.EDUITYPE.enOperaterCardList);
    }
    //添加荣誉戒指素材
    void AddRingOfHonor(UISprite sprite, FormulaParam param)
    {
        Transform      texure    = sprite.transform.Find("Sprite");
        WorldParamInfo worldInfo = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enCardDivisionRingHonorIcon);
        IconInfomation imageInfo = GameTable.IconInfoTableAsset.Lookup(worldInfo.IntTypeValue);

        texure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(imageInfo.dirName);

        Transform label   = sprite.transform.Find("MateriaLabel");
        int       ringNum = User.Singleton.UserProps.GetProperty_Int32(UserProperty.ring);

        label.GetComponent <UILabel>().text = string.Format(Localization.Get("WithTheMaterial"), ringNum);
        if (ringNum < param.paramRingNum)
        {
            label.GetComponent <UILabel>().color = Color.red;
        }
        else
        {
            sprite.GetComponent <Parma>().m_type = 1;
            label.GetComponent <UILabel>().color = Color.green;
        }
        label.gameObject.SetActive(true);
    }
Exemple #11
0
        static public void AddParamToGroupBox(GroupBox gbParam, ImageList ilFormula, FormulaBase fb, EventHandler ehLeave)
        {
            gbParam.Controls.Clear();
            if (fb != null)
            {
                int x = 10;
                int y = 20;
                int h = 30;
                int w = 0;

                for (int i = 0; i < fb.Params.Count; i++)
                {
                    Label l = new Label();
                    l.AutoSize = true;
                    l.Text     = fb.Params[i].Name + "=";
                    l.Left     = x;
                    l.Top      = y + 3;
                    l.Parent   = gbParam;
                    w          = Math.Max(w, l.Width);
                    y         += h;
                }

                y  = 20;
                x += w + 6;
                for (int i = 0; i < fb.Params.Count; i++)
                {
                    FormulaParam fp = fb.Params[i];
                    TextBox      tb = new TextBox();
                    tb.Left   = x;
                    tb.Top    = y;
                    tb.Text   = fp.Value;
                    tb.Parent = gbParam;
                    tb.Leave += ehLeave;

                    int k = x + tb.Width + 6;
                    if (fp.ParamType == FormulaParamType.Double)
                    {
                        Label l = new Label();
                        l.AutoSize = true;
                        l.Text     = "(" + fp.MinValue + "--" + fp.MaxValue + ")";
                        l.Left     = k;
                        l.Top      = y + 3;
                        l.Parent   = gbParam;
                        k         += l.Right;
                    }

                    switch (fb.Params[i].ParamType)
                    {
                    case FormulaParamType.Indicator:
                        CreateSelectButton(gbParam, ilFormula, k + 6, y, 1, tb, new EventHandler(SelectFormula_Click));
                        break;

                    case FormulaParamType.Symbol:
                        CreateSelectButton(gbParam, ilFormula, k + 6, y, 2, tb, new EventHandler(SelectSymbol_Click));
                        break;
                    }

                    y += h;
                }
            }
        }
        /// <summary>
        /// 获取sensor实例
        /// </summary>
        /// <param name="sensor"></param>
        /// <returns></returns>
        private Entity.Config.Sensor GetSensor(T_DIM_SENSOR sensor)
        {
            using (var db = new SecureCloud_Entities())
            {
                if (sensor == null)
                {
                    return(null);
                }

                var sensinfo = (from p in db.T_DIM_SENSOR_PRODUCT
                                from s in db.T_DIM_PROTOCOL_TYPE
                                from f in db.T_DIM_SAFETY_FACTOR_TYPE
                                where p.PROTOCOL_ID == s.PROTOCOL_ID && p.PRODUCT_ID == sensor.PRODUCT_SENSOR_ID && f.SAFETY_FACTOR_TYPE_ID == sensor.SAFETY_FACTOR_TYPE_ID
                                select new { p.PRODUCT_ID, p.PRODUCT_CODE, p.FORMAULAID, s.PROTOCOL_CODE, f.THEMES_TABLE_NAME, f.THEMES_COLUMNS })
                               .FirstOrDefault();
                string dtucode = (from d in db.T_DIM_REMOTE_DTU
                                  where d.ID == sensor.DTU_ID
                                  select d.REMOTE_DTU_NUMBER).FirstOrDefault();
                if (sensinfo == null)
                {
                    return(null);
                }

                var sensorinfo = new Entity.Config.Sensor
                {
                    SensorID        = (uint)sensor.SENSOR_ID,
                    StructId        = sensor.STRUCT_ID == null ? 0 : (uint)sensor.STRUCT_ID,
                    DtuID           = sensor.DTU_ID == null ? 0 : (uint)sensor.DTU_ID,
                    DtuCode         = dtucode,
                    ModuleNo        = sensor.MODULE_NO == null ? 0 : (uint)sensor.MODULE_NO,
                    ChannelNo       = sensor.DAI_CHANNEL_NUMBER == null ? 0 : (uint)sensor.DAI_CHANNEL_NUMBER,
                    Name            = sensor.SENSOR_LOCATION_DESCRIPTION,
                    ProtocolType    = Convert.ToUInt32(sensinfo.PROTOCOL_CODE),
                    FormulaID       = sensinfo.FORMAULAID == null ? 0 : (uint)sensinfo.FORMAULAID,
                    FactorType      = sensor.SAFETY_FACTOR_TYPE_ID == null ? 0 : (uint)sensor.SAFETY_FACTOR_TYPE_ID,
                    FactorTypeTable = sensinfo.THEMES_TABLE_NAME,
                    TableColums     = sensinfo.THEMES_COLUMNS,
                    ProductCode     = sensinfo.PRODUCT_CODE,
                    ProductId       = sensinfo.PRODUCT_ID,
                    SensorType      = (SensorType)sensor.Identification,
                    //TODO 3-3
                    UnEnable = sensor.Enable
                };
                if (sensinfo.FORMAULAID != null)
                {
                    var pname = (from pf in db.T_DIM_FORMULA_PARA
                                 from pn in db.T_DIM_FORMULA_PARA_NAME
                                 where pf.ParaNameID == pn.ParaNameID && pf.FormulaID == sensinfo.FORMAULAID
                                 orderby pf.Order
                                 select new { pf.FormulaID, pf.FormulaParaID, pn.ParaName, pn.ParaAlias, pf.Order }
                                 ).ToList();
                    //sensorinfo.ParamCount = (ushort)pname.Count;
                    T_DIM_FORMULAID_SET param0 = (from pf in db.T_DIM_FORMULAID_SET
                                                  where pf.SENSOR_ID == sensor.SENSOR_ID
                                                  select pf).ToList().FirstOrDefault();
                    if (param0 == null)
                    {
                        return(sensorinfo);
                    }
                    for (int i = 0; i < pname.Count; i++)
                    {
                        var f = new FormulaParam
                        {
                            FID   = (int)pname[i].FormulaID,
                            PID   = pname[i].FormulaParaID,
                            Index = (int)pname[i].Order,
                            Name  = pname[i].ParaName,
                            Alias = pname[i].ParaAlias
                        };
                        var sp = new SensorParam(f)
                        {
                            Value =
                                Convert.ToDouble(param0.GetType()
                                                 .GetProperty("Parameter" + (i + 1))
                                                 .GetValue(param0, null))
                        };
                        sensorinfo.AddParameter(sp);
                    }
                }
                //else
                //{
                //    sensorinfo.ParamCount = 0;
                //}

                return(sensorinfo);
            }
        }
        /// <summary>
        /// Набор расчетных параметров для обсчета формулы
        /// </summary>
        /// <param name="formulaParams"></param>
        /// <param name="resultTi"></param>
        /// <param name="resultIntegral"></param>
        /// <param name="resultTp"></param>
        /// <param name="resultSection"></param>
        public void BuildVariableParams(IFormulaParam formulaParams, string msTimeZoneId = null, bool isArchTech = false)
        {
            if (_recursionCallStack.Contains(formulaParams.FormulaID))
            {
                throw new FormulaParseException("Обнаружена рекурсия формулы\n[" + GetOperNameFromDB(formulaParams.FormulaID, F_OPERATOR.F_OPERAND_TYPE.Formula, null) + "]");
            }

            _recursionCallStack.Add(formulaParams.FormulaID);

            _formulasTable = formulaParams.FormulasTable;

            int?tpId = null;

            if (formulaParams.tP_CH_ID != null)
            {
                tpId = formulaParams.tP_CH_ID.TP_ID;
            }

            if (Archives == null)
            {
                Archives = new FormulaArchives(isArchTech, tpId);
            }

            //Часовой пояс в котором запрашиваем данные
            //var tz = (string.IsNullOrEmpty(msTimeZoneId) ? formulaParams.MsTimeZoneId : msTimeZoneId);

            var f = GetFormulaByID(formulaParams.FormulaID);

            if (f == null)
            {
                //Ф-ла не описана, либо не входит в наш диапазон
                _recursionCallStack.Remove(formulaParams.FormulaID);
                return;
            }

            foreach (var operators in f.F_OPERATORS)
            {
                var operIdInt = 0;

                if (string.IsNullOrEmpty(operators.OPER_ID))
                {
                    continue;
                }

                if (operators.OPER_TYPE != F_OPERATOR.F_OPERAND_TYPE.Formula && operators.OPER_TYPE != F_OPERATOR.F_OPERAND_TYPE.FormulaConstant)
                {
                    if (int.TryParse(operators.OPER_ID, out operIdInt) == false)
                    {
                        throw new FormulaParseException("Идентификатор ТИ [" + operators.OPER_ID + "] должен быть целочисленным!");
                    }

                    if (!operators.TI_CHANNEL.HasValue)
                    {
                        throw new FormulaParseException("В формуле не указан канал измерения!");
                    }
                }

                switch (operators.OPER_TYPE)
                {
                case F_OPERATOR.F_OPERAND_TYPE.UANode:
                    Archives.FormulaUaNodeVariableDataTypeList.Add(new TUANodeDataId
                    {
                        UANodeId = operIdInt,
                        DataType = (UANodeDataIdDataTypeEnum)operators.TI_CHANNEL.GetValueOrDefault()
                    });
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.Section:
                    Archives.SectionSorted.Add(new TSectionChannel {
                        Section_ID = operIdInt, ChannelType = operators.TI_CHANNEL.Value
                    });
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.TP_channel:
                    HashSet <TP_ChanelType> tpChannelTypes;
                    if (!Archives.TPChanelTypeList.TryGetValue(operIdInt, out tpChannelTypes) || tpChannelTypes == null)
                    {
                        Archives.TPChanelTypeList[operIdInt] = tpChannelTypes = new HashSet <TP_ChanelType>(new TP_ChanelComparer());
                    }

                    tpChannelTypes.Add(new TP_ChanelType
                    {
                        TP_ID           = operIdInt,
                        ChannelType     = operators.TI_CHANNEL.Value,
                        ClosedPeriod_ID = formulaParams.ClosedPeriod_ID,
                    });
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.Integral_Channel:
                    HashSet <TI_ChanelType> integralChannelTypes;
                    if (!Archives.IntegralChanelTypeList.TryGetValue(operIdInt, out integralChannelTypes) || integralChannelTypes == null)
                    {
                        Archives.IntegralChanelTypeList[operIdInt] = integralChannelTypes = new HashSet <TI_ChanelType>(new ITI_ChanelComparer());
                    }

                    integralChannelTypes.Add(new TI_ChanelType
                    {
                        TI_ID           = operIdInt,
                        ChannelType     = operators.TI_CHANNEL.Value,
                        IsCA            = operators.OPER_TYPE == F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel,
                        TP_ID           = tpId,
                        DataSourceType  = InterpretatorParams.DataSourceType,
                        ClosedPeriod_ID = formulaParams.ClosedPeriod_ID,
                        //MsTimeZone = tz,
                    });
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel:
                case F_OPERATOR.F_OPERAND_TYPE.TI_channel:
                    HashSet <TI_ChanelType> tiChannelTypes;
                    if (!Archives.TIChanelTypeList.TryGetValue(operIdInt, out tiChannelTypes) || tiChannelTypes == null)
                    {
                        Archives.TIChanelTypeList[operIdInt] = tiChannelTypes = new HashSet <TI_ChanelType>(new ITI_ChanelComparer());
                    }

                    tiChannelTypes.Add(new TI_ChanelType
                    {
                        TI_ID           = operIdInt,
                        ChannelType     = operators.TI_CHANNEL.Value,
                        IsCA            = operators.OPER_TYPE == F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel,
                        TP_ID           = tpId,
                        DataSourceType  = InterpretatorParams.DataSourceType,
                        ClosedPeriod_ID = formulaParams.ClosedPeriod_ID,
                        //MsTimeZone = tz,
                    });
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.FormulaConstant:
                    Archives.FormulaConstantIds.Add(operators.OPER_ID);
                    break;

                case F_OPERATOR.F_OPERAND_TYPE.Formula:

                    IFormulaParam fId = new FormulaParam
                    {
                        FormulaID     = operators.OPER_ID,
                        FormulasTable = _formulasTable,
                        tP_CH_ID      = formulaParams.tP_CH_ID,
                        MsTimeZoneId  = formulaParams.MsTimeZoneId
                    };

                    //Собираем переменные из вложенной формулы
                    BuildVariableParams(fId, msTimeZoneId);

                    break;
                }
            }

            _recursionCallStack.Remove(formulaParams.FormulaID);
        }
Exemple #14
0
 private void LoadToTree(TreeNode tn, FormulaParam fp)
 {
     tn.Text = fp.Name;
 }
Exemple #15
0
 public SensorParam(FormulaParam temp)
 {
     this.FormulaParam = temp;
 }