Esempio n. 1
0
        public GameViewModel(IMvxNavigationService navigationService, FakeDAL dal, GameBuild game)
        {
            this.navigationService = navigationService;
            this.dal  = dal;
            this.game = game;
            this.Name = game.Name;

            builds = new MvxObservableCollection <BuildViewModel>(dal.Get <Build>()
                                                                  .Where(x => x.Game.id == game.id)
                                                                  .Select(Create));
            Builds = builds;

            ViewBuildCommand = new MvxAsyncCommand <BuildViewModel>(async b => await navigationService.Navigate(b));
            NewBuildCommand  = new MvxAsyncCommand(async() =>
            {
                Busy = true;
                await RaisePropertyChanged("Busy");
                var bvm = await Task.Run(() =>
                {
                    var build = new Build {
                        Name = "New Build", Game = game
                    };
                    dal.Save(build);
                    return(Create(build));
                });
                builds.Add(bvm);
                Busy = false;
                await RaisePropertyChanged("Busy");
                await navigationService.Navigate(bvm);
            });
        }
Esempio n. 2
0
 public LevelParamViewModel(FakeDAL dal, BuildParameter p, int level, Build b, IMvxCommand <LevelParamViewModel> tap)
 {
     lp = dal.Get <BuildLevelParameter>()
          .Single(x => x.Game.id == p.Game.id && x.Build.id == b.id && x.Parameter.Type.id == p.Type.id && x.Parameter.id == p.id && x.Level == level);
     Amount = lp.Amount;
     Tap    = tap;
     Name   = p.Name;
     Level  = level;
 }
        public MultiParamTypeViewModel(FakeDAL dal, BuildParameterType t, BuildDefinitionManager manager)
            : base(dal, t, manager)
        {
            // Edit defaults
            ChainChange      = false;
            CellChangeAmount = 1;
            TappedCell       = null;
            Increase         = new MvxCommand(() => Change(+CellChangeAmount));
            Decrease         = new MvxCommand(() => Change(-CellChangeAmount));

            // our params
            var oprms = dal.Get <BuildParameter>().Where(x => x.Type.id == t.id && x.Game.id == t.Game.id);

            // Set up cols, grouped
            IList <CHVM> grp = new List <CHVM>(), prm = new List <CHVM>();
            var          gg = oprms.GroupBy(x => x.Category);

            foreach (var pg in gg)
            {
                bool frs = true;
                foreach (var p in pg)
                {
                    grp.Add(frs ? new CHVM {
                        CSpan = pg.Count(), Name = pg.Key
                    } : null);
                    prm.Add(new CHVM {
                        CSpan = 1, Name = p.Name, Sub = true
                    });
                    frs = false;
                }
            }
            CHeaders = grp.Where(x => x != null && x.Name != null).Any() ? new[] { grp, prm }.ToList() : new[] { prm }.ToList();
            // cells, same order as col headers!
            var tapCommand = new MvxCommand <LevelParamViewModel>(lp =>
            {
                if (TappedCell != null)
                {
                    TappedCell.IsSelected = false;
                }
                lp.IsSelected = true;
                TappedCell    = lp;
                CanIncrease   = CanChange(+CellChangeAmount);
                CanDecrease   = CanChange(-CellChangeAmount);
            });
            var plk = oprms.ToDictionary(x => x.Name);

            Cells = Enumerable.Range(1, t.Game.MaxLevel)
                    .Select(l =>
                            prm.Select(x => new LevelParamViewModel(dal, plk[x.Name], l, manager.build, tapCommand))
                            .ToList() as IList <LevelParamViewModel>
                            )
                    .ToList();
        }
Esempio n. 4
0
        ParamTypeViewModel GetVM(BuildParameterType t)
        {
            var opts = dal.Get <BuildParameterTypeLevelPoints>().Where(x => x.Type.id == t.id && x.Game.id == t.Game.id);

            // Is it a yes/no parameter like a skill or abity choice?
            if (opts.All(x => x.Limit == 1) && t.Minimum == 0)
            {
                return(new BinaryParamTypeViewModel(dal, t, manager));
            }
            else
            {
                return(new MultiParamTypeViewModel(dal, t, manager));
            }
        }
Esempio n. 5
0
 public BuildViewModel(FakeDAL dal, Build build)
 {
     this.build     = build;
     this.dal       = dal;
     id             = build.id;
     Name           = build.Name;
     Game           = build.Game.Name;
     manager        = new BuildDefinitionManager(dal, build.Game, build);
     ParameterTypes = new MvxObservableCollection <ParamTypeViewModel>(dal.Get <BuildParameterType>()
                                                                       .Where(x => x.Game.id == build.Game.id)
                                                                       .Select(GetVM)).Concat(new[] { new Lolmodek(dal, new BuildParameterType {
             Game = build.Game, Name = "HAHA"
         }, manager) }).ToList();
 }
Esempio n. 6
0
 public static BuildLevelParameter Get(this FakeDAL dal, int level, BuildParameter param)
 {
     return(dal.Get <BuildLevelParameter>().Single(x => x.Parameter.id == param.id && x.Level == level));
 }