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); }
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(); } }
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")); }
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(); }
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); }
public static IStorage AsStorage(UnitTemplate unit) { if (!IsStorage(unit)) { throw new InvalidOperationException("This unit is not a storage"); } return(unit as IStorage); }
public static IAbilities AsExtractor(UnitTemplate unit) { if (!IsExtractor(unit)) { throw new InvalidOperationException("This unit is not an extractor"); } return(unit as IAbilities); }
public static IBuilder AsBuilder(UnitTemplate unit) { if (!IsBuilder(unit)) { throw new InvalidOperationException("This unit is not a builder"); } return(unit as IBuilder); }
public static IResearcher AsResearcher(UnitTemplate unit) { if (!IsResearcher(unit)) { throw new InvalidOperationException("This unit is not a storage"); } return(unit as IResearcher); }
public static IAttacker AsAttacker(UnitTemplate unit) { if (!IsAttacker(unit)) { throw new InvalidOperationException("This unit is not an attacker"); } return(unit as IAttacker); }
public static IMobile AsMobile(UnitTemplate unit) { if (!IsMobile(unit)) { throw new InvalidOperationException("This unit is not mobile"); } return(unit as IMobile); }
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); }
/*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)); } }
/// <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); }
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); }
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); }
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)); }
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); }
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)); }
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); } }
public void AddWorldObject(UnitTemplate unit) { availableUnits.Add(unit); }
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); }
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); }
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); }
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); }
/// <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); } } } } } } }
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; }