Example #1
0
 public void CreateInitTable()
 {
     try
     {
         foreach (BoltModel tmp in Bolts.ToList())
         {
             string zeroTableName = "t_zero_" + tmp.Bolt_id;
             // 零应力表
             string sql1 = "CREATE TABLE IF NOT EXISTS " + zeroTableName +
                           "(Id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                           "Bolt_id VARCHAR NOT NULL, " +
                           "Position INT NOT NULL, " +
                           "Data FLOAT NOT NULL);";
             string logTableName = "t_log_" + tmp.Bolt_id;
             // 测量结果记录表
             string sql2 = "CREATE TABLE IF NOT EXISTS " + logTableName +
                           "(Id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                           "Bolt_id VARCHAR NOT NULL, " +
                           "axialForce FLOAT NOT NULL, " +
                           "timeDelay FLOAT NOT NULL, " +
                           "MaxXcorr FLOAT NOT NULL, " +
                           "CurrentTime VARCHAR NOT NULL);";
             Execute(sql1);
             Execute(sql2);
         }
         Commit();
     }
     catch (Exception e)
     {
         Console.WriteLine("exception:", e.ToString());
         Rollback();
     }
 }
Example #2
0
 private static void AddAmmo(Agent agent, MissionWeapon missionWeapon)
 {
     if (missionWeapon.PrimaryItem.ItemType == ItemObject.ItemTypeEnum.Bow)
     {
         Mod.Log("Adding arrows");
         var ammo = new MissionWeapon(Arrows.GetRandomElement(), Hero.MainHero.ClanBanner);
         Traverse.Create(agent.Equipment).Field <MissionWeapon[]>("_weaponSlots").Value[3] = ammo;
     }
     else
     {
         Mod.Log("Adding bolts");
         var ammo = new MissionWeapon(Bolts.GetRandomElement(), Hero.MainHero.ClanBanner);
         Traverse.Create(agent.Equipment).Field <MissionWeapon[]>("_weaponSlots").Value[3] = ammo;
     }
 }
Example #3
0
        // builds a set of 4 weapons that won't include more than 1 bow or shield, nor any lack of ammo
        internal static Equipment BuildViableEquipmentSet()
        {
            //T.Restart();
            var gear       = new Equipment();
            var haveShield = false;
            var haveBow    = false;

            try
            {
                for (var slot = 0; slot < 4; slot++)
                {
                    EquipmentElement randomElement = default;
                    switch (slot)
                    {
                    case 0:
                    case 1:
                        randomElement = EquipmentItems.GetRandomElement();
                        break;

                    case 2 when !gear[3].IsEmpty:
                        randomElement = EquipmentItems.Where(x =>
                                                             x.Item.ItemType != ItemObject.ItemTypeEnum.Bow &&
                                                             x.Item.ItemType != ItemObject.ItemTypeEnum.Crossbow).ToList().GetRandomElement();
                        break;

                    case 2:
                    case 3:
                        randomElement = EquipmentItems.GetRandomElement();
                        break;
                    }

                    // matches here by obtaining a bow, which then stuffed ammo into [3]
                    if (slot == 3 && !gear[3].IsEmpty)
                    {
                        break;
                    }

                    if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Bow ||
                        randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Crossbow)
                    {
                        if (slot < 3)
                        {
                            // try again, try harder
                            if (haveBow)
                            {
                                slot--;
                                continue;
                            }

                            haveBow    = true;
                            gear[slot] = randomElement;
                            if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Bow)
                            {
                                gear[3] = new EquipmentElement(Arrows.ToList()[Rng.Next(0, Arrows.Count)]);
                            }
                            else if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Crossbow)
                            {
                                gear[3] = new EquipmentElement(Bolts.ToList()[Rng.Next(0, Bolts.Count)]);
                            }

                            continue;
                        }

                        randomElement = EquipmentItems.Where(x =>
                                                             x.Item.ItemType != ItemObject.ItemTypeEnum.Bow &&
                                                             x.Item.ItemType != ItemObject.ItemTypeEnum.Crossbow).ToList().GetRandomElement();
                    }

                    if (randomElement.Item.ItemType == ItemObject.ItemTypeEnum.Shield)
                    {
                        // try again, try harder
                        if (haveShield)
                        {
                            slot--;
                            continue;
                        }

                        haveShield = true;
                    }

                    gear[slot] = randomElement;
                }

                gear[5] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.HeadArmor].GetRandomElement());
                gear[6] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.BodyArmor].GetRandomElement());
                gear[7] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.LegArmor].GetRandomElement());
                gear[8] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.HandArmor].GetRandomElement());
                gear[9] = new EquipmentElement(ItemTypes[ItemObject.ItemTypeEnum.Cape].GetRandomElement());
                //Mod.Log("-----");
                //for (var i = 0; i < 10; i++)
                //{
                //    Mod.Log(gear[i].Item?.Name);
                //}
            }
            catch (Exception ex)
            {
                Mod.Log(ex);
            }

            //Mod.Log($"GEAR ==> {T.ElapsedTicks / 10000F:F3}ms");
            return(gear.Clone());
        }