示例#1
0
    public static UnitModel create(int startLevel, UnitType type, List <WeaponModel> carriedWeapons, bool randomLevelUp, Orientation initialOrientation)
    {
        UnitModel unit = new UnitModel();

        unit.orientation     = initialOrientation;
        unit._level          = 1;
        unit._template       = UnitTemplate.Find(type);
        unit._carriedWeapons = carriedWeapons;
        unit._agility        = unit._template.BaseAgility();
        unit._bravery        = unit._template.BaseBravery();
        unit._dexterity      = unit._template.BaseDexterity();
        unit._endurance      = unit._template.BaseEndurance();
        unit._hitPoints      = unit._template.BaseHitPoints();
        unit._strength       = unit._template.BaseStrength();

        if (randomLevelUp)
        {
            while (unit._level < startLevel)
            {
                unit.levelUp();
            }
        }
        else
        {
            unit._agility   += (int)((startLevel - 1) * unit._template.BaseGrowthAgility());
            unit._bravery   += (int)((startLevel - 1) * unit._template.BaseGrowthBravery());
            unit._dexterity += (int)((startLevel - 1) * unit._template.BaseGrowthDexterity());
            unit._endurance += (int)((startLevel - 1) * unit._template.BaseGrowthEndurance());
            unit._hitPoints += (int)((startLevel - 1) * unit._template.BaseGrowthHitPoints());
            unit._strength  += (int)((startLevel - 1) * unit._template.BaseGrowthStrength());
        }


        return(unit);
    }
        // GET: Admin/UnitTemplates/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UnitTemplate unitTemplate = Data.UnitTemplates.GetById(id);

            if (unitTemplate == null)
            {
                return(HttpNotFound());
            }

            var unitTemplateViewModel = this.Mapper.Map <UnitTemplateViewModel>(unitTemplate);

            if (!TempData.ContainsKey("image"))
            {
                TempData.Add("image", unitTemplate.Image);
            }
            else
            {
                TempData["image"] = unitTemplate.Image;
            }

            ViewBag.ImageId = new SelectList(this.Data.UnitTemplates.All(), "Id", "Name", unitTemplateViewModel.Id);
            return(View(unitTemplateViewModel));
        }
    public static GameObject CreateUnit(UnitTemplate template, Vector3 pos)
    {
        GameObject unit = GameObject.Instantiate(template.CurrentState.Model, pos, Quaternion.identity);

        unit.GetComponent <AmmunitionsPresenter>().Place(template.PlacedAmmunitions);
        return(unit);
    }
示例#4
0
        public static void buildUnit(IStarWars3DB context, int playerId, UnitType unitType, CellDTO location)
        {
            Cell cell = FreeCell(context, location.row, location.col);

            //UnitLevel uLevel = GetUnitLevel(context, unitType, 0);

            if (cell != null)
            {
                UnitTemplate unitTemplate = context.UnitTemplates.FirstOrDefault(t => t.UnitType == unitType);
                if (unitTemplate == null)
                {
                    throw new NullReferenceException("BuildFighter: unitTemplate not found!");
                }

                Unit unit = new Unit()
                {
                    UnitTemplateId  = unitTemplate.Id,
                    PlayerId        = playerId,
                    Location        = cell,
                    Armor           = unitTemplate.Armor,
                    Damage          = unitTemplate.Damage,
                    Shield          = unitTemplate.Shield,
                    Range           = unitTemplate.Range,
                    Speed           = unitTemplate.Speed,
                    Health          = unitTemplate.Health,
                    FuelConsumption = unitTemplate.FuelConsumption
                };

                context.Units.Add(unit);
                context.SaveChanges();
            }
        }
