void Process(Damage damage, Dictionary <object, ShieldData> datas) { foreach (object key in datas.Keys) { if (damage.receiveDamageValue <= 0) { break; } ShieldData data = datas[key]; if (data.Process(damage)) { onTriggerShield.Invoke(key, data); if (!data.valid) { m_RemoveCacha.Add(key); } } } foreach (object key in m_RemoveCacha) { datas.Remove(key); } m_RemoveCacha.Clear(); }
public Shield( App game, Ship ship, LogicalShield logShield, Section sectWithShield, List <PlayerTechInfo> playerTechs, bool isShipAssigned = true) { ShieldData shieldData = ship.ShipClass == ShipClass.Dreadnought ? logShield.DNShieldData : logShield.CRShieldData; game.AddExistingObject((IGameObject)this, new List <object>() { (object)(int)logShield.Type, (object)Shield.GetTotalStructure(game.AssetDatabase, shieldData.Structure, playerTechs), (object)shieldData.RechargeTime, (object)(float)(logShield.Type == LogicalShield.ShieldType.PSI_SHIELD ? 0.0 : (double)Shield.GetShieldRegenPerSec(playerTechs)), (object)ship.ObjectID, (object)sectWithShield.ObjectID, (object)Path.Combine("props\\models\\Shields", Path.GetFileNameWithoutExtension(shieldData.ModelFileName) + "_convex.obj"), (object)Path.Combine("props\\models\\Shields", shieldData.ModelFileName), (object)Path.Combine(shieldData.ImpactEffectName), (object)1000000f, (object)true, (object)isShipAssigned }.ToArray()); this._isShipAssigned = isShipAssigned; }
public static GateTrack Add(ShipInfo ship, GateInfo gate, bool isInner = false, string msgType = "") { return(new GateTrack() { objName = gate.Name, turnStileCode = gate.ID, shipMMSI = ship.MMSI.ToString(), shipName = ship.Name, shipGeoLon = Math.Round(ship.Longitude * 10000000).ToString(), shipGeoLat = Math.Round(ship.Latitude * 10000000).ToString(), shipSpeed = Math.Round(ship.SOG, 1).ToString(), shipCourse = Math.Round(ship.COG).ToString(), shipState = "", shipIMO = ship.IMO_Number.ToString(), shipCallSign = ship.CallSign, shipType = ShieldData.GetShipType(ship.ShipCargoType), msgType = msgType, shipLength = ship.Length.ToString(), shipWidth = ship.Width.ToString(), shipDraftDepth = "0", reportTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), shipDistance = Math.Round(getDis(ship.Longitude, ship.Latitude, gate.Longitude, gate.Latitude)).ToString(), objInner = (isInner?"1":"0"), }); }
void btnCancel_Click(object sender, EventArgs e) { shield = null; this.FormClosing -= FormShieldDetails_FormClosing; this.Close(); }
private void SetItemsData(Collider other) { ItemData eqipedItem = new ItemData(); if (itemData is WeaponData) { var weapon = other.GetComponent <Weapons.Weapon>(); WeaponData weaponData = new WeaponData(); weaponData.Ammo = weapon.MaxAmmo; weaponData.Damage = weapon.Damage; weaponData.Range = weapon.Range; weaponData.TimeBetweenShoot = weapon.SecondsBetweenShoot; weaponData.Dispersion = weapon.Dispersion; weaponData.Name = weapon.Name; eqipedItem = weaponData; } else if (itemData is ShieldData) { var shield = other.GetComponent <Shields.Shield>(); ShieldData shieldData = new ShieldData(); shieldData.Energy = shield.MaxEnergy; shieldData.Name = shield.GetType().ToString(); eqipedItem = shieldData; } SetItemCanvas(itemData, eqipedItem, dropedWeaponLabels); SetItemCanvas(eqipedItem, itemData, equipedWeaponLabels); }
private void repopulateMenuOptions() { itemMenuOptions.Clear(); shieldMenuOptions.Clear(); shieldMenuOptions.Add(ThinkMenuOption.NoShield); foreach (CharacterClass characterClass in Enum.GetValues(typeof(CharacterClass))) { if (characterClass == CharacterClass.Enemy) { continue; } weaponMenuOptions[characterClass].Clear(); foreach (InventoryItem item in Battle.PlayerParty.WeaponInventories[characterClass].GetSortedItems(CurrentPartyMember)) { WeaponData weaponData = ResourceManager.GetWeaponData(item.Key); weaponMenuOptions[characterClass].Add(new ThinkMenuOption(item.Key, weaponData.Description, item.Value, false)); } } foreach (InventoryItem item in Battle.PlayerParty.ItemInventory.GetSortedItems(CurrentPartyMember)) { ItemData itemData = ResourceManager.GetItemData(item.Key); itemMenuOptions.Add(new ThinkMenuOption(item.Key, itemData.Description, item.Value, false)); } foreach (InventoryItem item in Battle.PlayerParty.ShieldInventory.GetSortedItems(CurrentPartyMember)) { ShieldData shieldData = ResourceManager.GetShieldData(item.Key); shieldMenuOptions.Add(new ThinkMenuOption(item.Key, shieldData.Description, item.Value, false)); } checkUsabilityOfWeaponMenuOptions(); }
private void onShield() { lock (_obj) _shield = Shield.ShieldMgr.Instance.GetShield(); Common.Log.Logger.Default.Trace($"------------------------"); string str = $"更新当前围栏屏蔽数据。其中船舶数量:{_shield?.Ships?.Count()},AIS类别数量:{_shield?.Types?.Count()}"; if (_shield?.Ships != null && _shield.Ships.Count > 0) { str += "。其中船舶MMSI:"; foreach (var sh in _shield.Ships) { str += " " + sh.ID; } } if (_shield?.Types != null && _shield.Types.Count > 0) { str += "。其中类别:"; foreach (var sh in _shield.Types) { str += " " + sh.ID; } } Common.Log.Logger.Default.Trace(str); Common.Log.Logger.Default.Trace($"------------------------"); }
public static void ReadItemData() { itemManager = new ItemDataManager(); string[] fileNames = Directory.GetFiles( Path.Combine(FormMain.ItemPath, "Armor"), "*.xml"); foreach (string s in fileNames) { ArmorData armorData = XnaSerializer.Deserialize <ArmorData>(s); itemManager.ArmorData.Add(armorData.Name, armorData); } fileNames = Directory.GetFiles( Path.Combine(FormMain.ItemPath, "Shield"), "*.xml"); foreach (string s in fileNames) { ShieldData shieldData = XnaSerializer.Deserialize <ShieldData>(s); itemManager.ShieldData.Add(shieldData.Name, shieldData); } fileNames = Directory.GetFiles( Path.Combine(FormMain.ItemPath, "Weapon"), "*.xml"); foreach (string s in fileNames) { WeaponData weaponData = XnaSerializer.Deserialize <WeaponData>(s); itemManager.WeaponData.Add(weaponData.Name, weaponData); } }
private void InitializeController() { if (shieldData == null) { shieldData = GetComponentInParent <ShieldData>(); } }
public ShieldData AddShield(object effect, ValueType valueType, float value, int blockCount, DamageType damageType, DamageSource damageSource, CheckDamageDelegate handle) { ShieldData data = new ShieldData(valueType, value, blockCount, damageType, damageSource, handle); if (valueType == ValueType.Point) { if (m_PointValue.ContainsKey(effect)) { m_PointValue[effect] = data; } else { m_PointValue.Add(effect, data); } } else { if (m_PercentValue.ContainsKey(effect)) { m_PercentValue[effect] = data; } else { m_PercentValue.Add(effect, data); } } return(data); }
public Shield(GameContext context, ShieldData data, Entity entity, Gear item) { Context = context; _data = data; Entity = entity; Item = item; // TODO: Detect hits on Ship, keep a list of callbacks that modify the hit by reference }
public static void ReadShieldData(ContentManager Content) { string[] filenames = Directory.GetFiles(@"Content\Game\Items\Shield", "*.xnb"); foreach (string name in filenames) { string filename = @"Game\Items\Shield\" + Path.GetFileNameWithoutExtension(name); ShieldData data = Content.Load <ShieldData>(filename); ShieldData.Add(data.Name, data); } }
private void loadData() { if (File.Exists(_path)) { string info = File.ReadAllText(_path); _datas = JsonConvert.DeserializeObject <ShieldData>(info); } else { newAddSave(); } }
public void FirstLoad() { var weapon = ItemGenerator.DefaultWeapon(); PlayerEquipedWeapon = weapon; PlayerWeapons.Add(weapon); var shield = ItemGenerator.DefaultShield(); PlayerShields.Add(shield); PlayerEquipedShield = shield; }
void btnOK_Click(object sender, EventArgs e) { int price = 0; float weight = 0f; int defVal = 0; int defMod = 0; if (string.IsNullOrEmpty(tbName.Text)) { MessageBox.Show("You must enter a name for the item."); return; } if (!int.TryParse(mtbPrice.Text, out price)) { MessageBox.Show("Price must be an integer value."); return; } weight = (float)nudWeight.Value; if (!int.TryParse(mtbDefenseValue.Text, out defVal)) { MessageBox.Show("Defense valule must be an interger value."); return; } if (!int.TryParse(mtbDefenseModifier.Text, out defMod)) { MessageBox.Show("Defense valule must be an interger value."); return; } List <string> allowedClasses = new List <string>(); foreach (object o in lbAllowedClasses.Items) { allowedClasses.Add(o.ToString()); } shield = new ShieldData(); shield.Name = tbName.Text; shield.Type = tbType.Text; shield.Price = price; shield.Weight = weight; shield.DefenseValue = defVal; shield.DefenseModifier = defMod; shield.AllowableClasses = allowedClasses.ToArray(); this.FormClosing -= FormShieldDetails_FormClosing; this.Close(); }
void btnEdit_Click(object sender, EventArgs e) { if (lbDetails.SelectedItem != null) { string detail = lbDetails.SelectedItem.ToString(); string[] parts = detail.Split(','); string entity = parts[0].Trim(); ShieldData data = itemManager.ShieldData[entity]; ShieldData newData = null; using (FormShieldDetail frmShieldData = new FormShieldDetail()) { frmShieldData.Shield = data; frmShieldData.ShowDialog(); if (frmShieldData.Shield == null) { return; } if (frmShieldData.Shield.Name == entity) { itemManager.ShieldData[entity] = frmShieldData.Shield; FillListBox(); return; } newData = frmShieldData.Shield; } DialogResult result = MessageBox.Show( "Name has changed. Do you want to add a new entry?", "New Entry", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } if (itemManager.ShieldData.ContainsKey(newData.Name)) { MessageBox.Show("Entry already exists. Use Edit to modify the entry."); return; } lbDetails.Items.Add(newData); itemManager.ShieldData.Add(newData.Name, newData); } }
public static ShieldData createShieldData(ShieldType type) { ItemQuality quality = randQuality(); float level = randLevel(); int shieldLevel = Mathf.RoundToInt(type.shieldProtection() * level * qualityMultiplier(quality)); // int rechargeSpeed = Mathf.RoundToInt(type.rechargeSpeed() * level * qualityMultiplier(quality)); ShieldData data = new ShieldData(quality, level, type, shieldLevel, type.rechargeSpeed()); data.initCommons(calculateCost(data), calculateEnergy(data)); return(data); }
public void SetFromType(IEnumerable <int> infos) { lock (_datas) { foreach (var info in infos) { string name = ShieldData.GetShipType(info);//更新船舶类型名称 set(_datas.Types, new ShieldInfo() { ID = info, Name = name }); } } }
//This needs to set the defence and the defence type. static void DecideDefence(Unit attacker, Unit defender) { defence = defender.unitInfo.currentDefence; if (defender.defenceType == DefenceType.BLOCK) { if (defender.GetComponent <Shield>() != null) { defenceType = DefenceType.SHIELD; struckAnimation = StruckAnimation.SHIELD; ShieldData data = (ShieldData)defender.GetComponent <Shield>().itemData; defence += data.shieldModifier; return; } else { if (defender.GetComponent <MeleeWeapon>() != null) { if (defender.GetComponent <MeleeWeapon>().weaponData.weight > ItemData.Weight.light) { if (attacker.mainWeapon.weaponData.rangeType != WeaponData.Range.ranged) { defenceType = DefenceType.BLOCK; struckAnimation = StruckAnimation.BLOCK; //block anim. return; } } } } } if (defender.defenceType != DefenceType.EXPOSED) { //is there a square to dodge to? Tile dodgeTile = RangeFinder.FindTileToDodgeTo(defender.GetComponent <TacticsMovement>(), attacker, RangeFinder.FindDirection(defender.gameObject.transform, attacker.gameObject.transform)); if (dodgeTile != null) { float heightOffset = dodgeTile.transform.position.y - defender.GetComponent <TacticsMovement>().currentTile.transform.position.y; defender.GetComponent <TacticsMovement>().dodgeTarget = new Vector3(dodgeTile.gameObject.transform.position.x, defender.transform.position.y + heightOffset, dodgeTile.gameObject.transform.position.z); defenceType = DefenceType.DODGE; return; } } //This catchall currently treats everything that doesn't fit the above as exposed. bonuses++; defenceType = DefenceType.EXPOSED; }
private void newAddSave() { _datas = new ShieldData() { Types = new List <ShieldInfo>() { new ShieldInfo() { ID = 50, Name = "引航" }, new ShieldInfo() { ID = 52, Name = "拖船" } } }; save(); }
// Creates empty gameobject which holds the particle controller for calculating local movement of the particles. private void InitializeController() { if (shieldData == null) { shieldData = GetComponentInParent <ShieldData>(); shieldObject = transform.parent; GameObject holder = new GameObject("ParticleController: " + transform.parent.parent.name); transform.parent = holder.transform; transform.localScale = Vector3.one; transform.localPosition = new Vector3(shieldData.particlesOffset.x, shieldData.particlesOffset.y, shieldData.particlesOffset.z); shieldObject.GetComponent <ShieldController>().SetParticleControllerHolder(holder); } }
private void AddShield(ShieldData ShieldData) { if (FormDetails.ItemDataManager.ShieldData.ContainsKey(ShieldData.Name)) { DialogResult result = MessageBox.Show( ShieldData.Name + " already exists. Overwrite it?", "Existing shield", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } ItemDataManager.ShieldData[ShieldData.Name] = ShieldData; FillListBox(); return; } ItemDataManager.ShieldData.Add(ShieldData.Name, ShieldData); lbDetails.Items.Add(ShieldData); }
private void LoadWorld() { RpgLibrary.WorldClasses.LevelData levelData = Game.Content.Load <RpgLibrary.WorldClasses.LevelData>(@"Game\Levels\Starting Level"); RpgLibrary.WorldClasses.MapData mapData = Game.Content.Load <RpgLibrary.WorldClasses.MapData>(@"Game\Levels\Maps\" + levelData.MapName); string[] fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Armor"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Armor/" + Path.GetFileNameWithoutExtension(a); ArmorData armorData = Game.Content.Load <ArmorData>(path); ItemManager.AddArmor(new Armor(armorData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Shield"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Shield/" + Path.GetFileNameWithoutExtension(a); ShieldData shieldData = Game.Content.Load <ShieldData>(path); ItemManager.AddShield(new Shield(shieldData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Weapon"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Weapon/" + Path.GetFileNameWithoutExtension(a); WeaponData weaponData = Game.Content.Load <WeaponData>(path); ItemManager.AddWeapon(new Weapon(weaponData)); } CharacterLayerData charData = Game.Content.Load <CharacterLayerData>(@"Game\Levels\Chars\Starting Level"); CharacterLayer characterLayer = new CharacterLayer(); TileMap map = TileMap.FromMapData(mapData, Game.Content); foreach (var c in charData.Characters) { Character character; if (c.Value is NonPlayerCharacterData) { Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC); using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read)) { Texture2D texture = Texture2D.FromStream(GraphicsDevice, stream); AnimatedSprite sprite = new AnimatedSprite(texture, AnimationManager.Instance.Animations) { Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight) }; character = new NonPlayerCharacter(entity, sprite); ((NonPlayerCharacter)character).SetConversation( ((NonPlayerCharacterData)c.Value).CurrentConversation); } characterLayer.Characters.Add(c.Key, character); } } map.AddLayer(characterLayer); Level level = new Level(map); ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest"); Chest chest = new Chest(chestData); BaseSprite chestSprite = new BaseSprite( containers, new Rectangle(0, 0, 32, 32), new Point(10, 10)); ItemSprite itemSprite = new ItemSprite( chest, chestSprite); level.Chests.Add(itemSprite); World world = new World(GameRef, GameRef.ScreenRectangle); world.Levels.Add(level); world.CurrentLevel = 0; AnimatedSprite s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(0 * Engine.TileWidth, 5 * Engine.TileHeight); EntityData ed = new EntityData("Eliza", 1, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC); NonPlayerCharacter npc = new NonPlayerCharacter(e, s); npc.SetConversation("eliza1"); //world.Levels[world.CurrentLevel].Characters.Add(npc); s = new AnimatedSprite( GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"), AnimationManager.Instance.Animations); s.Position = new Vector2(10 * Engine.TileWidth, 0); ed = new EntityData("Barbra", 2, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0"); e = new Entity("Barbra", ed, EntityGender.Female, EntityType.Merchant); Merchant m = new Merchant(e, s); Texture2D items = Game.Content.Load <Texture2D>("ObjectSprites/roguelikeitems"); m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Long Sword"), items, new Rectangle(0, 0, 16, 16))); m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Short Sword"), items, new Rectangle(16, 0, 16, 16))); world.Levels[world.CurrentLevel].Characters.Add(m); ((CharacterLayer)world.Levels[world.CurrentLevel].Map.Layers.Find(x => x is CharacterLayer)).Characters.Add(new Point(10, 0), m); GamePlayScreen.World = world; CreateConversation(); // ((NonPlayerCharacter)world.Levels[world.CurrentLevel].Characters[0]).SetConversation("eliza1"); }
/// <summary> /// Creates the data for the specified row. /// </summary> /// <param name="Row">The row.</param> internal Data Create(Row Row) { Data Data; switch (this.Index) { case 1: { Data = new BuildingData(Row, this); break; } case 2: { Data = new LocaleData(Row, this); break; } case 3: { Data = new ResourceData(Row, this); break; } case 4: { Data = new CharacterData(Row, this); break; } case 6: { Data = new ProjectileData(Row, this); break; } case 7: { Data = new BuildingClassData(Row, this); break; } case 8: { Data = new ObstacleData(Row, this); break; } case 9: { Data = new EffectData(Row, this); break; } case 10: { Data = new ParticleEmitterData(Row, this); break; } case 11: { Data = new ExperienceLevelData(Row, this); break; } case 12: { Data = new TrapData(Row, this); break; } case 13: { Data = new AllianceBadgeData(Row, this); break; } case 14: { Data = new GlobalData(Row, this); break; } case 15: { Data = new TownhallLevelData(Row, this); break; } case 16: { Data = new AlliancePortalData(Row, this); break; } case 17: { Data = new NpcData(Row, this); break; } case 18: { Data = new DecoData(Row, this); break; } case 19: { Data = new ResourcePackData(Row, this); break; } case 20: { Data = new ShieldData(Row, this); break; } case 21: { Data = new MissionData(Row, this); break; } case 22: { Data = new BillingPackageData(Row, this); break; } case 23: { Data = new AchievementData(Row, this); break; } case 25: { Data = new FaqData(Row, this); break; } case 26: { Data = new SpellData(Row, this); break; } case 27: { Data = new HintData(Row, this); break; } case 28: { Data = new HeroData(Row, this); break; } case 29: { Data = new LeagueData(Row, this); break; } case 30: { Data = new NewData(Row, this); break; } case 34: { Data = new AllianceBadgeLayerData(Row, this); break; } case 37: { Data = new VariableData(Row, this); break; } case 38: { Data = new GemBundleData(Row, this); break; } case 39: { Data = new VillageObjectData(Row, this); break; } default: { Data = new Data(Row, this); break; } } return(Data); }
public override void GetItemData() { itemData = new ShieldData(); }
internal Data Create(Row _Row) { Data _Data; switch ((Gamefile)this.Index) { case Gamefile.Buildings: _Data = new BuildingData(_Row, this); break; case Gamefile.Locales: _Data = new LocaleData(_Row, this); break; case Gamefile.Resources: _Data = new ResourceData(_Row, this); break; case Gamefile.Characters: _Data = new CharacterData(_Row, this); break; case Gamefile.Building_Classes: _Data = new BuildingClassData(_Row, this); break; case Gamefile.Obstacles: _Data = new ObstacleData(_Row, this); break; case Gamefile.Traps: _Data = new TrapData(_Row, this); break; case Gamefile.Globals: _Data = new GlobalData(_Row, this); break; case Gamefile.Experience_Levels: _Data = new ExperienceLevelData(_Row, this); break; case Gamefile.Townhall_Levels: _Data = new TownhallLevelData(_Row, this); break; case Gamefile.Npcs: _Data = new NpcData(_Row, this); break; case Gamefile.Decos: _Data = new DecoData(_Row, this); break; case Gamefile.Shields: _Data = new ShieldData(_Row, this); break; case Gamefile.Missions: _Data = new MissionData(_Row, this); break; case Gamefile.Achievements: _Data = new AchievementData(_Row, this); break; case Gamefile.Spells: _Data = new SpellData(_Row, this); break; case Gamefile.Heroes: _Data = new HeroData(_Row, this); break; case Gamefile.Leagues: _Data = new LeagueData(_Row, this); break; case Gamefile.Regions: _Data = new RegionData(_Row, this); break; case Gamefile.AllianceBadgeLayer: _Data = new AllianceBadgeLayerData(_Row, this); break; case Gamefile.Variables: _Data = new VariableData(_Row, this); break; case Gamefile.Village_Objects: _Data = new VillageObjectData(_Row, this); break; default: _Data = new Data(_Row, this); break; } return(_Data); }
protected override void LoadContent() { _spriteBatch = new SpriteBatch(GraphicsDevice); DataManager.ReadEntityData(Content); DataManager.ReadArmorData(Content); DataManager.ReadShieldData(Content); DataManager.ReadWeaponData(Content); DataManager.ReadChestData(Content); DataManager.ReadKeyData(Content); DataManager.ReadSkillData(Content); FontManager.AddFont("testfont", Content.Load <SpriteFont>("Fonts/scenefont")); TextureManager.AddTexture("FullSheet", Content.Load <Texture2D>("GUI/ProjectUtumno_full")); string[] fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Armor"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Armor/" + Path.GetFileNameWithoutExtension(a); ArmorData armorData = Content.Load <ArmorData>(path); ItemManager.AddArmor(new Armor(armorData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Shield"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Shield/" + Path.GetFileNameWithoutExtension(a); ShieldData shieldData = Content.Load <ShieldData>(path); ItemManager.AddShield(new Shield(shieldData)); } fileNames = Directory.GetFiles( Path.Combine("Content/Game/Items", "Weapon"), "*.xnb"); foreach (string a in fileNames) { string path = "Game/Items/Weapon/" + Path.GetFileNameWithoutExtension(a); WeaponData weaponData = Content.Load <WeaponData>(path); ItemManager.AddWeapon(new Weapon(weaponData)); } PotionData potionData = new PotionData { Name = "Minor Healing Potion", Type = "Potion", Target = "Health", Price = 100, Weight = .25f, Minimum = 6, Maximum = 13, AllowableClasses = new[] { "Fighter", "Wizard", "Rogue", "Priest" } }; Potion potion = new Potion(potionData); ItemManager.AddPotion(potion); potionData = new PotionData { Name = "Minor Mana Potion", Type = "Potion", Target = "Mana", Price = 100, Weight = .25f, Minimum = 6, Maximum = 13, AllowableClasses = new[] { "Wizard", "Priest" } }; potion = new Potion(potionData); ItemManager.AddPotion(potion); potionData = new PotionData { Name = "Minor Stamina Potion", Type = "Potion", Target = "Stamina", Price = 100, Weight = .25f, Minimum = 6, Maximum = 13, AllowableClasses = new[] { "Fighter", "Rogue" } }; potion = new Potion(potionData); ItemManager.AddPotion(potion); GameItemManager.AddItem("Long Sword", new GameItem(ItemManager.GetWeapon("Long Sword"), "FullSheet", new Rectangle(1696, 1408, 32, 32))); GameItemManager.AddItem("Short Sword", new GameItem(ItemManager.GetWeapon("Short Sword"), "FullSheet", new Rectangle(800, 1504, 32, 32))); GameItemManager.AddItem("Apprentice Staff", new GameItem(ItemManager.GetWeapon("Apprentice Staff"), "FullSheet", new Rectangle(224, 1408, 32, 32))); GameItemManager.AddItem("Acolyte Staff", new GameItem(ItemManager.GetWeapon("Acolyte Staff"), "FullSheet", new Rectangle(256, 1408, 32, 32))); GameItemManager.AddItem("Leather Armor", new GameItem(ItemManager.GetArmor("Leather Armor"), "FullSheet", new Rectangle(1248, 1216, 32, 32))); GameItemManager.AddItem("Chain Mail", new GameItem(ItemManager.GetArmor("Chain Mail"), "FullSheet", new Rectangle(1472, 1184, 32, 32))); GameItemManager.AddItem("Studded Leather Armor", new GameItem(ItemManager.GetArmor("Studded Leather Armor"), "FullSheet", new Rectangle(1984, 1120, 32, 32))); GameItemManager.AddItem("Light Robes", new GameItem(ItemManager.GetArmor("Light Robes"), "FullSheet", new Rectangle(992, 1216, 32, 32))); GameItemManager.AddItem("Medium Robes", new GameItem(ItemManager.GetArmor("Medium Robes"), "FullSheet", new Rectangle(1024, 1216, 32, 32))); GameItemManager.AddItem("Minor Healing Potion", new GameItem(ItemManager.GetPotion("Minor Healing Potion"), "FullSheet", new Rectangle(832, 1344, 32, 32))); GameItemManager.AddItem("Minor Mana Potion", new GameItem(ItemManager.GetPotion("Minor Mana Potion"), "FullSheet", new Rectangle(576, 1344, 32, 32))); GameItemManager.AddItem("Minor Stamina Potion", new GameItem(ItemManager.GetPotion("Minor Stamina Potion"), "FullSheet", new Rectangle(704, 1344, 32, 32))); }
public Shield(ShieldData sd) : base(sd) { _amount = sd.amount; _rate = sd.rate; _duration = sd.duration; }
private void showTexts(ItemData data) { float maxLenght = 0; if (data.quality != ItemQuality.COMMON) { qualityPre.gameObject.SetActive(true); qualityBG.gameObject.SetActive(true); qualityValue.gameObject.SetActive(true); qualityValue.text = item.quality.getName(); scale.x = calcMeshLength(qualityRender);// qualityValue.text.Length + 1; qualityBG.localScale = scale; qualityValue.color = (data.quality == ItemQuality.ARTEFACT? artefactColor: data.quality == ItemQuality.UNIQUE? uniqueColor: data.quality == ItemQuality.RARE? rareColor: data.quality == ItemQuality.SUPERIOR? superiorColor: goodColor); maxLenght = qualityRender.bounds.size.x; } namePre.gameObject.SetActive(true); nameBG.gameObject.SetActive(true); nameValue.gameObject.SetActive(true); nameValue.text = data.name; scale.x = calcMeshLength(nameRender);// nameValue.text.Length + 1; nameBG.localScale = scale; maxLenght = Mathf.Max(maxLenght, nameRender.bounds.size.x); switch (data.itemType) { case ItemType.SUPPLY: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); SupplyData sud = (SupplyData)data; string val = ""; switch (sud.type) { case SupplyType.MEDKIT_SMALL: case SupplyType.MEDKIT_MEDIUM: case SupplyType.MEDKIT_LARGE: case SupplyType.MEDKIT_ULTRA: val = "Восстанавливает <color=white>" + sud.value + "</color> HP"; break; case SupplyType.GRENADE_FLASH: val = StatusEffectType.BLINDED.name() + " на <color=white>" + sud.duration + "</color> ходов"; break; case SupplyType.GRENADE_PARALIZE: val = StatusEffectType.PARALIZED.name() + " на <color=white>" + sud.duration + "</color> ходов"; break; case SupplyType.INJECTION_SPEED: val = "Дополнительно <color=white>" + sud.value + "</color> действий на <color=white>" + sud.duration + "</color> ходов"; break; case SupplyType.INJECTION_REGENERATION: val = "Восстановление по <color=white>" + sud.value + "</color> HP в течении <color=white>" + sud.duration + "</color> ходов"; break; case SupplyType.INJECTION_ARMOR: val = "Повышение защиты на <color=white>" + sud.value + "</color> в течении <color=white>" + sud.duration + "</color> ходов"; break; default: Debug.Log("Unknown supply type: " + sud.type); val = ""; break; } value1.text = "Эффект: <color=orange>" + val + "</color>"; scale.x = calcMeshLength(value1Render); // value1Render.bounds.size.x * 4.8f;// value1.text.Length - 23;// - (количество спецсимволов) bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(2, data)); break; case ItemType.GOODS: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); maxLenght = Mathf.Max(maxLenght, setCost(1, data)); break; case ItemType.HAND_WEAPON: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); HandWeaponData hwd = (HandWeaponData)data; value1.text = "Урон: <color=orange>" + hwd.minDamage + " - " + hwd.maxDamage + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 24;// - (количество спецсимволов) bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(2, data)); break; case ItemType.BODY_ARMOR: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); BodyArmorData bad = (BodyArmorData)data; value1.text = "Защита: <color=orange>" + bad.armorClass + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(2, data)); break; case ItemType.WEAPON: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); pre4.gameObject.SetActive(true); bg4.gameObject.SetActive(true); value4.gameObject.SetActive(true); pre5.gameObject.SetActive(true); bg5.gameObject.SetActive(true); value5.gameObject.SetActive(true); WeaponData wd = (WeaponData)data; value1.text = "Урон: <color=orange>" + wd.minDamage + " - " + wd.maxDamage + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 24; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Перезарядка: <color=orange>" + wd.reloadTime.ToString("0.00") + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 22.5F; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); value3.text = "Питание: <color=cyan>" + data.energyNeeded + "</color>"; scale.x = calcMeshLength(value3Render); //value3.text.Length - 20.5f; bg3.localScale = scale; maxLenght = Mathf.Max(maxLenght, value3Render.bounds.size.x); value4.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value4Render); //value4.text.Length - 22.5F; bg4.localScale = scale; maxLenght = Mathf.Max(maxLenght, value4Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(5, data)); break; case ItemType.ENGINE: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); pre4.gameObject.SetActive(true); bg4.gameObject.SetActive(true); value4.gameObject.SetActive(true); EngineData ed = (EngineData)data; value1.text = "Мощность: <color=orange>" + ((ed.power) * 1000).ToString("0") + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Питание: <color=cyan>" + data.energyNeeded + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 20.5f; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); value3.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value3Render); //value3.text.Length - 22.5F; bg3.localScale = scale; maxLenght = Mathf.Max(maxLenght, value3Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(4, data)); break; case ItemType.ARMOR: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); ArmorData ad = (ArmorData)data; value1.text = "Броня: <color=orange>" + ad.armorClass + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 22.5F; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(3, data)); break; case ItemType.GENERATOR: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); GeneratorData gd = (GeneratorData)data; value1.text = "Мощность: <color=orange>" + gd.maxEnergy + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 22.5F; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(3, data)); break; case ItemType.RADAR: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); pre4.gameObject.SetActive(true); bg4.gameObject.SetActive(true); value4.gameObject.SetActive(true); RadarData rd = (RadarData)data; value1.text = "Дальность: <color=orange>" + rd.range + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Питание: <color=cyan>" + data.energyNeeded + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 20.5f; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); value3.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value3Render); //value3.text.Length - 22.5F; bg3.localScale = scale; maxLenght = Mathf.Max(maxLenght, value3Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(4, data)); break; case ItemType.SHIELD: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); pre4.gameObject.SetActive(true); bg4.gameObject.SetActive(true); value4.gameObject.SetActive(true); pre5.gameObject.SetActive(true); bg5.gameObject.SetActive(true); value5.gameObject.SetActive(true); ShieldData sd = (ShieldData)data; value1.text = "Защита: <color=orange>" + sd.shieldLevel + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Перезарядка: <color=orange>" + sd.rechargeSpeed + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 22.5F; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); value3.text = "Питание: <color=cyan>" + data.energyNeeded + "</color>"; scale.x = calcMeshLength(value3Render); //value3.text.Length - 20.5f; bg3.localScale = scale; maxLenght = Mathf.Max(maxLenght, value3Render.bounds.size.x); value4.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value4Render); //value4.text.Length - 22.5F; bg4.localScale = scale; maxLenght = Mathf.Max(maxLenght, value4Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(5, data)); break; case ItemType.REPAIR_DROID: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); pre4.gameObject.SetActive(true); bg4.gameObject.SetActive(true); value4.gameObject.SetActive(true); RepairDroidData rdd = (RepairDroidData)data; value1.text = "Ремонт: <color=orange>" + rdd.repairSpeed + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Питание: <color=cyan>" + data.energyNeeded + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 20.5f; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); value3.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value3Render); //value3.text.Length - 22.5F; bg3.localScale = scale; maxLenght = Mathf.Max(maxLenght, value3Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(4, data)); break; case ItemType.HARVESTER: pre1.gameObject.SetActive(true); bg1.gameObject.SetActive(true); value1.gameObject.SetActive(true); pre2.gameObject.SetActive(true); bg2.gameObject.SetActive(true); value2.gameObject.SetActive(true); pre3.gameObject.SetActive(true); bg3.gameObject.SetActive(true); value3.gameObject.SetActive(true); HarvesterData hd = (HarvesterData)data; value1.text = "Поиск: <color=orange>" + hd.harvestTime + "</color>"; scale.x = calcMeshLength(value1Render); //value1.text.Length - 22.5f; bg1.localScale = scale; maxLenght = Mathf.Max(maxLenght, value1Render.bounds.size.x); value2.text = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>"; scale.x = calcMeshLength(value2Render); //value2.text.Length - 22.5F; bg2.localScale = scale; maxLenght = Mathf.Max(maxLenght, value2Render.bounds.size.x); maxLenght = Mathf.Max(maxLenght, setCost(3, data)); break; } maxX = screenWidth - maxLenght - .5f; }
private void addNewItemsToPlayerPartyInventory() { Dictionary <Rarity, List <WeaponData> > weapons = new Dictionary <Rarity, List <WeaponData> >(); Dictionary <Rarity, List <ShieldData> > shields = new Dictionary <Rarity, List <ShieldData> >(); Dictionary <Rarity, List <ItemData> > items = new Dictionary <Rarity, List <ItemData> >(); foreach (Rarity rarity in Enum.GetValues(typeof(Rarity))) { if (rarity == Rarity.Never) { continue; } weapons[rarity] = ResourceManager.GetWeaponDataWhere(wd => wd.Rarity == rarity); shields[rarity] = ResourceManager.GetShieldDataWhere(sd => sd.Rarity == rarity); items[rarity] = ResourceManager.GetItemDataWhere(id => id.Rarity == rarity); } List <Rarity> rarityList = new List <Rarity> { Rarity.Common, Rarity.Uncommon, Rarity.Rare, Rarity.Common, Rarity.Uncommon, Rarity.Common }; List <ThinkActionType> thinkActionTypeList = new List <ThinkActionType> { ThinkActionType.Attack, ThinkActionType.Defend, ThinkActionType.Attack, ThinkActionType.UseItem }; int count = Math.Max(minimumItemsWon, Battle.PlayerPartyItemsUsed + Game1.Random.Next(Math.Max(minimumForItemsWonRandomizer, Battle.PlayerPartyItemsUsed / itemsUsedDivisorForItemsWonRandomizer))); for (int i = 0; i < count; ++i) { Rarity rarity = rarityList.Sample(); switch (thinkActionTypeList.Sample()) { case ThinkActionType.Attack: if (weapons[rarity].Count == 0) { --i; continue; } WeaponData weaponData = weapons[rarity].Sample(); if (!Battle.PlayerParty.HasMemberOfCharacterClass(weaponData.CharacterClass)) { --i; continue; } string weaponName = new Attributes(weaponData).ToString(weaponData.Name); Battle.PlayerParty.WeaponInventories[weaponData.CharacterClass].AddItem(weaponName, null); ItemsWon.Add(new Tuple <string, CharacterClass>(weaponName, weaponData.CharacterClass)); Logger.Log("Player party won weapon " + weaponName); break; case ThinkActionType.Defend: if (shields[rarity].Count == 0) { --i; continue; } ShieldData shieldData = shields[rarity].Sample(); string shieldName = new Attributes(shieldData).ToString(shieldData.Name); Battle.PlayerParty.ShieldInventory.AddItem(shieldName, null); ItemsWon.Add(new Tuple <string, CharacterClass>(shieldName, CharacterClass.Enemy)); Logger.Log("Player party won shield " + shieldName); break; case ThinkActionType.UseItem: if (items[rarity].Count == 0) { --i; continue; } ItemData itemData = items[rarity].Sample(); string itemName = itemData.Name.ToUpperFirstChar(); Battle.PlayerParty.ItemInventory.AddItem(itemName, null); ItemsWon.Add(new Tuple <string, CharacterClass>(itemName, CharacterClass.Enemy)); Logger.Log("Player party won item " + itemName); break; } } }