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); }); }
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(); }
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)); } }
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(); }
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)); }