Ejemplo n.º 1
0
 public Npc(string i_name, string i_title, string i_race, string i_gender, string i_desc, int i_str, int i_end, int i_tch, int i_mstr, int i_mend, int i_log, int i_lor, int i_cun, int i_cha, int i_grth)
     : base(i_name, i_title, i_race, i_gender, i_desc, i_str, i_end, i_tch, i_mstr, i_mend, i_log, i_lor, i_cun, i_cha, i_grth)
 {
     talk_choices = 0;
     story_choice = 0;
     story_position = 0;
     talk_range = new range(0, 0);
     story_range = new range(0, 0);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 数据转换成单向动态数组
        /// </summary>
        /// <returns>单向动态数组</returns>
        public unsafe list <valueType> GetList()
        {
            list <valueType> .unsafer values = new list <valueType>(array.Length).Unsafer;
            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.Add(array[range.StartIndex]);
                    }
                }
            }

            return(values.List);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取匹配的数据集合
        /// </summary>
        /// <typeparam name="listType">目标数据类型</typeparam>
        /// <param name="getValue">数据转换器</param>
        /// <returns>匹配的数据集合</returns>
        protected unsafe list <listType> getList <listType>(func <valueType, listType> getValue)
        {
            list <listType> .unsafer values = new list <listType>(array.Length).Unsafer;
            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.Add(getValue(array[range.StartIndex]));
                    }
                }
            }

            return(values.List);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 移除数据
        /// </summary>
        /// <param name="value">移除数据匹配值</param>
        /// <returns>是否存在被移除数据</returns>
        public bool Remove(valueType value)
        {
            int index = (getHashCode(value) & indexAnd);

            for (range range = indexs[index]; range.StartIndex != range.EndIndex; ++range.StartIndex)
            {
                valueType nextValue = array[range.StartIndex];
                if (value.Equals(nextValue))
                {
                    indexs[index].EndIndex  = --range.EndIndex;
                    array[range.StartIndex] = array[range.EndIndex];
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 数据转换成单向动态数组
        /// </summary>
        /// <returns>单向动态数组</returns>
        public unsafe subArray <valueType> GetList()
        {
            subArray <valueType> values = new subArray <valueType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.UnsafeAdd(array[range.StartIndex]);
                    }
                }
            }

            return(values);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 移除数据
        /// </summary>
        /// <typeparam name="keyType">哈希键类型</typeparam>
        /// <param name="key">哈希键值</param>
        /// <param name="getKey">哈希键值获取器</param>
        /// <param name="value">被移除数据</param>
        /// <returns>是否存在被移除数据</returns>
        protected bool remove <keyType>(keyType key, func <valueType, keyType> getKey, out valueType value)
        {
            int index = (getHashCode(key) & indexAnd);

            for (range range = indexs[index]; range.StartIndex != range.EndIndex; ++range.StartIndex)
            {
                value = array[range.StartIndex];
                if (getKey(value).Equals(key))
                {
                    indexs[index].EndIndex  = --range.EndIndex;
                    array[range.StartIndex] = array[range.EndIndex];
                    return(true);
                }
            }
            value = default(valueType);
            return(false);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取匹配的数据集合
        /// </summary>
        /// <typeparam name="listType">目标数据类型</typeparam>
        /// <param name="getValue">数据转换器</param>
        /// <returns>匹配的数据集合</returns>
        protected unsafe subArray <listType> getList <listType>(Func <valueType, listType> getValue)
        {
            subArray <listType> values = new subArray <listType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        values.UnsafeAdd(getValue(array[range.StartIndex]));
                    }
                }
            }

            return(values);
        }
Ejemplo n.º 8
0
    void allocate_particle_for_star(int ix)
    {
        if (star_to_particle_range.ContainsKey(ix))
        {
            return;
        }
        int count = set_particles_from_star(nvalidparticle, GameDad.manystars.starlist(ix));

        star_to_particle_range[ix] = new range {
            start  = nvalidparticle,
            length = count
        };
        for (int i = 0; i < count; i++)
        {
            particle_to_first_star[nvalidparticle++] = ix;
        }
    }
Ejemplo n.º 9
0
 public void remove_green(int i)
 {
     if (which_stars_are_green.ContainsKey(i))  // test
     {
         range r     = star_to_particle_range[i];
         int   count = set_particles_from_star(r.start, GameDad.manystars.starlist(i));
         if (count != r.length)
         {
             throw new Exception("starlist length was different from the expected range");
         }
         which_stars_are_green.Remove(i);
         setparticles_later = true;
     }
     else
     {
         throw new System.Exception("not yet green");
     }
 }
