Exemplo n.º 1
0
        }         // 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()
Exemplo n.º 2
0
        }         // 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
Exemplo n.º 3
0
        }         // 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()
Exemplo n.º 4
0
        }         // 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
Exemplo n.º 5
0
        }         // 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
Exemplo n.º 6
0
        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()
Exemplo n.º 7
0
        }         // 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()
Exemplo n.º 8
0
        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