示例#5
0
    static UnitTemplate()
    {
        UnitTemplate solarKnight = new UnitTemplate();

        solarKnight._type                = UnitType.SolarKnight;
        solarKnight._weaponMastered      = WeaponClass.Sword;
        solarKnight._baseHitPoints       = 10;
        solarKnight._baseStrenght        = 3;
        solarKnight._baseDexterity       = 3;
        solarKnight._baseEndurance       = 3;
        solarKnight._baseAgility         = 3;
        solarKnight._baseBravery         = 5;
        solarKnight._baseGrowthHitPoints = 0.5f;
        solarKnight._baseGrowthStrength  = 0.4f;
        solarKnight._baseGrowthDexterity = 0.2f;
        solarKnight._baseGrowthAgility   = 0.2f;
        solarKnight._baseGrowthEndurance = 0.2f;
        solarKnight._baseGrowthBravery   = 0.2f;
        solarKnight._mobility            = new int[2] {
            4, 5
        };
        solarKnight._armorBlunt = new int[2] {
            1, 2
        };
        solarKnight._armorPiercing = new int[2] {
            0, 1
        };
        solarKnight._armorSlash = new int[2] {
            2, 3
        };
        solarKnight._resistance = new int[2] {
            0, 1
        };
        unitTemplates.Add(UnitType.SolarKnight, solarKnight);
    }
        public ActionResult DeleteConfirmed(int id)
        {
            UnitTemplate unitTemplate = Data.UnitTemplates.GetById(id);

            Data.UnitTemplates.Delete(unitTemplate);
            Data.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#7
0
    private void Start()
    {
        template = Instantiate <UnitTemplate>(template);        //we copy the template otherwise it's going to overwrite the original asset!

        //Set some defaults, including the default state
        SetSelected(false);
        Guard();
    }
示例#8
0
        private static Chapter BuildChapterFromUnitTemplate(UnitTemplate rootTemplate, IEnumerable <PlayerSoldier> soldiers)
        {
            Chapter chapter = new Chapter(rootTemplate.GenerateUnitFromTemplateWithoutChildren("Heart of the Emperor"), soldiers);

            BuildUnitTreeHelper(chapter.OrderOfBattle, rootTemplate);
            chapter.PopulateSquadMap();
            return(chapter);
        }
示例#9
0
        public static IStorage AsStorage(UnitTemplate unit)
        {
            if (!IsStorage(unit))
            {
                throw new InvalidOperationException("This unit is not a storage");
            }

            return(unit as IStorage);
        }
示例#10
0
        public static IAbilities AsExtractor(UnitTemplate unit)
        {
            if (!IsExtractor(unit))
            {
                throw new InvalidOperationException("This unit is not an extractor");
            }

            return(unit as IAbilities);
        }
示例#11
0
        public static IBuilder AsBuilder(UnitTemplate unit)
        {
            if (!IsBuilder(unit))
            {
                throw new InvalidOperationException("This unit is not a builder");
            }

            return(unit as IBuilder);
        }
示例#12
0
        public static IResearcher AsResearcher(UnitTemplate unit)
        {
            if (!IsResearcher(unit))
            {
                throw new InvalidOperationException("This unit is not a storage");
            }

            return(unit as IResearcher);
        }
示例#13
0
        public static IAttacker AsAttacker(UnitTemplate unit)
        {
            if (!IsAttacker(unit))
            {
                throw new InvalidOperationException("This unit is not an attacker");
            }

            return(unit as IAttacker);
        }
示例#14
0
        public static IMobile AsMobile(UnitTemplate unit)
        {
            if (!IsMobile(unit))
            {
                throw new InvalidOperationException("This unit is not mobile");
            }

            return(unit as IMobile);
        }
示例#15
0
        public static Unit GenerateArmy(int armyId, Faction faction)
        {
            UnitTemplate template = faction.UnitTemplates.Values
                                    .Where(ut => ut.IsTopLevelUnit)
                                    .ToList()[armyId];
            Unit root = CreateUnit(template);

            return(root);
        }
示例#16
0
    /*private CenterObject GetCenter(JSONObject l_Center, Vector2 p_Pos) {
     *  switch (l_Center.GetField(FIELD_TYPE).str) {
     *      default: return new CenterObject() as CenterObject;
     *  }
     * }*/

    private Unit GetContent(JSONObject l_Content, Vector2 p_Pos)
    {
        string       l_SubType  = l_Content.GetField(FIELD_TYPE).str;
        string       l_Type     = l_SubType.Substring(l_SubType.IndexOf("_") + 1);
        UnitTemplate l_Template = DataManager.instance.GetUnitTemplate(l_Type);

        switch (l_Type)
        {
        default: return(new Unit(l_SubType, p_Pos, l_Template));
        }
    }
示例#17
0
        /// <summary>
        /// 3.Portal 网站主体的ManageService工具类
        /// </summary>
        /// [模板文件]:service/manageservice.txt
        /// 生成文件名称:ManageService.cs
        private void CreateManageService()
        {
            string Content = "";
            string ClassName, InstanceName, Table_Comment, UnitTemplate;
            string ServiceDefine = "", ServiceMethod = "";
            //读取原文件内容到内存
            string Template_Name = @"AutoCode/Model/service/manageservice.txt";

            Content = UtilFile.ReadFile2String(Template_Name);

            foreach (string Table_Name in TableList)
            {
                ClassName     = Table_Name;
                Table_Comment = "";
                if (TableInfoList.ContainsKey(Table_Name))
                {
                    Table_Comment = TableInfoList[Table_Name]["Comment"];
                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    if (t_c.Length > 1)
                    {
                        Table_Comment = t_c[0];
                    }
                }
                InstanceName   = UtilString.LcFirst(ClassName);
                UnitTemplate   = @"
        /// <summary>
        /// {$Table_Comment}服务
        /// </summary>
        private static IService{$ClassName} {$InstanceName}Service;";
                UnitTemplate   = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                UnitTemplate   = UnitTemplate.Replace("{$ClassName}", ClassName);
                UnitTemplate   = UnitTemplate.Replace("{$Table_Comment}", Table_Comment);
                ServiceDefine += UnitTemplate;
                UnitTemplate   = @"
        /// <summary>
        /// 服务:{$Table_Comment}
        /// </summary>
        public static IService{$ClassName} {$ClassName}Service()
        {
            Init();
            if ({$InstanceName}Service == null) {$InstanceName}Service = new Service{$ClassName}();
            return {$InstanceName}Service;
        }";
                UnitTemplate   = UnitTemplate.Replace("{$InstanceName}", InstanceName);
                UnitTemplate   = UnitTemplate.Replace("{$ClassName}", ClassName);
                UnitTemplate   = UnitTemplate.Replace("{$Table_Comment}", Table_Comment);
                ServiceMethod += UnitTemplate;
            }
            Content = Content.Replace("{$ServiceDefine}", ServiceDefine);
            Content = Content.Replace("{$ServiceMethod}", ServiceMethod);

            //存入目标文件内容
            UtilFile.WriteString2File(Save_Dir + "ManageService.cs", Content);
        }
示例#18
0
    void Start()
    {
        UnitTemplate template = ScriptableObject.CreateInstance <UnitTemplate>();

        template.BaseState = Unit;
        template.AddAmmuniotion(Unit.Slots[0], Ammunition); //добавить аммуницию к подходящему слоту
        //через этот метод добавить шлем и перчатки

        UnityFactory.CreateUnit(template, Vector3.zero);

        StateText.text = string.Format("Speed - {0}\nHealth - {1}", template.CurrentState.Speed, template.CurrentState.Health);
    }
示例#19
0
    public Unit SpawnUnit(UnitTemplate unitInfoTemplate, Transform spawnPosition)
    {
        int prefabIdx = _factoryController.GetIndex(unitInfoTemplate);

        Unit newUnit = Instantiate(
            _unitPrefabs[prefabIdx],
            spawnPosition.position,
            spawnPosition.rotation,
            transform);

        _factoryController.PassUnitToManager(newUnit);
        return(newUnit);
    }
示例#20
0
 public Unit(string p_Type, Vector2 p_Pos, UnitTemplate p_Template) : base(p_Type, p_Pos, CONTENT)
 {
     maxHP     = p_Template.maxHP;
     currentHP = maxHP;
     maxMP     = p_Template.maxMP;
     currentMP = maxMP;
     maxAP     = p_Template.maxAP;
     currentAP = maxAP;
     inventory = new Dictionary <string, Item>();
     foreach (string l_Item in p_Template.inventory)
     {
         inventory.Add(l_Item, new Item(DataManager.instance.GetItemTemplate(l_Item)));
     }
     hasPlayed = false;
 }
        // GET: Admin/UnitTemplates/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UnitTemplate unitTemplate = Data.UnitTemplates.GetById(id);

            if (unitTemplate == null)
            {
                return(HttpNotFound());
            }
            var unitTemplateViewModel = this.Mapper.Map <UnitTemplateViewModel>(unitTemplate);

            return(View(unitTemplateViewModel));
        }
