/// <summary> /// Inserts heat map tool /// </summary> /// <param name="dropStatInfoSource">Target <see cref="StatInfo"/> to insert heat map</param> private void InsertHeatMap(HudGaugeIndicatorStatInfo dropStatInfoSource, Point position) { if (dropStatInfoSource.HeatMapViewModel != null) { return; } var factory = ServiceLocator.Current.GetInstance <IHudToolFactory>(); if (tool.Tools == null) { tool.Tools = new ReactiveList <HudLayoutTool>(); } var creationInfo = new HudToolCreationInfo { HudElement = Parent, Position = position, ToolType = HudDesignerToolType.HeatMap, Tools = tool.Tools, Source = dropStatInfoSource.Stat }; factory.CreateTool(creationInfo); RefreshGroupedStats(); }
/// <summary> /// Creates heat map view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>Graph view model</returns> private HudBaseToolViewModel CreateHeatMapTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Tools != null, "Layout.Tools isn't defined. Heat map has not been created."); var statInfo = creationInfo.Source as StatInfo; HudLayoutHeatMapTool layoutTool = null; if (statInfo == null) { return(null); } statInfo.IsSelected = false; layoutTool = new HudLayoutHeatMapTool { BaseStat = statInfo.Clone() }; var random = new Random(); layoutTool.BaseStat.CurrentValue = random.Next(0, 100); var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.Position = creationInfo.Position; creationInfo.Tools.Add(layoutTool); return(toolViewModel); }
/// <summary> /// Creates gauge indicator view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>Gauge indicator view model</returns> private HudBaseToolViewModel CreateGaugeIndicatorTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Layout != null, "Layout isn't defined. Gauge indicator has not been created."); var statInfo = creationInfo.Source as StatInfo; if (statInfo == null) { return(null); } statInfo.IsSelected = false; var layoutTool = new HudLayoutGaugeIndicator { BaseStat = statInfo.Clone(), Text = statInfo.ToolTip }; var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.Position = creationInfo.Position; creationInfo.Layout.LayoutTools.Add(layoutTool); return(toolViewModel); }
/// <summary> /// Creates bumper stickers view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>Tilt meter view model</returns> private HudBaseToolViewModel CreateBumperStickersTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Layout != null, "Layout isn't defined. Bumper stickers have not been created."); var layoutTool = new HudLayoutBumperStickersTool { UIPositions = GetHudUIPositions(EnumTableType.HU, EnumTableType.HU, creationInfo.Position) }; layoutTool.UIPositions.ForEach(x => { x.Width = HudDefaultSettings.BumperStickersWidth; x.Height = HudDefaultSettings.BumperStickersHeight; }); var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.InitializePositions(); if (toolViewModel.Parent != null) { toolViewModel.Parent.Stickers = new ObservableCollection <HudBumperStickerType>(creationInfo.Layout.HudBumperStickerTypes.Select(x => x.Clone())); } creationInfo.Layout.LayoutTools.Add(layoutTool); return(toolViewModel); }
/// <summary> /// Creates tilt meter view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>Tilt meter view model</returns> private HudBaseToolViewModel CreateTiltMeterTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Layout != null, "Layout isn't defined. 4-stat box has not been created."); var layoutTool = new HudLayoutTiltMeterTool { UIPositions = GetHudUIPositions(EnumTableType.HU, EnumTableType.HU, creationInfo.Position) }; layoutTool.UIPositions.ForEach(x => { x.Width = HudDefaultSettings.TiltMeterWidth; x.Height = HudDefaultSettings.TiltMeterHeight; }); var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.InitializePositions(); if (toolViewModel.Parent != null) { toolViewModel.Parent.TiltMeter = HudDefaultSettings.TiltMeterDesignerValue; } creationInfo.Layout.LayoutTools.Add(layoutTool); return(toolViewModel); }
/// <summary> /// Creates graph view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>Graph view model</returns> private HudBaseToolViewModel CreateGraphTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Layout != null, "Layout isn't defined. Graph has not been created."); var statInfo = creationInfo.Source as StatInfo; HudLayoutGraphTool layoutTool = null; if (statInfo != null) { statInfo.IsSelected = false; var initialStat = statInfo.Stat == Stat.PlayerInfoIcon ? StatsProvider.GetStat(Stat.NetWon) : statInfo.Clone(); layoutTool = new HudLayoutGraphTool { BaseStat = statInfo.Clone(), Stats = new ReactiveList <StatInfo> { initialStat } }; } else { var parentTool = creationInfo.Source as HudBaseToolViewModel; if (parentTool == null) { return(null); } layoutTool = new HudLayoutGraphTool { ParentId = parentTool.Tool.Id }; } var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.Position = creationInfo.Position; creationInfo.Layout.LayoutTools.Add(layoutTool); return(toolViewModel); }
/// <summary> /// Creates <see cref="HudBaseToolViewModel"/> based on the specified <see cref="HudToolCreationInfo"/> /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/> to create new hud tool</param> /// <returns>Created <see cref="HudBaseToolViewModel"/></returns> public HudBaseToolViewModel CreateTool(HudToolCreationInfo creationInfo) { Check.ArgumentNotNull(() => creationInfo); switch (creationInfo.ToolType) { case HudDesignerToolType.PlainStatBox: return(CreatePlainStatBoxTool(creationInfo)); case HudDesignerToolType.FourStatBox: return(CreateFourStatBoxTool(creationInfo)); case HudDesignerToolType.GaugeIndicator: return(CreateGaugeIndicatorTool(creationInfo)); case HudDesignerToolType.TiltMeter: return(CreateTiltMeterTool(creationInfo)); case HudDesignerToolType.PlayerProfileIcon: return(CreatePlayerIconTool(creationInfo)); case HudDesignerToolType.Graph: return(CreateGraphTool(creationInfo)); case HudDesignerToolType.TextBox: return(CreateTextBoxTool(creationInfo)); case HudDesignerToolType.BumperStickers: return(CreateBumperStickersTool(creationInfo)); case HudDesignerToolType.HeatMap: return(CreateHeatMapTool(creationInfo)); default: throw new NotSupportedException($"{creationInfo.ToolType} isn't supported"); } }
/// <summary> /// Creates 4-stat box view model /// </summary> /// <param name="creationInfo"><see cref="HudToolCreationInfo"/></param> /// <returns>4-stat box view model</returns> private HudBaseToolViewModel CreateFourStatBoxTool(HudToolCreationInfo creationInfo) { Check.Require(creationInfo.Layout != null, "Layout isn't defined. 4-stat box has not been created."); var layoutTool = new HudLayoutFourStatsBoxTool { Stats = new ReactiveList <StatInfo>(), UIPositions = GetHudUIPositions(EnumTableType.HU, EnumTableType.HU, creationInfo.Position) }; layoutTool.UIPositions.ForEach(x => { x.Width = HudDefaultSettings.FourStatBoxWidth; x.Height = HudDefaultSettings.FourStatBoxHeight; }); var toolViewModel = layoutTool.CreateViewModel(creationInfo.HudElement); toolViewModel.InitializePositions(); creationInfo.Layout.LayoutTools.Add(layoutTool); return(toolViewModel); }