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
        }
示例#2
0
 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));
                }
            }
        }
示例#4
0
        //[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;
 }
示例#6
0
 /* 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);
        }
示例#9
0
 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));
 }
示例#11
0
 /* IEnumerable */
 public IEnumerator <WeightedPoint> GetEnumerator() => PreferredPosition.GetEnumerator();
示例#12
0
        public int CompareTo(object obj)
        {
            Player that = (Player)obj;

            return(PreferredPosition.CompareTo(that.PreferredPosition) + FirstName.CompareTo(that.FirstName));
        }