示例#22
0
        private Dictionary <int, List <UnitTemplate> > GetUnitTemplatesByFactionId(IDbConnection connection,
                                                                                   Dictionary <int, List <int> > unitTemplateTree,
                                                                                   Dictionary <int, List <SquadTemplate> > unitSquadMap,
                                                                                   Dictionary <int, SquadTemplate> squadTemplateMap)
        {
            Dictionary <int, List <UnitTemplate> > factionUnitTemplateMap = new Dictionary <int, List <UnitTemplate> >();
            Dictionary <int, UnitTemplate>         unitTemplateMap        = new Dictionary <int, UnitTemplate>();
            IDbCommand command = connection.CreateCommand();

            command.CommandText = "SELECT * FROM UnitTemplate";
            var reader = command.ExecuteReader();

            while (reader.Read())
            {
                int           id        = reader.GetInt32(0);
                int           factionId = reader.GetInt32(1);
                string        name      = reader[2].ToString();
                bool          isTop     = (bool)reader[3];
                SquadTemplate hqSquad;
                if (reader[4].GetType() != typeof(DBNull))
                {
                    hqSquad = squadTemplateMap[reader.GetInt32(4)];
                }
                else
                {
                    hqSquad = null;
                }

                if (!factionUnitTemplateMap.ContainsKey(factionId))
                {
                    factionUnitTemplateMap[factionId] = new List <UnitTemplate>();
                }
                UnitTemplate unitTemplate = new UnitTemplate(id, name, isTop, hqSquad, unitSquadMap[id]);
                factionUnitTemplateMap[factionId].Add(unitTemplate);
                unitTemplateMap[id] = unitTemplate;
            }

            // hydrate unit children
            foreach (KeyValuePair <int, List <int> > kvp in unitTemplateTree)
            {
                unitTemplateMap[kvp.Key].SetChildUnits(kvp.Value.Select(i => unitTemplateMap[i]).ToList());
            }

            return(factionUnitTemplateMap);
        }
