Esempio n. 1
0
        public void OpenBooster(IUpdatableUser model, BoosterPack set)
        {
            var user = userCollection.Users.FirstOrDefault(x => x.Id == model.Id);

            try
            {
                for (int i = 0; i < 5; i++)
                {
                    MageKnightData magedata = MageDB.GetRandomMage(set);
                    UserDataDB.AddMageToInventory(magedata.Id, user.Id);

                    var mage = this.modelFactoryResolver.GetFactory <IUpdatableMageKnight>().Create();
                    mage.Faction    = magedata.Faction;
                    mage.FrontArc   = magedata.FrontArc;
                    mage.Id         = magedata.Id;
                    mage.Index      = magedata.Index;
                    mage.ModelImage = magedata.ModelImage;
                    mage.Name       = magedata.Name;
                    mage.PointValue = magedata.PointValue;
                    mage.Range      = magedata.Range;
                    mage.Rank       = magedata.Rank;
                    mage.Set        = magedata.Set;
                    var dial = this.modelFactoryResolver.GetFactory <IUpdatableDial>().Create();
                    foreach (var click in magedata.Dial.Clicks)
                    {
                        var query = this.modelFactoryResolver.GetFactory <IUpdatableClick>().Create();
                        query.Attack  = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Speed   = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Defense = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                        query.Damage  = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();

                        query.Attack.Value     = click.Attack.Value;
                        query.Attack.Ability   = click.Attack.Ability;
                        query.Attack.StatType  = click.Attack.StatType;
                        query.Speed.Value      = click.Speed.Value;
                        query.Speed.Ability    = click.Speed.Ability;
                        query.Speed.StatType   = click.Speed.StatType;
                        query.Defense.Value    = click.Defense.Value;
                        query.Defense.Ability  = click.Defense.Ability;
                        query.Defense.StatType = click.Defense.StatType;
                        query.Damage.Value     = click.Damage.Value;
                        query.Damage.Ability   = click.Damage.Ability;
                        query.Damage.StatType  = click.Damage.StatType;
                        query.Index            = click.Index;

                        foreach (var stat in click.Stats)
                        {
                            var statQuery = this.modelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                            statQuery.Ability  = stat.Ability;
                            statQuery.Value    = stat.Value;
                            statQuery.StatType = stat.StatType;
                            query.Stats.Add(statQuery);
                        }

                        dial.Clicks.Add(query);
                    }

                    dial.ClickIndex = magedata.Dial.ClickIndex;
                    dial.Click      = dial.Clicks.First();
                    dial.Name       = magedata.Dial.Name;
                    mage.Dial       = dial;
                    ServiceTypeProvider.Instance.UserCollection.Users.FirstOrDefault(x => x.Id == user.Id).AddMageToInventory(mage.Id);
                    user.Inventory.Add(mage);
                }
            }
            catch (Exception e)
            {
                ;
            }


            UserDataDB.UpdateUsersBoosterPackCount(set, user.Id, user.RebellionBoosterPacks);
        }
Esempio n. 2
0
        protected override bool UpdateInternal(IUpdatableUser model, UserAddedMageToInventory message)
        {
            if (message.UserId != model.Id)
            {
                return(false);
            }

            MageKnightData magedata = MageDB.GetMageKnight(message.Id);
            var            mage     = this.ModelFactoryResolver.GetFactory <IUpdatableMageKnight>().Create();

            mage.Faction    = magedata.Faction;
            mage.FrontArc   = magedata.FrontArc;
            mage.Id         = magedata.Id;
            mage.Index      = magedata.Index;
            mage.ModelImage = magedata.ModelImage;
            mage.Name       = magedata.Name;
            mage.PointValue = magedata.PointValue;
            mage.Range      = magedata.Range;
            mage.Rank       = magedata.Rank;
            mage.Set        = magedata.Set;
            var dial = this.ModelFactoryResolver.GetFactory <IUpdatableDial>().Create();

            foreach (var click in magedata.Dial.Clicks)
            {
                var query = this.ModelFactoryResolver.GetFactory <IUpdatableClick>().Create();
                query.Attack  = this.ModelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                query.Speed   = this.ModelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                query.Defense = this.ModelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                query.Damage  = this.ModelFactoryResolver.GetFactory <IUpdatableStat>().Create();

                query.Attack.Value     = click.Attack.Value;
                query.Attack.Ability   = click.Attack.Ability;
                query.Attack.StatType  = click.Attack.StatType;
                query.Speed.Value      = click.Speed.Value;
                query.Speed.Ability    = click.Speed.Ability;
                query.Speed.StatType   = click.Speed.StatType;
                query.Defense.Value    = click.Defense.Value;
                query.Defense.Ability  = click.Defense.Ability;
                query.Defense.StatType = click.Defense.StatType;
                query.Damage.Value     = click.Damage.Value;
                query.Damage.Ability   = click.Damage.Ability;
                query.Damage.StatType  = click.Damage.StatType;
                query.Index            = click.Index;

                foreach (var stat in click.Stats)
                {
                    var statQuery = this.ModelFactoryResolver.GetFactory <IUpdatableStat>().Create();
                    statQuery.Ability  = stat.Ability;
                    statQuery.Value    = stat.Value;
                    statQuery.StatType = stat.StatType;
                    query.Stats.Add(statQuery);
                }

                dial.Clicks.Add(query);
            }

            dial.ClickIndex = magedata.Dial.ClickIndex;
            dial.Click      = dial.Clicks.First();
            dial.Name       = magedata.Dial.Name;
            mage.Dial       = dial;
            model.Inventory.Add(mage);
            return(true);
        }