Ejemplo n.º 10
0
        /// <summary>
        /// 是否存在匹配数据
        /// </summary>
        /// <param name="isValue">数据匹配器</param>
        /// <returns>是否存在匹配数据</returns>
        public unsafe bool IsExist(func <valueType, bool> isValue)
        {
            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        if (isValue(array[range.StartIndex]))
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 11
0
    public math_questions(difficulty diff)
    {
        switch (diff)
        {
        case difficulty.Easy:
            question_range = new range(0, 10);
            break;

        case difficulty.Normal:
            question_range = new range(10, 20);
            break;

        case difficulty.Hard:
            question_range = new range(20, 50);
            break;

        default:
            question_range = new range(0, 10);
            break;
        }
        Random random = new Random();

        math_operator = RandomEnumValue <operators>();
        first_value   = random.Next(question_range.min, question_range.max);
        second_value  = random.Next(question_range.min, question_range.max);
        switch (math_operator)
        {
        case operators.Addition:
            answer = first_value + second_value;
            break;

        case operators.Subtraction:
            answer = first_value - second_value;
            break;

        case operators.Multiplication:
            answer = first_value * second_value;
            break;

        default:
            answer = 0;
            break;
        }
    }
Ejemplo n.º 12
0
        /// <summary>
        /// 判断给定的Cld_FCBlock的algname,在给定的范围内是否可用
        /// </summary>
        /// <param name="rangename">范围</param>
        /// <param name="id">具体范围的ID</param>
        /// <param name="name">给定的FCBlock的algname</param>
        /// <returns></returns>
        public bool can_use_as_fcblock_algname(range rangename, int id, string name)
        {
            IList <Cld_FCBlock> fcblocks;

            switch (rangename)
            {
            case range.Sheet:
                fcblocks = manager.BlockCRUD.GetCld_FCBlocks_By_Prj_Sheet_ID(id);
                foreach (Cld_FCBlock block in fcblocks)
                {
                    if (block.AlgName.Equals(name))
                    {
                        return(false);
                    }
                }
                break;

            case range.Document:
                fcblocks = manager.BlockCRUD.GetCld_FCBlocks_By_Prj_Document_ID(id);
                foreach (Cld_FCBlock block in fcblocks)
                {
                    if (block.AlgName.Equals(name))
                    {
                        return(false);
                    }
                }
                break;

            case range.Cotroller:
                fcblocks = manager.BlockCRUD.GetCld_FCBlocks_By_Prj_Controller_ID(id);
                foreach (Cld_FCBlock block in fcblocks)
                {
                    if (block.AlgName.Equals(name))
                    {
                        return(false);
                    }
                }
                break;

            default:
                return(false);
            }
            return(false);
        }
            private static void testRanges(){
                //testing ranges 
                string[] letters = { "A", "B", "C", "D" ,"E" , "F", "G", "H", "I", "J", "K", "L", "M" ,"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; 
                //first range a to Z 
                range range1 = 0..;
                //next range is from D to Z
                range range2 = 3..;
                //3rd range B to Y 
                range range3 = 1..^1; 
                //4th range A to X      
                range range4 = 0..^2;

                StringBuilder builder = new StringBuilder();
                range range5 = 1..4;
                foreach(var letter in letters[range5])
                {
                    builder.append($"{letter}"");
                }
                    Console.Writeline(builder.toString());
                }
        public void GenerateData(bool isFail)
        {
            int numEntries, i;
            int minRPM, maxRPM, temp;
            double kmp, hsuPer;
            range minRPMRange = new range();
            range maxRPMRange = new range();
            range hsuRange = new range();
            range tempRange = new range();
            dataTableList = new CustomerDataTableList();
            if (isFail == false)
            {
                hsuRange.min = 50;
                hsuRange.max = 65;
            }
            else
            {
                hsuRange.min = 65;
                hsuRange.max = 70;
            }

            numEntries = random.Next(4, 6);
            CalMinRPMRange(ref minRPMRange);
            CalMaxRPMRange(minRPMRange, ref maxRPMRange);
            CalMaxTempGenerator(ref tempRange);
            avgKval = 0;
            avgHsuPer = 0;
            for (i = 0; i < numEntries; i++)
            {
                minRPM = random.Next(minRPMRange.min, minRPMRange.max);
                maxRPM = random.Next(maxRPMRange.min, maxRPMRange.max);
                hsuPer = CalHSUPerGenerator(hsuRange);
                temp = random.Next(tempRange.min, tempRange.max);
                kmp = CalKMPGenerator();
                avgKval += kmp;
                avgHsuPer += hsuPer;
                dataTableList.AddData(new CustomerDataTable(i + 1, minRPM, maxRPM, temp, kmp, hsuPer));
            }
            avgKval /= numEntries;
            avgHsuPer /= numEntries;
        }
Ejemplo n.º 15
0
        public ActionResult Create([Bind(Include = "id,number,text")] range range, HttpPostedFileBase icon)
        {
            if (icon.ContentType != "image/jpeg" && icon.ContentType != "image/png" && icon.ContentType != "image/gif")
            {
                return(Content("Fayl qebul olunmur"));
            }


            if (ModelState.IsValid)
            {
                string filname = DateTime.Now.ToString("yyyyMMddHHmmss") + icon.FileName;
                var    myfile  = System.IO.Path.Combine(Server.MapPath("~/Uploads"), filname);
                icon.SaveAs(myfile);
                range.icon = filname;
                db.ranges.Add(range);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(range));
        }
Ejemplo n.º 16
0
 public base_personnage(string _name,int _ID,santé _Santé, mana _Mana, energie _Energie, poudre _Poudre, vitess _Vitess, armor _Armor, encaissement _Encaissement, speed _Speed, tenacity _Tenacity, range _Range, damage _Damage, power _Power, life_steal _Life_Steal, vampirisme _Vampirisme, List<tool> _LT)
 {
     name = _name;
     ID = _ID;
     Santé = _Santé;
     Mana = _Mana;
     Energie = _Energie;
     Poudre = _Poudre;
     Vitess = _Vitess;
     Armor = _Armor;
     encaissement = _Encaissement;
     Speed = _Speed;
     Tenacity = _Tenacity;
     Range = _Range;
     Damage = _Damage;
     Power = _Power;
     Life_Steal = _Life_Steal;
     Vampirisme = _Vampirisme;
     List_tool = new List<tool>();
     List_tool = _LT;
 }
Ejemplo n.º 17
0
        /// <summary>
        /// 获取匹配的数据集合
        /// </summary>
        /// <param name="isValue">数据匹配器</param>
        /// <returns>匹配的数据集合</returns>
        protected unsafe subArray <valueType> getList(Func <valueType, bool> isValue)
        {
            subArray <valueType> values = new subArray <valueType>(array.Length);

            fixed(range *indexFixed = indexs)
            {
                for (range *index = indexFixed + indexs.Length; index != indexFixed;)
                {
                    for (range range = *--index; range.StartIndex != range.EndIndex; ++range.StartIndex)
                    {
                        valueType value = array[range.StartIndex];
                        if (isValue(value))
                        {
                            values.UnsafeAdd(value);
                        }
                    }
                }
            }

            return(values);
        }
Ejemplo n.º 18
0
 public ActionResult Edit([Bind(Include = "id,icon,number,text")] range range, HttpPostedFileBase icon)
 {
     if (ModelState.IsValid)
     {
         db.Entry(range).State = EntityState.Modified;
         if (icon != null)
         {
             string filname = DateTime.Now.ToString("yyyyMMddHHmmss") + icon.FileName;
             var    myfile  = System.IO.Path.Combine(Server.MapPath("~/Uploads"), filname);
             icon.SaveAs(myfile);
             range.icon = filname;
         }
         else
         {
             db.Entry(range).Property(r => r.icon).IsModified = false;
         }
         db.Entry(range).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(range));
 }
Ejemplo n.º 19
0
    static void Main(string[] args)
    {
        range[]  range_array  = new range[RANGEOBJSIZE];
        multiQ[] multiQ_array = new multiQ[MULTIQOBJSIZE];

        Initialize_RangeObj(range_array);
        Test_Ping(range_array);
        Show_Range_Stats(range_array);

        Initialize_MultiQObj(multiQ_array);
        Test_Add(multiQ_array);
        Test_Query(multiQ_array);
        Test_Active(multiQ_array);
        Test_Reset(multiQ_array);
        Test_Add(multiQ_array);
        Test_Full(multiQ_array);
        Test_Query(multiQ_array);
        Test_Delete(multiQ_array);
        Show_MultiQ_Stats(multiQ_array);

        Console.WriteLine("Press enter to end program...");
        Console.ReadLine();
    }
Ejemplo n.º 20
0
        public List <Slabes> SetRange()
        {
            Slabes s1 = new Slabes();
            range  r1 = new range();

            r1.min   = 0; r1.max = 250000;
            s1.tax   = 0;
            s1.range = r1;
            sl.Add(s1);

            Slabes s2 = new Slabes();
            range  r2 = new range();

            r2.min   = 250001; r2.max = 500000;
            s2.tax   = 10;
            s2.range = r2;
            sl.Add(s2);

            Slabes s3 = new Slabes();
            range  r3 = new range();

            r3.min   = 500001; r3.max = 1000000;
            s3.tax   = 20;
            s3.range = r3;
            sl.Add(s3);

            Slabes s4 = new Slabes();
            range  r4 = new range();

            r4.min   = 1000001; r4.max = int.MaxValue;
            s4.tax   = 30;
            s4.range = r4;
            sl.Add(s4);

            return(sl);
        }
 For(range, action, 1);
 private double CalHSUPerGenerator(range hsuPerRange)
 {
     double num = random.Next(hsuPerRange.min, hsuPerRange.max);
     num = num * 10 + random.Next(0, 10);
     num = num / 10.0;
     return num;
 }
Ejemplo n.º 23
0
 range = CalculateNewBound(range, operation);
 private void CalMinRPMRange(ref range minRPM)
 {
     int rpm =(int)(random.Next(600, 900)/100.0 + 0.5)*100;
     minRPM.min = rpm;
     minRPM.max = rpm + 100;
 }
 private void CalMaxTempGenerator(ref range tempRange)
 {
     int minTemp = ((int)(random.Next(60,99)/10))*10;
     tempRange.min = minTemp;
     tempRange.max = minTemp+10;
 }
 private void CalMaxRPMRange(range minRPM, ref range maxRPM)
 {
     switch(minRPM.min)
     {
         case 600:
             maxRPM.min = 2000;
             maxRPM.max = 3000;
             break;
         case 700:
             maxRPM.min = 2500;
             maxRPM.max = 3500;
             break;
         case 800:
             maxRPM.min = 3000;
             maxRPM.max = 4000;
             break;
         case 900:
             maxRPM.min = 4000;
             maxRPM.max = 5000;
             break;
     }
 }
Ejemplo n.º 27
0
 public static AxisSpec With(this in AxisSpec spec, Range <int> range, int mid) => new AxisSpec(range, mid, spec.IsReversed, spec.Constraint);
Ejemplo n.º 28
0
        static void Main(string[] args)
        {
            foreach (string arg in args)
            {
                byte[] sub_chain_1 = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };

                string file = arg;
                string dir  = Path.GetDirectoryName(file);

                string[] cue_sheet = File.ReadAllLines(file);

                List <range> ranges = new List <range>();

                List <List <string> > tracks = new List <List <string> >();

                List <string> track = new List <string>();

                //cue parse
                foreach (string s in cue_sheet)
                {
                    if (s.StartsWith("FILE"))
                    {
                        track.Add(s);
                    }
                    if (s.Contains("TRACK"))
                    {
                        track.Add(s);
                    }
                    if (s.Contains("INDEX 01"))
                    {
                        track.Add(s);
                        tracks.Add(track);
                        track = new List <string>();
                    }
                }

                int lead_out = 0;

                foreach (List <string> s in tracks)
                {
                    range r = new range();

                    string file_name = Regex.Match(s[0], "(?<=FILE \").*?(?=\" BINARY)").Value;
                    long   file_size = new FileInfo(Path.Combine(dir, file_name)).Length / 2352;
                    lead_out += (int)file_size;

                    string type = (s[1].Contains("AUDIO")) ? "audio" : s[1].Contains("MODE1") ? "mode1" : "mode2";

                    bool gap = (s[2].Contains("INDEX 01 00:02:00")) ? true : false;

                    if (gap)
                    {
                        ranges.Add(new range()
                        {
                            length = 150, type = "gap"
                        });
                        file_size -= 150;
                    }

                    r.length = file_size;
                    r.type   = type;

                    ranges.Add(r);
                }



                MemoryStream complete_sub_channel = new MemoryStream();

                BinaryWriter bw = new BinaryWriter(complete_sub_channel);

                int absolute_sector_counter = 0;
                int relative_sector_counter = 0;

                int track_n = 1;

                byte postgap = 0;
                byte mode    = 0;

                List <clone_cd> control_ccd = new List <clone_cd>();

                foreach (range r in ranges)
                {
                    if (r.type == "audio")
                    {
                        relative_sector_counter = 0;
                    }

                    switch (r.type)
                    {
                    case "audio":
                        postgap = 0x01;
                        mode    = 0;
                        break;

                    case "mode1":
                        postgap = 0x41;
                        mode    = 1;
                        break;

                    case "mode2":
                        postgap = 0x41;
                        mode    = 2;
                        break;
                    }

                    for (int i = 0; i < r.length; i++)
                    {
                        byte[] sub_channel = new byte[96];

                        if (i == 0 && r.type != "gap")
                        {
                            sub_chain_1.CopyTo(sub_channel, 0);

                            control_ccd.Add(new clone_cd()
                            {
                                offset = absolute_sector_counter, mode = mode, track_n = track_n, adr = postgap & 0xf, control = (postgap >> 4) & 0xf
                            });
                        }

                        sub_channel[12] = postgap;
                        sub_channel[13] = msf_table[track_n];
                        sub_channel[14] = 0x1;

                        CalculateMSF(relative_sector_counter++).CopyTo(sub_channel, 15);
                        CalculateMSF(i + absolute_sector_counter + 150).CopyTo(sub_channel, 19);
                        byte[] crc = BitConverter.GetBytes(CalculateCRC16(sub_channel, 12, 10));
                        sub_channel[22] = crc[1];
                        sub_channel[23] = crc[0];

                        bw.Write(sub_channel);
                    }
                    if (r.type == "gap")
                    {
                        track_n++;
                    }
                    absolute_sector_counter += (int)r.length;
                }

                List <string> CCD = CreateCCD(control_ccd, lead_out);

                File.WriteAllLines("ccd.ccd", CCD);

                string lsd_file = (Directory.GetFiles(dir, "*.lsd").Length == 1) ? Directory.GetFiles(dir, "*.lsd")[0] : string.Empty;
                if (lsd_file != string.Empty)
                {
                    byte[]       lsd = File.ReadAllBytes(lsd_file);
                    BinaryReader br  = new BinaryReader(new MemoryStream(lsd));

                    while (br.BaseStream.Position != br.BaseStream.Length)
                    {
                        byte[] target_msf = br.ReadBytes(3);

                        byte[] chain = br.ReadBytes(12);

                        int offset = msf_table.IndexOf(target_msf[0]) * 60 * 75;
                        offset += msf_table.IndexOf(target_msf[1]) * 75;
                        offset += msf_table.IndexOf(target_msf[2]) - 150;

                        bw.BaseStream.Seek(offset * 96 + 12, SeekOrigin.Begin);
                        bw.Write(chain);
                    }
                }
                //string sbi_file = Directory.GetFiles(dir, "*.sbi")[0];
                //byte[] sbi = File.ReadAllBytes(sbi_file);
                //BinaryReader br = new BinaryReader(new MemoryStream(sbi));
                //
                //string sbi_magic_word = Encoding.ASCII.GetString(br.ReadBytes(3));
                //
                //if (sbi_magic_word == "SBI")
                //{
                //    br.BaseStream.Seek(1, SeekOrigin.Current);
                //    while (br.BaseStream.Position != br.BaseStream.Length)
                //    {
                //        byte[] target_msf = br.ReadBytes(3);
                //        br.BaseStream.Seek(1, SeekOrigin.Current);
                //        byte[] chain = new byte[12];
                //        br.ReadBytes(10).CopyTo(chain, 0);
                //        byte[] crc = BitConverter.GetBytes(CalculateCRC16(chain, 0, 10));
                //        chain[10] = crc[1];
                //        chain[11] = crc[0];
                //
                //        int offset = msf_table.IndexOf(target_msf[0]) * 60 * 75;
                //        offset += msf_table.IndexOf(target_msf[1]) * 75;
                //        offset += msf_table.IndexOf(target_msf[2]) - 150;
                //
                //        bw.BaseStream.Seek(offset * 96 + 12, SeekOrigin.Begin);
                //        bw.Write(chain);
                //    }
                //}


                bw.Close();
                File.WriteAllBytes("sub.sub", complete_sub_channel.ToArray());
            }
        }
Ejemplo n.º 29
0
    public void add_green(int i, greenstar star)
    {
        if (which_stars_are_green.ContainsKey(i))
        {
            throw new System.Exception("already green");
        }
        else
        {
            if (star == null)
            {
                star = new greenstar();
            }
            //Debug.Log("running");
            //Debug.Log(star);
            range r                    = star_to_particle_range[i];
            bool  large_star           = false;
            bool  reveal_neighbourhood = false;
            Color?thecolor             = null;
            switch (star.type)
            {
            case greenstar.Type.Green:
                thecolor             = Config.getcolor(greenstar.StarColor.Green);
                reveal_neighbourhood = true;
                break;

            case greenstar.Type.Red:
                thecolor   = Config.getcolor(greenstar.StarColor.RedLarge);
                large_star = true;
                break;

            case greenstar.Type.Quiet:
                break;

            default:
                throw new Exception("unknown type");
            }
            if (thecolor.HasValue)
            {
                particles[r.start].startColor = thecolor.Value;
                particles[r.start].startSize  = large_star? 0.02f: 0.01f;
                for (int j = 1; j < r.length; j++)
                {
                    //particles[r.start + j].startSize = 0f;
                    particles[r.start + j].startColor = thecolor.Value;
                }
            }
            else
            {
                int count = set_particles_from_star(r.start, GameDad.manystars.starlist(i));
                if (count != r.length)
                {
                    throw new Exception("starlist length was different from the expected range");
                }
            }
            which_stars_are_green[i] = star;
            if (reveal_neighbourhood)
            {
                foreach (var starix in stars_visible_from(GameDad.manystars.getstar(i).vec))
                {
                    allocate_particle_for_star(starix);
                }
            }
            setparticles_later = true;
        }
    }
Ejemplo n.º 30
0
 public base_personnage(santé _Santé, mana _Mana, energie _Energie, poudre _Poudre, vitess _Vitess, armor _Armor, encaissement _Encaissement, speed _Speed, tenacity _Tenacity, range _Range, damage _Damage, power _Power, life_steal _Life_Steal, vampirisme _Vampirisme)
 {
 }
 int pageSize) => (PartitionKeyRange range, QueryState state) => new QueryPartitionRangePageAsyncEnumerator(
 queryDataSource,
 sqlQuerySpec,
 range,
 pageSize,
 cancellationToken: default,
Ejemplo n.º 32
0
        protected override DHJassValue Run()
        {
            trigger t = args["whichTrigger"].HandleValue as trigger;
            if (t == null) return new DHJassHandle(null, 0);

            unit u = args["whichUnit"].HandleValue as unit;
            if (u == null) return new DHJassHandle(null, 0);

            double range = args["range"].RealValue;
            range r = new range(u, range);

            triggerunitinrangeevent ture = new triggerunitinrangeevent(t, r);
            unit.move += ture.OnUnitInRangeEvent;

            return new DHJassHandle(null, ture.handle);
        }
Ejemplo n.º 33
0
    protected override void SolveInstance(Grasshopper.Kernel.IGH_DataAccess DA)
    {
        init();
            _listSrf = new List<Surface>();
            _listCrv = new List<Curve>();
            listPnt = new List<Point3d>();
            List<string> crvTypes = new List<string>();
            List<string> pntHeights = new List<string>();
            if (!DA.GetDataList(0, _listSrf)) { return; }
            if (!DA.GetDataList(1, _listCrv)) { return; }
            if (!DA.GetDataList(2, crvTypes)) { return; }
            if (!DA.GetDataList(3, listPnt)) { listPnt.Clear(); }
            if (!DA.GetData(4, ref globalC)) { return; }

            if (_listCrv.Count != crvTypes.Count) { AddRuntimeMessage(Grasshopper.Kernel.GH_RuntimeMessageLevel.Error, "need types for curves"); return; }

            listSlice = new Dictionary<string, slice>();
            listSlice2 = new Dictionary<string, slice2>();
            listRange = new Dictionary<string, range>();
            listRangeOpen = new Dictionary<string, range>();
            listRangeLeaf = new Dictionary<string, range>();
            listLeaf = new List<leaf>();
            listBranch = new List<branch>();
            listNode=new List<node>();
            myControlBox.clearSliders();
            for (int i = 0; i < _listCrv.Count; i++)
            {
                var branch = new branch();
                branch.crv = _listCrv[i] as NurbsCurve;
                branch.N = branch.crv.Points.Count;
                branch.dom = branch.crv.Domain;
                branch.Dim= branch.crv.Order;
                branch.dDim = branch.crv.Order - 1;
                branch.nElem = branch.N - branch.dDim;
                branch.scaleT = (branch.dom.T1 - branch.dom.T0) / branch.nElem;
                branch.originT = branch.dom.T0;
                if(crvTypes[i].StartsWith("reinforce"))
                {
                    branch.branchType = branch.type.reinforce;
                    var key=crvTypes[i].Replace("reinforce","");
                    branch.sliceKey=key;
                    try{
                        branch.slice=listSlice[key];
                        branch.slice.sliceType = slice.type.fr;
                        branch.slice.lB.Add(branch);
                    }
                    catch (KeyNotFoundException e){
                        listSlice[key]=new slice();
                        branch.slice=listSlice[key];
                        branch.slice.sliceType=slice.type.fr;
                        branch.slice.lB.Add(branch);
                    }
                }
                else if(crvTypes[i].StartsWith("kink"))
                {
                    branch.branchType = branch.type.kink;
                    var key = crvTypes[i].Replace("kink", "");
                    if (key == "") key = "kink"; else key = "kink:" + key;
                    branch.sliceKey = key;
                    try
                    {
                        branch.range = listRange[key];
                        branch.range.rangeType = range.type.lo;
                        branch.range.lb = 0;
                        branch.range.ub = 0;
                        branch.range.lB.Add(branch);

                    }
                    catch (KeyNotFoundException)
                    {
                        listRange[key] = new range();
                        branch.range = listRange[key];
                        branch.range.rangeType = range.type.lo;
                        branch.range.lb = 0;
                        branch.range.ub = 0;
                        branch.range.lB.Add(branch);
                        var adjuster = myControlBox.addRangeSetter(key, (th,sw, lb, ub) =>
                        {
                            if (listRange[key].firstPathDone)
                            {
                                th.setMeasured(listRange[key].lastMin,listRange[key].lastMax);
                            }
                            foreach (var _branch in listRange[key].lB)
                            {
                                if (sw == 0)
                                {
                                    _branch.range.rangeType = range.type.lo;
                                    _branch.range.lb = lb;
                                    _branch.range.ub = 0d;
                                }
                                if (sw == 2)
                                {
                                    _branch.range.rangeType = range.type.ra;
                                    _branch.range.lb = lb;
                                    _branch.range.ub = ub;
                                }
                            }
                        }
                         );
                    }

                }else if(crvTypes[i].StartsWith("open"))
                {
                    branch.branchType = branch.type.open;
                    var key = crvTypes[i].Replace("open", "");
                    if (key == "") key = "open"; else key = "open:" + key;
                    branch.sliceKey = key;
                    try
                    {
                        branch.slice = listSlice[key];
                        branch.slice.sliceType = slice.type.fr;
                        branch.slice.lB.Add(branch);
                    }
                    catch (KeyNotFoundException e)
                    {
                        listSlice[key] = new slice();
                        branch.slice = listSlice[key];
                        branch.slice.sliceType = slice.type.fr;
                        branch.slice.lB.Add(branch);
                    }
                    try
                    {
                        branch.range = listRangeOpen[key];
                        branch.range.rangeType = range.type.lo;
                        branch.range.lb = 0;
                        branch.range.ub = 0;
                        branch.range.lB.Add(branch);
                    }
                    catch (KeyNotFoundException)
                    {
                        listRangeOpen[key] = new range();
                        branch.range = listRangeOpen[key];
                        branch.range.rangeType = range.type.lo;
                        branch.range.lb = 0;
                        branch.range.ub = 0;
                        branch.range.lB.Add(branch);
                        var adjuster = myControlBox.addRangeSetter(key, (th,sw, lb, ub) =>
                        {
                            if (listRangeOpen[key].firstPathDone)
                            {
                                th.setMeasured(listRangeOpen[key].lastMin,listRangeOpen[key].lastMax);
                            }
                            foreach (var _branch in listRangeOpen[key].lB)
                            {
                                if (sw == 0)
                                {
                                    _branch.range.rangeType = range.type.lo;
                                    _branch.range.lb = lb;
                                    _branch.range.ub = 0d;
                                }
                                if (sw == 2)
                                {
                                    _branch.range.rangeType = range.type.ra;
                                    _branch.range.lb = lb;
                                    _branch.range.ub = ub;
                                }
                            }
                        }
                            );
                    }
                }
                else if (crvTypes[i].StartsWith("fix"))
                {
                    branch.branchType = branch.type.fix;
                    var key = crvTypes[i].Replace("fix", "");
                    branch.sliceKey = key;
                    try
                    {
                        branch.slice2 = listSlice2[key];
                    }
                    catch (KeyNotFoundException e)
                    {
                        listSlice2[key] = new slice2();
                        branch.slice2 = listSlice2[key];

                        var slider = myControlBox.addSliderVert(0, 1, 200, 100);
                        slider.Converter = (val) =>
                            {
                                double height = val / 10d - 10d;
                                branch.slice2.height = height;
                                this.ExpirePreview(true);
                                return height;
                            };
                    }
                }else{
                        AddRuntimeMessage(Grasshopper.Kernel.GH_RuntimeMessageLevel.Error, "type should be either of reinforce, kink, fix, or open");
                }
                listBranch.Add(branch);
            }

            for(int i=0;i<_listSrf.Count;i++)
            {
                var srf = _listSrf[i];
                var leaf=new leaf();
                listLeaf.Add(leaf);
                leaf.srf = srf as NurbsSurface;
                leaf.nU = leaf.srf.Points.CountU;
                leaf.nV = leaf.srf.Points.CountV;
                leaf.domU = leaf.srf.Domain(0);
                leaf.domV = leaf.srf.Domain(1);
                leaf.uDim = leaf.srf.OrderU;
                leaf.vDim = leaf.srf.OrderV;
                leaf.uDdim = leaf.srf.OrderU - 1;
                leaf.vDdim = leaf.srf.OrderV - 1;
                leaf.nUelem = leaf.nU - leaf.uDdim;
                leaf.nVelem = leaf.nV - leaf.vDdim;
                leaf.scaleU = (leaf.domU.T1 - leaf.domU.T0) / leaf.nUelem;
                leaf.scaleV = (leaf.domV.T1 - leaf.domV.T0) / leaf.nVelem;
                leaf.originU = leaf.domU.T0;
                leaf.originV = leaf.domV.T0;
                var domainU = leaf.srf.Domain(0);
                var domainV = leaf.srf.Domain(1);
                //Find corresponding curve
                //(0,0)->(1,0)
                var curve = leaf.srf.IsoCurve(0, domainV.T0) as NurbsCurve;
                leaf.flip[0] = findCurve(leaf,ref leaf.branch[0], listBranch, curve);//bottom
                //(1,0)->(1,1)
                curve = leaf.srf.IsoCurve(1, domainU.T1) as NurbsCurve;
                leaf.flip[1] = findCurve(leaf, ref leaf.branch[1], listBranch, curve);//right
                //(1,1)->(0,1)
                curve = leaf.srf.IsoCurve(0, domainV.T1) as NurbsCurve;
                leaf.flip[2] = findCurve(leaf, ref leaf.branch[2], listBranch, curve);//top
                //(0,1)->(0,0)
                curve = leaf.srf.IsoCurve(1, domainU.T0) as NurbsCurve;
                leaf.flip[3] = findCurve(leaf, ref leaf.branch[3], listBranch, curve);//left

                var key = "leaf";
                try
                {
                    leaf.range = listRangeLeaf[key];
                    leaf.range.rangeType = range.type.lo;
                    leaf.range.lb = 0;
                    leaf.range.ub = 0;
                    leaf.range.lL.Add(leaf);
                }
                catch (KeyNotFoundException)
                {
                    listRangeLeaf[key] = new range();
                    leaf.range = listRangeLeaf[key];
                    leaf.range.rangeType = range.type.lo;
                    leaf.range.lb = 0;
                    leaf.range.ub = 0;
                    leaf.range.lL.Add(leaf);
                    var adjuster = myControlBox.addRangeSetter(key, (th, sw, lb, ub) =>
                    {
                        if (listRangeLeaf[key].firstPathDone)
                        {
                            th.setMeasured(listRangeLeaf[key].lastMin, listRangeLeaf[key].lastMax);
                        }
                        foreach (var _leaf in listRangeLeaf[key].lL)
                        {
                            if (sw == 0)
                            {
                                _leaf.range.rangeType = range.type.lo;
                                _leaf.range.lb = lb;
                                _leaf.range.ub = 0d;
                            }
                            if (sw == 2)
                            {
                                _leaf.range.rangeType = range.type.ra;
                                _leaf.range.lb = lb;
                                _leaf.range.ub = ub;
                            }
                        }
                    }
                     );
                }

            }
            // Connect nodes
            foreach (var leaf in listLeaf)
            {
                leaf.globalIndex = new int[leaf.srf.Points.CountU * leaf.srf.Points.CountV];
                for (int j = 0; j < leaf.srf.Points.CountV; j++)
                {
                    for (int i = 0; i < leaf.srf.Points.CountU; i++)
                    {
                        var P = leaf.srf.Points.GetControlPoint(i, j).Location;
                        bool flag = false;
                        foreach (var node in listNode)
                        {
                            if (node.compare(P))
                            {
                                flag = true;
                                node.N++;
                                node.shareL.Add(leaf);
                                node.numberL.Add(i + j * leaf.nU);
                                leaf.globalIndex[i + j * leaf.nU] = listNode.IndexOf(node);
                                break;
                            }
                        }
                        if (!flag)
                        {
                            var newNode = new node();
                            listNode.Add(newNode);
                            newNode.N = 1;
                            newNode.x = P.X;
                            newNode.y = P.Y;
                            newNode.z = P.Z;
                            newNode.shareL.Add(leaf);
                            newNode.numberL.Add(i + j * leaf.nU);
                            leaf.globalIndex[i + j * leaf.nU] = listNode.IndexOf(newNode);
                        }
                    }
                }
            }
            foreach (var branch in listBranch)
            {
                branch.globalIndex = new int[branch.crv.Points.Count];
                for (int i = 0; i < branch.crv.Points.Count; i++)
                {
                    var P = branch.crv.Points[i].Location;
                    bool flag = false;
                    foreach (var node in listNode)
                    {
                        if (node.compare(P))
                        {
                            flag = true;
                            node.N++;
                            node.shareB.Add(branch);
                            node.numberB.Add(i);
                            if (branch.branchType == branch.type.fix)
                            {
                                node.nodeType = node.type.fx;
                            }
                            branch.globalIndex[i] = listNode.IndexOf(node);
                            break;
                        }
                    }
                    if (!flag)
                    {
                        var newNode = new node();
                        listNode.Add(newNode);
                        newNode.N = 1;
                        newNode.shareB.Add(branch);
                        newNode.numberB.Add(i);
                        newNode.x = P.X;
                        newNode.y = P.Y;
                        newNode.z = P.Z;
                        if (branch.branchType == branch.type.fix)
                        {
                            newNode.nodeType = node.type.fx;
                        }
                        branch.globalIndex[i] = listNode.IndexOf(newNode);
                    }
                }
            }
            //multiqudric surface
            var A=new Rhino.Geometry.Matrix(listPnt.Count,listPnt.Count);
            var z=new Rhino.Geometry.Matrix(listPnt.Count,1);
            for(int i=0;i<listPnt.Count;i++)
            {
                for(int j=0;j<listPnt.Count;j++)
                {
                    var pi=listPnt[i];
                    var pj=listPnt[j];
                    A[i,j]=quadFunc(pi.X,pj.X,pi.Y,pj.Y);
                    z[i,0]=pi.Z;
                }
            }
            A.Invert(0.0);  //this parameter should be 0.0
            var c=A*z;
            globalCoeff=new double[listPnt.Count];
            for(int i=0;i<listPnt.Count;i++)
            {
                globalCoeff[i]=c[i,0];
            }
            targetSrf=new List<Point3d>();
            globalFunc=(xi,yi)=>{
                double Z=0;
                for(int j=0;j<listPnt.Count;j++)
                {
                    Z=Z+globalCoeff[j]*quadFunc(xi,listPnt[j].X,yi,listPnt[j].Y);
                }
                return Z;
                };
            foreach (var leaf in listLeaf)
            {
                var domU = leaf.domU;
                var domV = leaf.domV;
                for (double i = 0; i <= 1.0; i += 0.05)
                {
                    for (double j = 0; j < 1.0; j += 0.05)
                    {
                        double u = domU[0] + i * (domU[1] - domU[0]);
                        double v = domV[0] + j * (domV[1] - domV[0]);
                        Rhino.Geometry.Point3d P;
                        Rhino.Geometry.Vector3d[] V;
                        leaf.srf.Evaluate(u, v, 0, out P, out V);
                        var newP = new Rhino.Geometry.Point3d(P.X, P.Y, globalFunc(P.X, P.Y));
                        targetSrf.Add(newP);
                    }
                }
            }
    }
Ejemplo n.º 34
0
 select(range, delimiters.GetOrDefault()?.ToArray()))