示例#23
0
        private static Unit CreateUnit(UnitTemplate template)
        {
            Unit unit = template.GenerateUnitFromTemplateWithoutChildren(template.Name);

            foreach (UnitTemplate childUnit in template.GetChildUnits())
            {
                unit.ChildUnits.Add(CreateUnit(childUnit));
            }

            if (unit.HQSquad != null)
            {
                AddSquad(unit.HQSquad);
            }

            foreach (Squad squad in unit.Squads)
            {
                AddSquad(squad);
            }
            return(unit);
        }
        public ActionResult Edit(UnitTemplateViewModel unitTemplateViewModel)
        {
            if (ModelState.IsValid)
            {
                UnitTemplate unitTemplate = this.Mapper.Map <UnitTemplate>(unitTemplateViewModel);
                if (unitTemplateViewModel.ImageFromView == null)
                {
                    unitTemplate.Image = (byte[])TempData["image"];
                }

                if (TempData.ContainsKey("image"))
                {
                    TempData.Remove("image");
                }

                this.Data.UnitTemplates.Update(unitTemplate);
                this.Data.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ImageId = new SelectList(this.Data.UnitTemplates.All(), "Id", "Name", unitTemplateViewModel.Id);
            return(View(unitTemplateViewModel));
        }
示例#25
0
        private static void BuildUnitTreeHelper(Unit rootUnit, UnitTemplate rootTemplate)
        {
            string[] companyStrings = { "First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth", "Ninth", "Tenth" };
            int      stringIndex    = 0;

            foreach (UnitTemplate child in rootTemplate.GetChildUnits())
            {
                string name;
                if (child.Name.Contains("Company"))
                {
                    name = companyStrings[stringIndex] + " Company";
                    stringIndex++;
                }
                else
                {
                    name = child.Name;
                }
                Unit newUnit = child.GenerateUnitFromTemplateWithoutChildren(name);
                rootUnit.ChildUnits.Add(newUnit);
                newUnit.ParentUnit = rootUnit;
                BuildUnitTreeHelper(newUnit, child);
            }
        }
示例#26
0
文件: Faction.cs 项目: MassonC/MyRTS
 public void AddWorldObject(UnitTemplate unit)
 {
     availableUnits.Add(unit);
 }
示例#27
0
        public static void HandleCreatureQueryResponse(Packet packet)
        {
            var entry = packet.ReadEntry("Entry"); // +5

            var creature = new UnitTemplate();
            var hasData  = packet.ReadBit(); //+16

            if (!hasData)
            {
                return; // nothing to do
            }
            creature.DisplayIds  = new uint[4];
            creature.KillCredits = new uint[2];

            var bits24     = packet.ReadBits(11);      //+7
            var qItemCount = packet.ReadBits(22);      //+72
            var bits1C     = (int)packet.ReadBits(11); //+9

            var stringLens = new int[4][];

            for (var i = 0; i < 4; i++)
            {
                stringLens[i]    = new int[2];
                stringLens[i][0] = (int)packet.ReadBits(11);
                stringLens[i][1] = (int)packet.ReadBits(11);
            }

            creature.RacialLeader = packet.ReadBit("Racial Leader"); //+68
            var bits2C = packet.ReadBits(6);                         //+136

            if (bits1C > 1)
            {
                packet.ReadCString("String1C");
            }

            creature.KillCredits[0] = packet.ReadUInt32();                                        //+27
            creature.DisplayIds[3]  = packet.ReadUInt32();                                        //+32
            creature.DisplayIds[2]  = packet.ReadUInt32();                                        //+31
            creature.Expansion      = packet.ReadEnum <ClientType>("Expansion", TypeCode.UInt32); //+24
            creature.Type           = packet.ReadEnum <CreatureType>("Type", TypeCode.Int32);     //+12
            creature.Modifier1      = packet.ReadSingle("Modifier 1");                            //+15

            //for (var i = 0; i < 2; ++i)
            //{
            creature.TypeFlags  = packet.ReadEnum <CreatureTypeFlag>("Type Flags", TypeCode.UInt32);
            creature.TypeFlags2 = packet.ReadUInt32("Creature Type Flags 2");     // Missing enum
            //}

            creature.Rank       = packet.ReadEnum <CreatureRank>("Rank", TypeCode.Int32); //+14
            creature.MovementId = packet.ReadUInt32("Movement ID");                       //+23

            var name       = new string[4];
            var femaleName = new string[4];

            for (var i = 0; i < 4; ++i)
            {
                if (stringLens[i][1] > 1)
                {
                    femaleName[i] = packet.ReadCString("Female Name", i);
                }
                if (stringLens[i][0] > 1)
                {
                    name[i] = packet.ReadCString("Name", i);
                }
            }
            creature.Name       = name[0];
            creature.femaleName = femaleName[0];

            if (bits24 > 1)
            {
                creature.SubName = packet.ReadCString("Sub Name");
            }

            creature.DisplayIds[0] = packet.ReadUInt32(); //+29
            creature.DisplayIds[1] = packet.ReadUInt32(); //+30

            if (bits2C > 1)
            {
                creature.IconName = packet.ReadCString("Icon Name"); //+100
            }
            creature.QuestItems = new uint[qItemCount];
            for (var i = 0; i < qItemCount; ++i)
            {
                creature.QuestItems[i] = (uint)packet.ReadEntry <Int32>(StoreNameType.Item, "Quest Item", i); //+72
            }
            creature.KillCredits[1] = packet.ReadUInt32();                                                    //+28
            creature.Modifier2      = packet.ReadSingle("Modifier 2");                                        //+16
            creature.Family         = packet.ReadEnum <CreatureFamily>("Family", TypeCode.Int32);             //+13

            for (var i = 0; i < 4; ++i)
            {
                packet.AddValue("Display ID", creature.DisplayIds[i], i);
            }
            for (var i = 0; i < 2; ++i)
            {
                packet.AddValue("Kill Credit", creature.KillCredits[i], i);
            }

            packet.AddSniffData(StoreNameType.Unit, entry.Key, "QUERY_RESPONSE");

            Storage.UnitTemplates.Add((uint)entry.Key, creature, packet.TimeSpan);

            var objectName = new ObjectName
            {
                ObjectType = ObjectType.Unit,
                Name       = creature.Name,
            };

            Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan);
        }
