} // ChangeItemQty() public async Task <bool> DeleteItem(Creature creature, int itemId) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } Item item = _ctx.Items.Find(itemId); if (item == null) { return(false); } if (target.Items.FirstOrDefault(x => x.ItemId == itemId) == null) { return(false); } target.Items.Remove(target.Items.FirstOrDefault(x => x.ItemId == itemId)); await _ctx.SaveChangesAsync(); CalculateCreature.ItemEffect(creature, _ctx, itemId); return(true); } // DeleteItem()
} // UpdateFull() updates creature's parameters and inventory public async Task <bool> UpdateCreature(Creature creature) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } target.Name = creature.Name; target.Type = creature.Type; target.Level = creature.Level; target.Experience = creature.Experience; target.Strength = creature.Strength; target.Endurance = creature.Endurance; target.Willpower = creature.Willpower; target.Speed = creature.Speed; target.Agility = creature.Agility; await _ctx.SaveChangesAsync(); CalculateCreature.DerivedStatistics(creature, _ctx); return(true); } // UpdateCreature() updates only creature's parameters
} // AddItem() public async Task <bool> ChangeItemQty(Creature creature, int itemId, int qty) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } Item item = _ctx.Items.Find(itemId); if (item == null) { return(false); } if (target.Items.SingleOrDefault(x => x.ItemId == itemId) == null) { return(false); } target.Items.SingleOrDefault(x => x.ItemId == itemId).Qty = qty; await _ctx.SaveChangesAsync(); CalculateCreature.ItemEffect(creature, _ctx, itemId); return(true); } // ChangeItemQty()
} // UpdateCreature() updates only creature's parameters public async Task <bool> UpdateInventory(Creature creature) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } if (creature.Weapon != null) { var weapon = creature.Weapon; target.Weapon = weapon; } if (creature.Armor != null) { var armor = creature.Armor; target.Armor = armor; } target.MagicBook = new List <Spell>(); target.Items = new List <CreatureItem>(); foreach (var spell in creature.MagicBook) { target.MagicBook.Add(new Spell { Name = spell.Name, Type = spell.Type, Level = spell.Level, ManaCost = spell.ManaCost, ActionCost = spell.ActionCost, Strength = spell.Strength }); } foreach (var item in creature.Items) { target.Items.Add(new CreatureItem { CreatureId = item.CreatureId, ItemId = item.ItemId, Qty = item.Qty, Creature = item.Creature, Item = item.Item }); } await _ctx.SaveChangesAsync(); CalculateCreature.DerivedStatistics(creature, _ctx); return(true); } // UpdateInventory() updates only creature's inventory
} // UpdateWeapon() updates only creature's weapon public async Task <bool> UpdateArmor(Creature creature) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } var armor = creature.Armor; if (target.Armor == null) { target.Armor = armor; } await _ctx.SaveChangesAsync(); CalculateCreature.DerivedStatistics(creature, _ctx); return(true); } // UpdateArmor() updates only creature's armor
public async Task <bool> Create(Creature creature) { Creature target = new Creature { Name = creature.Name, Type = creature.Type, Level = creature.Level, Experience = creature.Experience, Alive = true, Strength = creature.Strength, Endurance = creature.Endurance, Willpower = creature.Willpower, Speed = creature.Speed, Agility = creature.Agility, MagicBook = new List <Spell>(), Items = new List <CreatureItem>() }; if (creature.Weapon != null) { target.Weapon = new Weapon { Name = creature.Weapon.Name, BaseDamage = creature.Weapon.BaseDamage, MagicDamage = creature.Weapon.MagicDamage, ActionCost = creature.Weapon.ActionCost, HitChance = creature.Weapon.HitChance }; } if (creature.Armor != null) { target.Armor = new Armor { Name = creature.Armor.Name, DamageResistance = creature.Armor.DamageResistance, MagicResistance = creature.Armor.MagicResistance }; } if (creature.MagicBook != null) { foreach (var spell in creature.MagicBook) { target.MagicBook.Add(new Spell { Name = spell.Name, Type = spell.Type, Level = spell.Level, ManaCost = spell.ManaCost, ActionCost = spell.ActionCost, Strength = spell.Strength }); } } if (creature.Items != null) { foreach (var item in creature.Items) { target.Items.Add(new CreatureItem { CreatureId = item.CreatureId, ItemId = item.ItemId, Qty = item.Qty, Creature = item.Creature, Item = item.Item }); } } _ctx.Creatures.Add(target); await _ctx.SaveChangesAsync(); CalculateCreature.DerivedStatistics(target, _ctx); return(true); } // Create()
} // UpdateArmor() updates only creature's armor public async Task <bool> AddItem(Creature creature, int itemId) { Creature target = _ctx.Creatures.Include(x => x.Items).ThenInclude(x => x.Item).SingleOrDefault(x => x.Id == creature.Id); if (target == null) { return(false); } Item item = _ctx.Items.Find(itemId); if (item == null) { return(false); } if (target.Items == null || target.Items.Count == 0) { target.Items = new List <CreatureItem> { new CreatureItem { CreatureId = target.Id, ItemId = item.Id, Qty = 1, Creature = target, Item = item } }; } else if (target.Items != null) { if (item.ItemType == Enumerators.ItemTypeEnum.AgilityBooster || item.ItemType == Enumerators.ItemTypeEnum.EnduranceBooster || item.ItemType == Enumerators.ItemTypeEnum.SpeedBooster || item.ItemType == Enumerators.ItemTypeEnum.StrengthBooster || item.ItemType == Enumerators.ItemTypeEnum.WillpowerBooster) { var booster = target.Items.SingleOrDefault(x => x.Item.ItemType == item.ItemType); if (booster != null) { target.Items.Remove(booster); } target.Items.Add(new CreatureItem { CreatureId = target.Id, ItemId = item.Id, Qty = 1, Creature = target, Item = item }); } else if (target.Items.SingleOrDefault(x => x.ItemId == itemId) == null) { target.Items.Add(new CreatureItem { CreatureId = target.Id, ItemId = item.Id, Qty = 1, Creature = target, Item = item }); } else { target.Items.FirstOrDefault(x => x.ItemId == itemId).Qty++; } } await _ctx.SaveChangesAsync(); CalculateCreature.ItemEffect(creature, _ctx, itemId); return(true); } // AddItem()
public async Task <bool> UpdateFull(Creature creature) { Creature target = _ctx.Creatures.Find(creature.Id); if (target == null) { return(false); } target.Name = creature.Name; target.Type = creature.Type; target.Level = creature.Level; target.Experience = creature.Experience; target.Strength = creature.Strength; target.Endurance = creature.Endurance; target.Willpower = creature.Willpower; target.Speed = creature.Speed; target.Agility = creature.Agility; target.Weapon.Name = creature.Weapon.Name; target.Weapon.BaseDamage = creature.Weapon.BaseDamage; target.Weapon.MagicDamage = creature.Weapon.MagicDamage; target.Weapon.ActionCost = creature.Weapon.ActionCost; target.Weapon.HitChance = creature.Weapon.HitChance; target.Armor.Name = creature.Armor.Name; target.Armor.DamageResistance = creature.Armor.DamageResistance; target.Armor.MagicResistance = creature.Armor.MagicResistance; target.MagicBook = new List <Spell>(); target.Items = new List <CreatureItem>(); foreach (var spell in creature.MagicBook) { target.MagicBook.Add(new Spell { Name = spell.Name, Type = spell.Type, Level = spell.Level, ManaCost = spell.ManaCost, ActionCost = spell.ActionCost, Strength = spell.Strength }); } foreach (var item in creature.Items) { target.Items.Add(new CreatureItem { CreatureId = item.CreatureId, ItemId = item.ItemId, Qty = item.Qty, Creature = item.Creature, Item = item.Item }); } await _ctx.SaveChangesAsync(); CalculateCreature.DerivedStatistics(creature, _ctx); return(true); } // UpdateFull() updates creature's parameters and inventory