public virtual void TryGetPreferredPosition() { Check(); PreferredPosition.Clear(); Point spritetSize = SpriteColorSize; Value[,] valueMap = new Value[spritetSize.X, spritetSize.Y]; EffectiveArea = GetEffectiveArea(); foreach (Point point in GetShiftPosition()) { for (int index = 0; index < EffectiveArea.Length; index++) { Point selectPoint = EffectiveArea[index]; JPColor spriteColor = SpriteColor[selectPoint.X, selectPoint.Y]; JPColor effectColor = EffectSpriteColor[point.X + selectPoint.X, point.Y + selectPoint.Y]; valueMap[selectPoint.X, selectPoint.Y] = GetDeltaValue(effectColor, spriteColor); } if (ValueMapIsBetter(valueMap, out float averageValue)) { PreferredPosition.Add(new WeightedPoint(point, averageValue)); } } #if DEBUG && MVC && !PARALLELMODE System.Text.StringBuilder builder = new System.Text.StringBuilder(); foreach (WeightedPoint weightedPoint in PreferredPosition) { builder.AppendLine($"{nameof(WeightedPoint)} : {weightedPoint}"); } Log.WriteData(null, $"ColorMatch.TryGetPreferredPosition, PreferredPosition : {PreferredPosition.Count}", builder.ToString()); #endif }
public ControlWheelSegment(string name, Action action, Sprite icon, PreferredPosition preferredPosition = PreferredPosition.None) { this.name = name; this.action = action; this.icon = icon; this.preferredPosition = preferredPosition; }
public virtual void TryGetNearlyPreferredPosition(int distance) { Check(); Point spriteSize = SpriteColorSize; HashSet <Point> points = new HashSet <Point>(); foreach (WeightedPoint weightedPoint in PreferredPosition) { foreach (Point point in ShiftPosition.EnumItNearly(EffectSpriteColorSize, spriteSize, weightedPoint.Position, distance)) { points.Add(point); } } PreferredPosition.Clear(); EffectiveArea = GetEffectiveArea(); Value[,] valueMap = new Value[spriteSize.X, spriteSize.Y]; foreach (Point point in points) { foreach (Point selectPoint in EffectiveArea) { JPColor effectColor = EffectSpriteColor[point.X + selectPoint.X, point.Y + selectPoint.Y]; JPColor spriteColor = SpriteColor[selectPoint.X, selectPoint.Y]; valueMap[selectPoint.X, selectPoint.Y] = GetDeltaValue(effectColor, spriteColor); } if (ValueMapIsBetter(valueMap, out float averageValue)) { PreferredPosition.Add(new WeightedPoint(point, averageValue)); } } }
//[Conditional("DEBUG")] private void ItemMetadataCollectionCheckPreferredPositions() { PreferredPosition currentPreferredPosition = PreferredPosition.First; bool first = true; foreach (var itemMetadata in ItemMetadataCollection) { var prefPos = ((PreferredPositionItemMetadata)itemMetadata).PreferredPosition; if (first) { currentPreferredPosition = prefPos; } first = false; if (prefPos < currentPreferredPosition) { Debug.Fail("Corrupted PreferredPosition order !!"); } if (prefPos > currentPreferredPosition) { currentPreferredPosition = prefPos; } } }
/** * ControlWheelSegment - Constructor * Takes a name (can be null), an Action (should not be null), a Sprite icon (can be null) and an optional PreferredPosition */ public ControlWheelSegment(string name, Action action, Sprite icon, PreferredPosition preferredPosition = PreferredPosition.None, bool showLabel = false) { this.Name = name; this.Action = action; this.Icon = icon; this.preferredPosition = preferredPosition; this.ShowLabel = showLabel; }
/* ctor */ public JPRGBAColorMatch( JPColor[,] effectSpriteColor, JPColor[,] spriteColor, ShiftPositionPropensity propensity, WeightedPoint[] preferredPositions = null) : base() { EffectSpriteColor = effectSpriteColor ?? throw new NullReferenceException(nameof(effectSpriteColor)); SpriteColor = spriteColor ?? throw new NullReferenceException(nameof(spriteColor)); Propensity = propensity; if (preferredPositions != null) { PreferredPosition.AddRange(preferredPositions); } }
//public event PropertyChangedEventHandler PropertyChanged; //public void DispatchPropertyChangedEvent(PropertyChangedEventArgs e) //{ // var handler = PropertyChanged; // if (handler != null) // { // handler(this, e); // } //} public int AddToolBarGroup(RichDelegateCommand[] commands, PreferredPosition position) { //m_Logger.Log(@"AddToolBarGroup", Category.Debug, Priority.Medium); #if DEBUG if (!Dispatcher.CheckAccess()) { Debugger.Break(); } #endif int uid = getNewUid(); //IRegion targetRegion = m_RegionManager.Regions[RegionNames.MainToolbar]; int count = 0; foreach (var command in commands) { string viewname = uid + @"_" + count++; //m_Logger.Log(@"}}}}}}}}}}}}}> AddToolBar: " + position + " (" + viewname + ") " + command.ShortDescription, Category.Debug, Priority.Medium); m_RegionManager.RegisterNamedViewWithRegion(RegionNames.MainToolbar, new PreferredPositionNamedView { m_viewName = viewname, m_viewInstance = command, m_viewPreferredPosition = position }); //m_RegionManager.RegisterViewWithRegion(RegionNames.MainToolbar, () => cmd); //targetRegion.Add(command, viewname); //targetRegion.Activate(command); } #if DEBUG if (count == 0) { Debugger.Break(); } #endif string name = uid + @"_" + count++; var sep = new Separator(); //var sep = name; // will be picked-up by Data Template (DataType System:String) m_RegionManager.RegisterNamedViewWithRegion(RegionNames.MainToolbar, new PreferredPositionNamedView { m_viewName = name, m_viewInstance = sep, m_viewPreferredPosition = position }); //m_RegionManager.RegisterViewWithRegion(RegionNames.MainToolbar, () => sep); //targetRegion.Add(sep, name); //targetRegion.Activate(sep); return(uid); }
public int AddMenuBarGroup(string topLevelMenuItemId, PreferredPosition positionInTopLevel, bool addSeparatorTopLevel, string subMenuItemId, PreferredPosition positionInSubLevel, bool addSeparatorSubLevel, object[] commands) { //m_Logger.Log(@"AddMenuBarGroup", Category.Debug, Priority.Medium); #if DEBUG if (!Dispatcher.CheckAccess()) { Debugger.Break(); } #endif int uid = generateNewUid(); if (commands == null) { #if DEBUG Debugger.Break(); #endif return(uid); } IRegion targetRegionTop; if (m_RegionManager.Regions.ContainsRegionWithName(topLevelMenuItemId)) { targetRegionTop = m_RegionManager.Regions[topLevelMenuItemId]; } else { var menuRoot = new MenuItemRichCommand { Header = topLevelMenuItemId, Name = "MENU_ITEM_" + uid + @"__0", HorizontalContentAlignment = HorizontalAlignment.Left, VerticalContentAlignment = VerticalAlignment.Center }; //RegionManager.SetRegionManager(menuRoot, m_RegionManager); RegionManager.SetRegionName(menuRoot, topLevelMenuItemId); //RegionManager.UpdateRegions(); MenuBarAnchor.Items.Add(menuRoot); targetRegionTop = m_RegionManager.Regions[topLevelMenuItemId]; } int count = 0; bool needTopLevelSeparator = false; IRegion targetRegionSub = null; var subRegionName = subMenuItemId; // @"SubMenuRegion_" + uid; if (!string.IsNullOrEmpty(subRegionName)) { if (m_RegionManager.Regions.ContainsRegionWithName(subRegionName)) { targetRegionSub = m_RegionManager.Regions[subRegionName]; needTopLevelSeparator = false; } else { needTopLevelSeparator = true; } } if (addSeparatorTopLevel && (needTopLevelSeparator || targetRegionSub == null)) { object view = new MenuBarSeparator(); #if true || DEBUG if (PreferredPositionRegion.MARK_PREFERRED_POS) { view = new MenuItem { Header = positionInTopLevel.ToString("G") + " >> -------" } } ; #endif string viewname_ = (!string.IsNullOrEmpty(subMenuItemId) ? @"SUB_" : "") + uid + @"_" + count++; m_RegionManager.RegisterNamedViewWithRegion(targetRegionTop.Name, new PreferredPositionNamedView { m_viewName = viewname_, m_viewInstance = view, m_viewPreferredPosition = positionInTopLevel }); //m_RegionManager.RegisterViewWithRegion(targetRegion.Name, () => sep); //targetRegion.Add(sep, viewname); //targetRegion.Activate(sep); } if (targetRegionSub == null && !string.IsNullOrEmpty(subRegionName)) { string viewname = @"SUB_" + uid + @"_" + count++; var subMenuRoot = new MenuItemRichCommand { Header = subMenuItemId, Name = "MENU_ITEM_" + viewname, HorizontalContentAlignment = HorizontalAlignment.Left, VerticalContentAlignment = VerticalAlignment.Center }; #if true || DEBUG if (PreferredPositionRegion.MARK_PREFERRED_POS) { subMenuRoot.Header = positionInTopLevel.ToString("G") + " >> " + subMenuRoot.Header; } #endif //RegionManager.SetRegionManager(menuRoot, m_RegionManager); RegionManager.SetRegionName(subMenuRoot, subRegionName); //RegionManager.UpdateRegions(); m_RegionManager.RegisterNamedViewWithRegion(targetRegionTop.Name, new PreferredPositionNamedView { m_viewName = viewname, m_viewInstance = subMenuRoot, m_viewPreferredPosition = positionInTopLevel }); //m_RegionManager.RegisterViewWithRegion(targetRegion.Name, () => menuRoot); //targetRegion.Add(menuRoot); //, viewname); //targetRegion.Activate(menuRoot); targetRegionSub = m_RegionManager.Regions[subRegionName]; } if (addSeparatorSubLevel && targetRegionSub != null) { object view = new MenuBarSeparator(); #if true || DEBUG if (PreferredPositionRegion.MARK_PREFERRED_POS) { view = new MenuItem { Header = positionInSubLevel.ToString("G") + " >> -------" } } ; #endif string viewname = uid + @"_" + count++; m_RegionManager.RegisterNamedViewWithRegion(targetRegionSub.Name, new PreferredPositionNamedView { m_viewName = viewname, m_viewInstance = view, m_viewPreferredPosition = positionInSubLevel }); //m_RegionManager.RegisterViewWithRegion(targetRegion.Name, () => sep); //targetRegion.Add(sep, viewname); //targetRegion.Activate(sep); } var actualPosition = (string.IsNullOrEmpty(subMenuItemId) ? positionInTopLevel : positionInSubLevel); foreach (var command in commands) { if (command is RichDelegateCommand) { #if true || DEBUG if (PreferredPositionRegion.MARK_PREFERRED_POS) { string str = ((RichDelegateCommand)command).ShortDescription; ((RichDelegateCommand)command).ShortDescription = actualPosition.ToString("G") + " >> " + str; } #endif string viewname = uid + @"_" + count++; m_RegionManager.RegisterNamedViewWithRegion((targetRegionSub ?? targetRegionTop).Name, new PreferredPositionNamedView { m_viewName = viewname, m_viewInstance = command, m_viewPreferredPosition = actualPosition }); //m_RegionManager.RegisterViewWithRegion(targetRegion.Name, () => command); //targetRegion.Add(command, viewname); //targetRegion.Activate(command); } else if (command is TwoStateMenuItemRichCommand_DataContextWrapper) { #if true || DEBUG if (PreferredPositionRegion.MARK_PREFERRED_POS) { string str = ((TwoStateMenuItemRichCommand_DataContextWrapper)command).RichCommandOne.ShortDescription; ((TwoStateMenuItemRichCommand_DataContextWrapper)command).RichCommandOne.ShortDescription = actualPosition.ToString("G") + " >> " + str; str = ((TwoStateMenuItemRichCommand_DataContextWrapper)command).RichCommandTwo.ShortDescription; ((TwoStateMenuItemRichCommand_DataContextWrapper)command).RichCommandTwo.ShortDescription = actualPosition.ToString("G") + " >> " + str; } #endif string viewname = uid + @"_" + count++; m_RegionManager.RegisterNamedViewWithRegion((targetRegionSub ?? targetRegionTop).Name, new PreferredPositionNamedView { m_viewName = viewname, m_viewInstance = command, m_viewPreferredPosition = actualPosition }); //m_RegionManager.RegisterViewWithRegion(targetRegion.Name, () => command); //targetRegion.Add(command, viewname); //targetRegion.Activate(command); } } return(uid); }
public override string ToString() { return($"{FirstName} {Surname} ({Age}) {PreferredPosition.ToString().ToUpper()} "); }
public int AddMenuBarGroup(string topLevelMenuItemId, PreferredPosition positionInTopLevel, bool addSeparatorTopLevel, string subMenuItemId, PreferredPosition positionInSubLevel, bool addSeparatorSubLevel, object[] commands) { return(m_MenuBarView.AddMenuBarGroup(topLevelMenuItemId, positionInTopLevel, addSeparatorTopLevel, subMenuItemId, positionInSubLevel, addSeparatorSubLevel, commands)); }
/* IEnumerable */ public IEnumerator <WeightedPoint> GetEnumerator() => PreferredPosition.GetEnumerator();
public int CompareTo(object obj) { Player that = (Player)obj; return(PreferredPosition.CompareTo(that.PreferredPosition) + FirstName.CompareTo(that.FirstName)); }