示例#28
0
        public static void HandleCreatureQueryResponse(Packet packet)
        {
            var entry = packet.ReadEntry("Entry");

            if (entry.Value)
            {
                return;
            }

            var creature = new UnitTemplate();

            var name = new string[4];

            for (var i = 0; i < name.Length; i++)
            {
                name[i] = packet.ReadCString("Name", i);
            }
            creature.Name = name[0];

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_1_0_13914))
            {
                var femaleName = new string[4];
                for (var i = 0; i < femaleName.Length; i++)
                {
                    femaleName[i] = packet.ReadCString("Female Name", i);
                }
                creature.FemaleName = femaleName[0];
            }

            creature.SubName = packet.ReadCString("Sub Name");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_0_5_16048))
            {
                packet.ReadCString("Unk String");
            }

            creature.IconName = packet.ReadCString("Icon Name");

            creature.TypeFlags = packet.ReadUInt32E <CreatureTypeFlag>("Type Flags");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_1_0_13914))    // Might be earlier or later
            {
                creature.TypeFlags2 = packet.ReadUInt32("Creature Type Flags 2"); // Missing enum
            }
            creature.Type = packet.ReadInt32E <CreatureType>("Type");

            creature.Family = packet.ReadInt32E <CreatureFamily>("Family");

            creature.Rank = packet.ReadInt32E <CreatureRank>("Rank");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767))
            {
                creature.KillCredits = new uint[2];
                for (var i = 0; i < 2; ++i)
                {
                    creature.KillCredits[i] = packet.ReadUInt32("Kill Credit", i);
                }
            }
            else // Did they stop sending pet spell data after 3.1?
            {
                creature.UnkInt       = packet.ReadInt32("Unk Int");
                creature.PetSpellData = packet.ReadUInt32("Pet Spell Data Id");
            }

            creature.DisplayIds = new uint[4];
            for (var i = 0; i < 4; i++)
            {
                creature.DisplayIds[i] = packet.ReadUInt32("Display ID", i);
            }

            creature.Modifier1 = packet.ReadSingle("Modifier 1");
            creature.Modifier2 = packet.ReadSingle("Modifier 2");

            creature.RacialLeader = packet.ReadBool("Racial Leader");

            var qItemCount = ClientVersion.AddedInVersion(ClientVersionBuild.V3_2_0_10192) ? 6 : 4;

            creature.QuestItems = new uint[qItemCount];

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767))
            {
                for (var i = 0; i < qItemCount; i++)
                {
                    creature.QuestItems[i] = (uint)packet.ReadInt32 <ItemId>("Quest Item", i);
                }

                creature.MovementId = packet.ReadUInt32("Movement ID");
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_1_13164))
            {
                creature.Expansion = packet.ReadUInt32E <ClientType>("Expansion");
            }

            packet.AddSniffData(StoreNameType.Unit, entry.Key, "QUERY_RESPONSE");

            Storage.UnitTemplates.Add((uint)entry.Key, creature, packet.TimeSpan);

            var objectName = new ObjectName
            {
                ObjectType = ObjectType.Unit,
                Name       = creature.Name
            };

            Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan);
        }
示例#29
0
        public static void HandleCreatureQueryResponse(Packet packet)
        {
            var entry = packet.ReadEntry("Entry");

            var creature = new UnitTemplate();
            var hasData  = packet.ReadBit();

            if (!hasData)
            {
                return; // nothing to do
            }
            packet.ResetBitReader();
            var bits4  = packet.ReadBits(11);
            var bits16 = packet.ReadBits(11);
            var bits28 = packet.ReadBits(6);

            creature.RacialLeader = packet.ReadBit("Leader");

            var stringLens = new int[4][];

            for (var i = 0; i < 4; i++)
            {
                stringLens[i]    = new int[2];
                stringLens[i][0] = (int)packet.ReadBits(11);
                stringLens[i][1] = (int)packet.ReadBits(11);
            }

            for (var i = 0; i < 4; ++i)
            {
                if (stringLens[i][0] > 1)
                {
                    creature.Name = packet.ReadCString("Name");
                }
                if (stringLens[i][1] > 1)
                {
                    creature.FemaleName = packet.ReadCString("NameAlt");
                }
            }

            //for (var i = 0; i < 2; ++i)
            //{
            creature.TypeFlags  = packet.ReadUInt32E <CreatureTypeFlag>("Type Flags");
            creature.TypeFlags2 = packet.ReadUInt32("Creature Type Flags 2");
            //}

            creature.Type   = packet.ReadInt32E <CreatureType>("CreatureType");
            creature.Family = packet.ReadInt32E <CreatureFamily>("CreatureFamily");
            creature.Rank   = packet.ReadInt32E <CreatureRank>("Classification");

            creature.KillCredits = new uint[2];
            for (var i = 0; i < 2; ++i)
            {
                creature.KillCredits[i] = packet.ReadUInt32("ProxyCreatureID", i);
            }

            creature.DisplayIds = new uint[4];
            for (var i = 0; i < 4; ++i)
            {
                creature.DisplayIds[i] = packet.ReadUInt32("CreatureDisplayID", i);
            }

            creature.Modifier1 = packet.ReadSingle("HpMulti");
            creature.Modifier2 = packet.ReadSingle("EnergyMulti");

            creature.QuestItems = new uint[6];
            var questItems = packet.ReadInt32("QuestItems");

            creature.MovementId = packet.ReadUInt32("CreatureMovementInfoID");
            creature.Expansion  = packet.ReadUInt32E <ClientType>("RequiredExpansion");
            packet.ReadInt32("FlagQuest");

            if (bits4 > 1)
            {
                creature.SubName = packet.ReadCString("Title");
            }

            if (bits16 > 1)
            {
                packet.ReadCString("TitleAlt");
            }

            if (bits28 > 1)
            {
                creature.IconName = packet.ReadCString("CursorName");
            }

            for (var i = 0; i < questItems; ++i)
            {
                creature.QuestItems[i] = (uint)packet.ReadInt32 <ItemId>("Quest Item", i);
            }

            packet.AddSniffData(StoreNameType.Unit, entry.Key, "QUERY_RESPONSE");

            Storage.UnitTemplates.Add((uint)entry.Key, creature, packet.TimeSpan);

            var objectName = new ObjectName
            {
                ObjectType = ObjectType.Unit,
                Name       = creature.Name
            };

            Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan);
        }
