示例#1
0
        public UserProxy(
            IServiceClient serviceClient,
            IModelUpdaterResolver modelUpdaterResolver,
            IUpdatableUser model)
            : base(serviceClient, modelUpdaterResolver)
        {
            this.model            = model;
            this.inventoryProxies = new SerializableObservableCollection <IMageKnightModel>();
            this.armyProxies      = new SerializableObservableCollection <IMageKnightModel>();
            foreach (var mage in this.model.Inventory)
            {
                this.inventoryProxies.Add(new MageKnightProxy(serviceClient, modelUpdaterResolver, mage));
            }
            foreach (var mage in this.model.Army)
            {
                this.armyProxies.Add(new MageKnightProxy(serviceClient, modelUpdaterResolver, mage));
            }

            this.model.Inventory.CollectionChanged += Inventory_CollectionChanged;
            this.model.Army.CollectionChanged      += Army_CollectionChanged;

            this.SetUpModelPropertyChangedPropagation(this.model);

            this.SubscribeToMessage <UserChanged>(this.Handle);
            this.SubscribeToMessage <UserInventoryAdd>(this.Handle);
            this.SubscribeToMessage <UserAddedMageToArmy>(this.Handle);
            this.SubscribeToMessage <UserAddedMageToInventory>(this.Handle);
        }
示例#2
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);
        }