コード例 #1
0
 private void AddConditions(Dictionary <string, object> conditionsParameters)
 {
     if (conditionsParameters != null)
     {
         foreach (var item in conditionsParameters)
         {
             if (!ConditionValues.ContainsKey(item.Key))
             {
                 ConditionValues.Add(item.Key, item.Value);
             }
         }
     }
 }
コード例 #2
0
        public override LinqDLR2SqlWhereOperator WhereNotIn(object[] args)
        {
            if (args == null || args.Length <= 0) return null;

            var splitchar = ",";
            if (args.Length > 1) splitchar = ComFunc.nvl(args[1]);
            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));
            ConditionValues.Add(pname, splitchar + args[0] + splitchar);
            var re = "";
            re = $"charindex('{splitchar}'{LinkFlag}{ColumnExpress}{LinkFlag}'{splitchar}',{ParamFlag}{pname})<=0";


            return new LinqDLR2SqlWhereOperator(re, ConditionValues);
        }
コード例 #3
0
        /// <summary>
        /// 右模糊匹配操作
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        protected virtual object EndWith(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }

            var pname = "" + Convert.ToInt64(ComFunc.ToTimeStampTS(DateTime.Now).TotalMilliseconds);

            ConditionValues.Add(pname, args[0]);
            var re = "";

            re = $"{ColumnExpress} LIKE {LinkFlag}{ParamFlag}{pname}{LinkFlag}'{LikeMatchFlag}'";

            return(new LinqDLR2SqlWhereOperator(re, ConditionValues));
        }
コード例 #4
0
        protected override object Contains(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }

            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));

            ConditionValues.Add(pname, args[0]);
            var re = "";

            re = $"{ColumnExpress} LIKE CONCAT('{SqlFlags.LikeMatchFlag}',{SqlFlags.ParamFlag}{pname},'{SqlFlags.LikeMatchFlag}')";


            return(new LinqDLR2SqlWhereOperator(re, ConditionValues));
        }
コード例 #5
0
        /// <summary>
        /// 将右侧值转化成对应的表达式,并添加条件值
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        protected virtual string Convert2Express(object v)
        {
            var re = "";

            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));

            //防止有key重复导致的异常
            while (ConditionValues.ContainsKey(pname))
            {
                pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));
            }
            ConditionValues.Add(pname, v);

            re = $"{SqlFlags.ParamFlag}{pname}";


            return(re);
        }
コード例 #6
0
        /// <summary>
        /// 将右侧值转化成对应的表达式,并添加条件值
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        private string Convert2Express(object v)
        {
            var pname = "" + Convert.ToInt64(ComFunc.ToTimeStampTS(DateTime.Now).TotalMilliseconds);
            var re    = "";

            if (v is LinqDLRColumn)
            {
                re = $"{((LinqDLRColumn)v).ColumnExpress}";
            }
            else
            {
                ConditionValues.Add(pname, v);

                re = $"{ParamFlag}{pname}";
            }

            return(re);
        }
コード例 #7
0
        public override LinqDLR2SqlWhereOperator WhereNotIn(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }

            var splitchar = ",";

            if (args.Length > 1)
            {
                splitchar = ComFunc.nvl(args[1]);
            }
            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));

            var re = "";

            ConditionValues.Add(pname, splitchar + args[0] + splitchar);
            re = $"POSITION('{splitchar}'{SqlFlags.LinkFlag}{ColumnExpress}{SqlFlags.LinkFlag}'{splitchar}' in {SqlFlags.ParamFlag}{pname})<=0";


            return(new LinqDLR2SqlWhereOperator(re, ConditionValues));
        }
コード例 #8
0
        public override LinqDLR2SqlWhereOperator WhereIn(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }

            var splitchar = ",";

            if (args.Length > 1)
            {
                splitchar = ComFunc.nvl(args[1]);
            }
            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(4));

            var re = "";

            ConditionValues.Add(pname, splitchar + args[0] + splitchar);
            re = $"locate(concat('{splitchar}',{ColumnExpress},'{splitchar}'),{ParamFlag}{pname})>0";



            return(new LinqDLR2SqlWhereOperator(re, ConditionValues));
        }