示例#30
0
        public static void HandleCreatureQueryResponse(Packet packet)
        {
            var entry   = packet.ReadEntry("Entry");
            var hasData = packet.ReadBit();

            if (!hasData)
            {
                return; // nothing to do
            }
            var creature = new UnitTemplate();

            var lenS3 = (int)packet.ReadBits(11);

            creature.RacialLeader = packet.ReadBit("Racial Leader");

            var stringLens = new int[4][];

            for (var i = 0; i < 4; i++)
            {
                stringLens[i]    = new int[2];
                stringLens[i][0] = (int)packet.ReadBits(11);
                stringLens[i][1] = (int)packet.ReadBits(11);
            }

            var lenS4      = (int)packet.ReadBits(6);
            var lenS5      = (int)packet.ReadBits(11);
            var qItemCount = packet.ReadBits(22);

            packet.ResetBitReader();

            var name = new string[8];

            for (var i = 0; i < 4; ++i)
            {
                if (stringLens[i][0] > 1)
                {
                    packet.ReadCString("Female Name", i);
                }
                if (stringLens[i][1] > 1)
                {
                    name[i] = packet.ReadCString("Name", i);
                }
            }
            creature.Name = name[0];

            creature.Modifier1 = packet.ReadSingle("Modifier 1");
            if (lenS3 > 1)
            {
                creature.SubName = packet.ReadCString("Sub Name");
            }

            creature.Rank = packet.ReadEnum <CreatureRank>("Rank", TypeCode.Int32);

            creature.QuestItems = new uint[qItemCount];
            for (var i = 0; i < qItemCount; ++i)
            {
                creature.QuestItems[i] = (uint)packet.ReadEntry <Int32>(StoreNameType.Item, "Quest Item", i);
            }

            creature.Type        = packet.ReadEnum <CreatureType>("Type", TypeCode.Int32);
            creature.KillCredits = new uint[2];
            for (var i = 0; i < 2; ++i)
            {
                creature.KillCredits[i] = packet.ReadUInt32("Kill Credit", i);
            }
            creature.Family = packet.ReadEnum <CreatureFamily>("Family", TypeCode.Int32);
            if (lenS4 > 1)
            {
                creature.IconName = packet.ReadCString("Icon Name");
            }

            creature.DisplayIds    = new uint[4];
            creature.DisplayIds[1] = packet.ReadUInt32("Display ID 1");
            creature.DisplayIds[0] = packet.ReadUInt32("Display ID 0");
            creature.MovementId    = packet.ReadUInt32("Movement ID");
            creature.DisplayIds[3] = packet.ReadUInt32("Display ID 3");

            creature.TypeFlags  = packet.ReadEnum <CreatureTypeFlag>("Type Flags", TypeCode.UInt32);
            creature.TypeFlags2 = packet.ReadUInt32("Creature Type Flags 2"); // Missing enum

            if (lenS5 > 1)
            {
                packet.ReadCString("string5");
            }
            creature.DisplayIds[2] = packet.ReadUInt32("Display ID 2");
            creature.Modifier2     = packet.ReadSingle("Modifier 2");
            creature.Expansion     = packet.ReadEnum <ClientType>("Expansion", TypeCode.UInt32);

            packet.AddSniffData(StoreNameType.Unit, entry.Key, "QUERY_RESPONSE");

            Storage.UnitTemplates.Add((uint)entry.Key, creature, packet.TimeSpan);

            var objectName = new ObjectName
            {
                ObjectType = ObjectType.Unit,
                Name       = creature.Name,
            };

            Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan);
        }