コード例 #9
0
        protected override void Load(BinaryReader reader)
        {
            // header (unencrypted)
            Personality = reader.ReadUInt32();                           // 0000
            ushort zero = reader.ReadUInt16();                           // 0004
            ushort checksum = reader.ReadUInt16();                       // 0006

            // read out the main payload, apply xor decryption
            byte[][] blocks = new byte[4][];
            for (int x = 0; x < 4; x++)                                  // 0008
                blocks[x] = reader.ReadBytes(32);

            DecryptBlocks(blocks, checksum);
            ShuffleBlocks(blocks, Personality, true);

            IsBadEgg = ComputeChecksum(blocks) != checksum;

            int ribbons1, ribbons2, ribbons3;

            {
                byte[] block = blocks[0];

                SpeciesID = BitConverter.ToUInt16(block, 0);
                HeldItemID = BitConverter.ToUInt16(block, 2);
                TrainerID = BitConverter.ToUInt32(block, 4);
                Experience = BitConverter.ToInt32(block, 8);
                Happiness = block[12];
                AbilityID = block[13];
                Markings = (Markings)block[14];
                Language = (Languages)block[15];
                EVs = new ByteStatValues(block[16],
                                         block[17],
                                         block[18],
                                         block[19],
                                         block[20],
                                         block[21]);
                ContestStats = new ConditionValues(block[22],
                                                   block[23],
                                                   block[24],
                                                   block[25],
                                                   block[26],
                                                   block[27]);

                ribbons2 = BitConverter.ToInt32(block, 28);
            }

            {
                byte[] block = blocks[1];

                Moves[0] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 0), block[12], block[8]);
                Moves[1] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 2), block[13], block[9]);
                Moves[2] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 4), block[14], block[10]);
                Moves[3] = new MoveSlot(m_pokedex, BitConverter.ToUInt16(block, 6), block[15], block[11]);

                int ivs = BitConverter.ToInt32(block, 16);
                IVs = new IvStatValues(ivs & 0x3fffffff);
                IsEgg = (ivs & 0x40000000) != 0;
                HasNickname = (ivs & 0x80000000) != 0;

                ribbons1 = BitConverter.ToInt32(block, 20);

                byte forme = block[24];
                FatefulEncounter = (forme & 0x01) != 0;
                m_female = (forme & 0x02) != 0;
                m_genderless = (forme & 0x04) != 0;
                FormID = (byte)(forme >> 3);

                ShinyLeaves = (ShinyLeaves)block[25];
                Unknown1 = BitConverter.ToUInt16(block, 26);

                EggLocationID_Plat = BitConverter.ToUInt16(block, 28);
                LocationID_Plat = BitConverter.ToUInt16(block, 30);
            }

            {
                byte[] block = blocks[2];

                NicknameEncoded = new EncodedString4(block, 0, 22);
                Unknown2 = block[22];
                Version = (Versions)block[23];
                ribbons3 = BitConverter.ToInt32(block, 24);
                Unknown3 = BitConverter.ToUInt32(block, 28);
            }

            {
                byte[] block = blocks[3];

                TrainerNameEncoded = new EncodedString4(block, 0, 16);

                // todo: store as DateTime
                EggDate = new byte[3];
                Array.Copy(block, 16, EggDate, 0, 3);
                Date = new byte[3];
                Array.Copy(block, 19, Date, 0, 3);

                EggLocationID = BitConverter.ToUInt16(block, 22);
                LocationID = BitConverter.ToUInt16(block, 24);
                byte pokerusStatus = block[26];
                PokerusDaysLeft = (byte)(pokerusStatus & 0x0f);
                PokerusStrain = (byte)(pokerusStatus >> 4);
                PokeBallID = block[27];

                byte encounter_level = block[28];
                EncounterLevel = (byte)(encounter_level & 0x7f);
                bool trainerFemale = (encounter_level & 0x80) != 0;
                TrainerGender = trainerFemale ? TrainerGenders.Female : TrainerGenders.Male;

                EncounterType = block[29];
                PokeBallID_Hgss = block[30];
                Unknown4 = block[31];
            }

            byte[] ribbons = new byte[12];
            Array.Copy(BitConverter.GetBytes(ribbons1), 0, ribbons, 0, 4);
            Array.Copy(BitConverter.GetBytes(ribbons2), 0, ribbons, 4, 4);
            Array.Copy(BitConverter.GetBytes(ribbons3), 0, ribbons, 8, 4);

            Ribbons.Clear();
            UnknownRibbons.Clear();

            IDictionary<int, Ribbon> allRibbons = m_pokedex.Ribbons(Generations.Generation4);

            for (int x = 0; x < 96; x++)
            {
                if (PokemonPartyBase.HasRibbon(ribbons, x))
                {
                    if (allRibbons.ContainsKey(x))
                        Ribbons.Add(allRibbons[x]);
                    else
                        UnknownRibbons.Add(x);
                }
            }
        }