示例#31
0
        /// <summary>
        /// 4.实体类有外键的实体类需要生成HttpData 文件
        ///   例如Admin有外键Department_ID,会生成Department的HttpData类【多个文件】
        /// [模板文件]:domain/httpdata.txt|domain/httpdatadefine.txt
        /// [生成文件名称]:ClassName|ClassName
        /// [生成文件后缀名]:.ashx.cs|.ashx"
        /// </summary>
        private void CreateHttpData()
        {
            string Relation_ClassName = "Admin";
            string Relation_InstanceName = "admin";
            string Table_Comment = "系统管理员";
            string Relation_Table_Name, Relation_Column_Name = "", Relation_Column_Level;
            string UnitTemplate, Template_Name, Content, Content_New;
            string ClassName;
            string Column_Name, Column_Comment;

            foreach (string Table_Name in TableList)
            {
                ClassName = Table_Name;
                Dictionary <string, Dictionary <string, string> > FieldInfo = FieldInfos[Table_Name];
                foreach (KeyValuePair <String, Dictionary <string, string> > entry in FieldInfo)
                {
                    Column_Name    = entry.Key;
                    Column_Comment = entry.Value["Comment"];
                    if (Column_Name.Contains("_ID"))
                    {
                        Relation_ClassName  = Column_Name.Replace("_ID", "");
                        Relation_Table_Name = Relation_ClassName;

                        if (TableList.Contains(Relation_ClassName) || (Relation_Table_Name.ToUpper().Equals("PARENT")))
                        {
                            if (Relation_Table_Name.ToUpper().Equals("PARENT"))
                            {
                                string Save_Dir_Tree = Save_Dir + Path.DirectorySeparatorChar + "Tree" + Path.DirectorySeparatorChar;
                                if (!Directory.Exists(Save_Dir_Tree))
                                {
                                    UtilFile.CreateDir(Save_Dir_Tree);
                                }

                                //读取原文件内容到内存
                                Template_Name         = @"AutoCode/Model/domain/httpdatatree.txt";
                                Content               = UtilFile.ReadFile2String(Template_Name);
                                Relation_InstanceName = UtilString.LcFirst(ClassName);
                                Relation_Column_Name  = "";
                                Relation_Column_Level = "";
                                Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[ClassName];
                                foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                {
                                    Relation_Column_Name = relation_entry.Key;
                                    if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                    {
                                        break;
                                    }
                                }

                                foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                {
                                    if (UtilString.Contains(relation_entry.Key.ToUpper(), "LEVEL"))
                                    {
                                        Relation_Column_Level = relation_entry.Key;
                                        break;
                                    }
                                }

                                if (string.IsNullOrEmpty(Relation_Column_Level))
                                {
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "TYPE"))
                                        {
                                            Relation_Column_Level = relation_entry.Key;
                                            break;
                                        }
                                    }
                                    bool IsPermitNull = true;
                                    if (entry.Value["Null"].Equals("否"))
                                    {
                                        IsPermitNull = false;
                                    }
                                    if (IsPermitNull)
                                    {
                                        UnitTemplate = @"
                    int? level=Convert.ToInt16({$InstanceName}.{$Relation_Column_Level});";
                                    }
                                    else
                                    {
                                        UnitTemplate = @"
                    int level=Convert.ToInt16({$InstanceName}.{$Relation_Column_Level});";
                                    }
                                }
                                else
                                {
                                    bool IsPermitNull = true;
                                    if (entry.Value["Null"].Equals("否"))
                                    {
                                        IsPermitNull = false;
                                    }
                                    if (IsPermitNull)
                                    {
                                        UnitTemplate = @"
                    int? level={$InstanceName}.{$Relation_Column_Level};";
                                    }
                                    else
                                    {
                                        UnitTemplate = @"
                    int level={$InstanceName}.{$Relation_Column_Level};";
                                    }
                                }
                                UnitTemplate = UnitTemplate.Replace("{$InstanceName}", Relation_InstanceName);
                                UnitTemplate = UnitTemplate.Replace("{$Relation_Column_Level}", Relation_Column_Level);
                                if (TableInfoList.ContainsKey(ClassName) && TableInfoList[ClassName].ContainsKey("Comment"))
                                {
                                    Table_Comment = TableInfoList[ClassName]["Comment"];
                                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (t_c.Length > 1)
                                    {
                                        Table_Comment = t_c[0];
                                    }
                                }

                                Column_Comment = entry.Value["Comment"];
                                string[] c_c = Column_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                if (c_c.Length >= 1)
                                {
                                    Column_Comment = c_c[0];
                                }
                                Column_Comment = Column_Comment.Replace("标识", "");

                                Content_New = Content.Replace("{$ClassName}", ClassName);
                                Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                                Content_New = Content_New.Replace("{$InstanceName}", Relation_InstanceName);
                                Content_New = Content_New.Replace("{$Relation_Column_Name}", Relation_Column_Name);
                                Content_New = Content_New.Replace("{$Relation_Column_Level_Name}", Relation_Column_Level);
                                Content_New = Content_New.Replace("{$Relation_Column_Level}", UnitTemplate);

                                //存入目标文件内容
                                UtilFile.WriteString2File(Save_Dir_Tree + ClassName + "Tree.ashx.cs", Content_New);

                                //读取原文件内容到内存
                                Template_Name = @"AutoCode/Model/domain/httpdatatreedefine.txt";
                                Content       = UtilFile.ReadFile2String(Template_Name);
                                Content_New   = Content.Replace("{$ClassName}", ClassName);

                                //存入目标文件内容
                                UtilFile.WriteString2File(Save_Dir_Tree + ClassName + "Tree.ashx", Content_New);
                            }
                            else if (TableInfoList.ContainsKey(Relation_Table_Name))
                            {
                                //读取原文件内容到内存
                                Template_Name = @"AutoCode/Model/domain/httpdata.txt";
                                Content       = UtilFile.ReadFile2String(Template_Name);
                                if (TableInfoList.ContainsKey(Relation_ClassName))
                                {
                                    Table_Comment = TableInfoList[Relation_ClassName]["Comment"];
                                    string[] t_c = Table_Comment.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (t_c.Length > 1)
                                    {
                                        Table_Comment = t_c[0];
                                    }
                                    Relation_InstanceName = UtilString.LcFirst(Relation_ClassName);

                                    Dictionary <string, Dictionary <string, string> > Relation_FieldInfo = FieldInfos[Relation_Table_Name];
                                    foreach (KeyValuePair <String, Dictionary <string, string> > relation_entry in Relation_FieldInfo)
                                    {
                                        Relation_Column_Name = relation_entry.Key;
                                        if (UtilString.Contains(relation_entry.Key.ToUpper(), "NAME", "TITLE", "URL"))
                                        {
                                            break;
                                        }
                                    }

                                    Content_New = Content.Replace("{$ClassName}", Relation_ClassName);
                                    Content_New = Content_New.Replace("{$Table_Comment}", Table_Comment);
                                    Content_New = Content_New.Replace("{$InstanceName}", Relation_InstanceName);
                                    Content_New = Content_New.Replace("{$Column_Name}", Column_Name);
                                    Content_New = Content_New.Replace("{$Relation_Column_Name}", Relation_Column_Name);

                                    //存入目标文件内容
                                    UtilFile.WriteString2File(Save_Dir + Relation_ClassName + ".ashx.cs", Content_New);

                                    //读取原文件内容到内存
                                    Template_Name = @"AutoCode/Model/domain/httpdatadefine.txt";
                                    Content       = UtilFile.ReadFile2String(Template_Name);
                                    Content_New   = Content.Replace("{$ClassName}", Relation_ClassName);

                                    //存入目标文件内容
                                    UtilFile.WriteString2File(Save_Dir + Relation_ClassName + ".ashx", Content_New);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#32
0
	public void Init ()
	{
		UnitTemplate template = new UnitTemplate ();
		template.Id = 1;
		template.Name = "狗头人投石者";
		template.Lv = 1;
		template.Ac = 13;
		template.Fortitude = 12;
		template.Reflex = 13;
		template.Will = 12;
		template.Hp = 24;
		template.Initiative = 3;
		template.Speed = 6;
		template.SpriteName = "S";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 2;
		template.Name = "狗头人喽啰";
		template.Lv = 1;
		template.Ac = 15;
		template.Fortitude = 11;
		template.Reflex = 13;
		template.Will = 11;
		template.Hp = 1;
		template.Initiative = 3;
		template.Speed = 6;
		template.SpriteName = "M";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 3;
		template.Name = "狗头人龙盾卫士";
		template.Lv = 2;
		template.Ac = 18;
		template.Fortitude = 14;
		template.Reflex = 13;
		template.Will = 13;
		template.Hp = 36;
		template.Initiative = 4;
		template.Speed = 6;
		template.SpriteName = "D";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 4;
		template.Name = "矮人战士";
		template.Lv = 1;
		template.Ac = 17;
		template.Fortitude = 15;
		template.Reflex = 11;
		template.Will = 12;
		template.Hp = 31;
		template.Initiative = 1;
		template.Speed = 5;
		template.SpriteName = "1";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 5;
		template.Name = "半身人盗贼";
		template.Lv = 1;
		template.Ac = 16;
		template.Fortitude = 11;
		template.Reflex = 16;
		template.Will = 13;
		template.Hp = 25;
		template.Initiative = 4;
		template.Speed = 6;
		template.SpriteName = "2";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 6;
		template.Name = "人类法师";
		template.Lv = 1;
		template.Ac = 14;
		template.Fortitude = 12;
		template.Reflex = 15;
		template.Will = 15;
		template.Hp = 23;
		template.Initiative = 6;
		template.Speed = 6;
		template.SpriteName = "3";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 7;
		template.Name = "半精灵牧师";
		template.Lv = 1;
		template.Ac = 16;
		template.Fortitude = 12;
		template.Reflex = 10;
		template.Will = 15;
		template.Hp = 26;
		template.Initiative = 0;
		template.Speed = 6;
		template.SpriteName = "4";
		templateDic [template.Id] = template;

		template = new UnitTemplate ();
		template.Id = 8;
		template.Name = "龙裔圣武士";
		template.Lv = 1;
		template.Ac = 20;
		template.Fortitude = 14;
		template.Reflex = 12;
		template.Will = 13;
		template.Hp = 27;
		template.Initiative = 0;
		template.Speed = 6;
		template.SpriteName = "5";
		templateDic [template.Id] = template;
	}