protected void GenerateUserPhotoLinks(PropertyTracker.Dto.Models.PropertyList propertyDtoList)
 {
     foreach (var propertyDto in propertyDtoList.Properties)
     {
         GenerateUserPhotoLinks(propertyDto.Users);
     }            
 }
Example #2
0
        public MapSettingsDialog(IGamePlugin plugin, PropertyTracker <BasicSection> basicSettingsTracker, PropertyTracker <BriefingSection> briefingSettingsTracker,
                                 IDictionary <House, PropertyTracker <House> > houseSettingsTrackers)
        {
            InitializeComponent();

            this.plugin = plugin;
            this.basicSettingsTracker    = basicSettingsTracker;
            this.briefingSettingsTracker = briefingSettingsTracker;
            this.houseSettingsTrackers   = houseSettingsTrackers;

            settingsTreeView.BeginUpdate();
            settingsTreeView.Nodes.Clear();
            settingsTreeView.Nodes.Add("BASIC", "Basic");
            settingsTreeView.Nodes.Add("BRIEFING", "Briefing");

            playersNode = settingsTreeView.Nodes.Add("Players");
            foreach (var player in plugin.Map.Houses)
            {
                var playerNode = playersNode.Nodes.Add(player.Type.Name, player.Type.Name);
                playerNode.Checked = player.Enabled;
            }
            playersNode.Expand();

            settingsTreeView.EndUpdate();
            settingsTreeView.SelectedNode = settingsTreeView.Nodes[0];
        }
Example #3
0
        public PropertyTrackerTests()
        {
            _complexKeysHelperMock = new Mock <IComplexKeysHelper>();
            _expressionsHelperMock = new Mock <IExpressionsHelper>();

            _sut = new PropertyTracker <User>(
                _expressionsHelperMock.Object,
                _complexKeysHelperMock.Object);
        }
        protected void GenerateUserPhotoLink(PropertyTracker.Dto.Models.User userDto)
        {
            //
            // For some reason Url.Content doesn't compute the base url properly for GET "api/users",
            // so we just build it ourselves            
            userDto.PhotoUrl = Url.Content(string.Format("{0}/api/users/{1}/photo", ControllerContext.Configuration.VirtualPathRoot, userDto.Id));
            //userDto.PhotoUrl = Url.Link("GetUserPhotoRoute", userDto.Id); // returns null for GET /api/users

            // If you want a random pic - use this.
            //userDto.PhotoUrl = "http://lorempixel.com/256/256/people/" + userDto.Username; 
        }
Example #5
0
 // Use this for initialization
 public virtual void Start()
 {
     movement            = GetComponentInParent <Movement>();
     target              = transform.position;
     prop                = GetComponent <PropertyTracker>();
     prop["food"]        = 0;
     prop["foodLimit"]   = foodLimit;
     prop["strength"]    = strength;
     prop["size"]        = size;
     prop["attackSpeed"] = attackSpeed;
 }
Example #6
0
 // Use this for initialization
 public virtual void Start()
 {
     movement = GetComponentInParent <Movement>();
     species  = GetComponentInParent <Species>();
     prop     = GetComponent <PropertyTracker>();
     if (species != null)
     {
         if (FoodTags != null)
         {
             foreach (string tag in FoodTags)
             {
                 species.AddFoodTag(tag);
             }
         }
     }
 }
Example #7
0
        public PlayerSettings(IGamePlugin plugin, PropertyTracker <House> houseSettingsTracker)
        {
            this.houseSettingsTracker = houseSettingsTracker;
            house = houseSettingsTracker;

            InitializeComponent();

            edgeComboBox.Items.Clear();
            edgeComboBox.Items.AddRange(new string[] { "North", "South", "West", "East" });

            creditsNud.DataBindings.Add("Value", houseSettingsTracker, "Credits");
            maxBuildingsNud.DataBindings.Add("Value", houseSettingsTracker, "MaxBuilding");
            maxUnitsNud.DataBindings.Add("Value", houseSettingsTracker, "MaxUnit");
            edgeComboBox.DataBindings.Add("SelectedItem", houseSettingsTracker, "Edge");

            switch (plugin.GameType)
            {
            case GameType.TiberianDawn:
                maxInfantryNud.Visible        = maxInfantryLbl.Visible = false;
                maxVesselsNud.Visible         = maxVesselsLbl.Visible = false;
                techLevelNud.Visible          = techLevelLbl.Visible = false;
                iqNud.Visible                 = iqLbl.Visible = false;
                playerControlCheckBox.Visible = playerControlLbl.Visible = false;
                break;

            case GameType.RedAlert:
                maxInfantryNud.DataBindings.Add("Value", houseSettingsTracker, "MaxInfantry");
                maxVesselsNud.DataBindings.Add("Value", houseSettingsTracker, "MaxVessel");
                techLevelNud.DataBindings.Add("Value", houseSettingsTracker, "TechLevel");
                iqNud.DataBindings.Add("Value", houseSettingsTracker, "IQ");
                playerControlCheckBox.DataBindings.Add("Checked", houseSettingsTracker, "PlayerControl");
                break;
            }

            playersListBox.Items.Clear();
            playersListBox.Items.AddRange(plugin.Map.Houses.Select(h => h.Type.Name).ToArray());

            var selectedIndices = new List <int>();

            foreach (var id in house.Allies)
            {
                playersListBox.SetSelected(id, true);
            }

            playersListBox.SelectedIndexChanged += playersListBox_SelectedIndexChanged;
        }
Example #8
0
        private static bool IsProtectedSetter(MemberTracker mt)
        {
            PropertyTracker pt = mt as PropertyTracker;

            if (pt != null)
            {
                MethodInfo mi = pt.GetSetMethod(true);
                if (mi != null && mi.IsProtected())
                {
                    return(true);
                }
            }

            FieldTracker ft = mt as FieldTracker;

            if (ft != null)
            {
                return(ft.Field.IsProtected());
            }

            return(false);
        }
 public C1FlexGridGroupPanel()
 {
     Watermark = new TextBlock();
     Watermark.Text = "Drag a column here to group by that column.";
     Watermark.Margin = new Thickness(8.0);
     Children.Add(Watermark);
     _spMarkers = new StackPanel();
     _spMarkers.Orientation = Orientation.Horizontal;
     _spMarkers.Margin = Watermark.Margin;
     Children.Add(_spMarkers);
     _ddm = new DragDropManager(this);
     _ddm.Dragging += DragDropManager_Dragging;
     _ddm.Dropped += DragDropManager_Dropped;
     _propTracker = new PropertyTracker("FontFamily", "FontSize", "HeaderFontWeight", "HeaderGridLinesBrush", "Foreground", "ColumnHeaderForeground", "ColumnHeaderBackground");
     LayoutUpdated += delegate
     {
         if (this._propTracker.CheckProperties(this.FlexGrid))
         {
             this.RefreshGroupMarkers();
         }
     };
 }
Example #10
0
    //Push properties to appropriate trackers
    private void Setup()
    {
        Species spec = this.GetComponent <Species>();

        spec.sightDistance = this.sightDistance;

        Movement move = this.GetComponent <Movement>();

        move.forwardSpeed = this.forwardSpeed;
        move.turnSpeed    = this.turnSpeed;

        NavMeshAgent nma = this.GetComponent <NavMeshAgent>();

        nma.speed        = this.forwardSpeed;
        nma.angularSpeed = this.turnSpeed;

        PropertyTracker prop = this.GetComponent <PropertyTracker>();

        prop.MaxHealth = this.maxHealth;
        prop.Health    = this.maxHealth;

        prop["eatingSpeed"] = this.eatingSpeed;
    }
Example #11
0
        void Wtf()
        {
            var tracker = PropertyTracker.Create();

            tracker.TrackSet(1, 1, 1);
        }
Example #12
0
 // Use this for initialization
 public void Start()
 {
     anim  = this.GetComponent <Animator>();
     props = this.GetComponent <PropertyTracker>();
 }
 protected void GenerateUserPhotoLinks(PropertyTracker.Dto.Models.UserList userDtoList)
 {
     GenerateUserPhotoLinks(userDtoList.Users);            
 }
Example #14
0
 public ViewModelBase()
 {
     _propertyTracker = new PropertyTracker(FirePropertyChanged);
 }
Example #15
0
        private Func <CallSite, TSelfType, CodeContext, object> MakeGetMemberTarget <TSelfType>(string name, object target, CodeContext context)
        {
            Type type = CompilerHelpers.GetType(target);

            // needed for GetMember call until DynamicAction goes away
            if (typeof(TypeTracker).IsAssignableFrom(type))
            {
                // no fast path for TypeTrackers
                PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast TypeTracker");
                return(null);
            }

            MemberGroup members = Context.Binder.GetMember(MemberRequestKind.Get, type, name);

            if (members.Count == 0 && type.IsInterface())
            {
                // all interfaces have object members
                type    = typeof(object);
                members = Context.Binder.GetMember(MemberRequestKind.Get, type, name);
            }

            if (members.Count == 0 && typeof(IStrongBox).IsAssignableFrom(type))
            {
                // no fast path for strong box access
                PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast StrongBox");
                return(null);
            }

            MethodInfo getMem = Context.Binder.GetMethod(type, "GetCustomMember");

            if (getMem != null && getMem.IsSpecialName)
            {
                // no fast path for custom member access
                PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast GetCustomMember " + type);
                return(null);
            }

            Expression   error;
            TrackerTypes memberType = Context.Binder.GetMemberType(members, out error);

            if (error == null)
            {
                PythonType argType  = DynamicHelpers.GetPythonTypeFromType(type);
                bool       isHidden = argType.IsHiddenMember(name);
                if (isHidden)
                {
                    PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast FilteredMember " + memberType);
                    return(null);
                }

                switch (memberType)
                {
                case TrackerTypes.TypeGroup:
                case TrackerTypes.Type:
                    object typeObj;
                    if (members.Count == 1)
                    {
                        typeObj = DynamicHelpers.GetPythonTypeFromType(((TypeTracker)members[0]).Type);
                    }
                    else
                    {
                        TypeTracker typeTracker = (TypeTracker)members[0];
                        for (int i = 1; i < members.Count; i++)
                        {
                            typeTracker = TypeGroup.UpdateTypeEntity(typeTracker, (TypeTracker)members[i]);
                        }
                        typeObj = typeTracker;
                    }

                    return(new FastTypeGet <TSelfType>(type, typeObj).GetTypeObject);

                case TrackerTypes.Method:
                    PythonTypeSlot slot = PythonTypeOps.GetSlot(members, name, _context.DomainManager.Configuration.PrivateBinding);
                    if (slot is BuiltinMethodDescriptor)
                    {
                        return(new FastMethodGet <TSelfType>(type, (BuiltinMethodDescriptor)slot).GetMethod);
                    }
                    else if (slot is BuiltinFunction)
                    {
                        return(new FastSlotGet <TSelfType>(type, slot, DynamicHelpers.GetPythonTypeFromType(type)).GetRetSlot);
                    }
                    return(new FastSlotGet <TSelfType>(type, slot, DynamicHelpers.GetPythonTypeFromType(type)).GetBindSlot);

                case TrackerTypes.Event:
                    if (members.Count == 1 && !((EventTracker)members[0]).IsStatic)
                    {
                        slot = PythonTypeOps.GetSlot(members, name, _context.DomainManager.Configuration.PrivateBinding);
                        return(new FastSlotGet <TSelfType>(type, slot, DynamicHelpers.GetPythonTypeFromType(((EventTracker)members[0]).DeclaringType)).GetBindSlot);
                    }
                    PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast Event " + members.Count + " " + ((EventTracker)members[0]).IsStatic);
                    return(null);

                case TrackerTypes.Property:
                    if (members.Count == 1)
                    {
                        PropertyTracker pt = (PropertyTracker)members[0];
                        if (!pt.IsStatic && pt.GetIndexParameters().Length == 0)
                        {
                            MethodInfo      prop = pt.GetGetMethod();
                            ParameterInfo[] parameters;

                            if (prop != null && (parameters = prop.GetParameters()).Length == 0)
                            {
                                if (prop.ReturnType == typeof(bool))
                                {
                                    return(new FastPropertyGet <TSelfType>(type, CallInstruction.Create(prop, parameters).Invoke).GetPropertyBool);
                                }
                                else if (prop.ReturnType == typeof(int))
                                {
                                    return(new FastPropertyGet <TSelfType>(type, CallInstruction.Create(prop, parameters).Invoke).GetPropertyInt);
                                }
                                else
                                {
                                    return(new FastPropertyGet <TSelfType>(type, CallInstruction.Create(prop, parameters).Invoke).GetProperty);
                                }
                            }
                        }
                    }
                    PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast Property " + members.Count + " " + ((PropertyTracker)members[0]).IsStatic);
                    return(null);

                case TrackerTypes.All:
                    getMem = Context.Binder.GetMethod(type, "GetBoundMember");
                    if (getMem != null && getMem.IsSpecialName)
                    {
                        PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast GetBoundMember " + type);
                        return(null);
                    }

                    if (members.Count == 0)
                    {
                        // we don't yet support fast bindings to extension methods
                        members = context.ModuleContext.ExtensionMethods.GetBinder(_context).GetMember(MemberRequestKind.Get, type, name);
                        if (members.Count == 0)
                        {
                            if (IsNoThrow)
                            {
                                return(new FastErrorGet <TSelfType>(type, name, context.ModuleContext.ExtensionMethods).GetErrorNoThrow);
                            }
                            else if (SupportsLightThrow)
                            {
                                return(new FastErrorGet <TSelfType>(type, name, context.ModuleContext.ExtensionMethods).GetErrorLightThrow);
                            }
                            else
                            {
                                return(new FastErrorGet <TSelfType>(type, name, context.ModuleContext.ExtensionMethods).GetError);
                            }
                        }
                    }
                    return(null);

                default:
                    PerfTrack.NoteEvent(PerfTrack.Categories.BindingSlow, "GetNoFast " + memberType);
                    return(null);
                }
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                foreach (MemberTracker mi in members)
                {
                    if (sb.Length != 0)
                    {
                        sb.Append(", ");
                    }
                    sb.Append(mi.MemberType);
                    sb.Append(" : ");
                    sb.Append(mi.ToString());
                }

                return(new FastErrorGet <TSelfType>(type, sb.ToString(), context.ModuleContext.ExtensionMethods).GetAmbiguous);
            }
        }
Example #16
0
 // Use this for initialization
 void Start()
 {
     prop = GetComponentInParent <PropertyTracker>();
 }
Example #17
0
        internal static ReflectedGetterSetter GetReflectedProperty(PropertyTracker pt, MemberGroup allProperties, bool privateBinding)
        {
            ReflectedGetterSetter rp;

            lock (_propertyCache) {
                if (_propertyCache.TryGetValue(pt, out rp))
                {
                    return(rp);
                }

                NameType   nt     = NameType.PythonProperty;
                MethodInfo getter = FilterProtectedGetterOrSetter(pt.GetGetMethod(true), privateBinding);
                MethodInfo setter = FilterProtectedGetterOrSetter(pt.GetSetMethod(true), privateBinding);

                if ((getter != null && PythonHiddenAttribute.IsHidden(getter, true)) ||
                    (setter != null && PythonHiddenAttribute.IsHidden(setter, true)))
                {
                    nt = NameType.Property;
                }

                ExtensionPropertyTracker ept = pt as ExtensionPropertyTracker;
                if (ept == null)
                {
                    ReflectedPropertyTracker rpt = pt as ReflectedPropertyTracker;
                    Debug.Assert(rpt != null);

                    if (PythonBinder.IsExtendedType(pt.DeclaringType) ||
                        PythonHiddenAttribute.IsHidden(rpt.Property, true))
                    {
                        nt = NameType.Property;
                    }

                    if (pt.GetIndexParameters().Length == 0)
                    {
                        List <MethodInfo> getters = new List <MethodInfo>();
                        List <MethodInfo> setters = new List <MethodInfo>();

                        IList <ExtensionPropertyTracker> overriddenProperties = NewTypeMaker.GetOverriddenProperties((getter ?? setter).DeclaringType, pt.Name);
                        foreach (ExtensionPropertyTracker tracker in overriddenProperties)
                        {
                            MethodInfo method = tracker.GetGetMethod(privateBinding);
                            if (method != null)
                            {
                                getters.Add(method);
                            }

                            method = tracker.GetSetMethod(privateBinding);
                            if (method != null)
                            {
                                setters.Add(method);
                            }
                        }

                        foreach (PropertyTracker propTracker in allProperties)
                        {
                            MethodInfo method = propTracker.GetGetMethod(privateBinding);
                            if (method != null)
                            {
                                getters.Add(method);
                            }

                            method = propTracker.GetSetMethod(privateBinding);
                            if (method != null)
                            {
                                setters.Add(method);
                            }
                        }
                        rp = new ReflectedProperty(rpt.Property, getters.ToArray(), setters.ToArray(), nt);
                    }
                    else
                    {
                        rp = new ReflectedIndexer(((ReflectedPropertyTracker)pt).Property, NameType.Property, privateBinding);
                    }
                }
                else
                {
                    rp = new ReflectedExtensionProperty(new ExtensionPropertyInfo(pt.DeclaringType, getter ?? setter), nt);
                }

                _propertyCache[pt] = rp;

                return(rp);
            }
        }
 public ImageButtonRenderer()
 {
     PropertyTracker.AddHandler(ImageButton.ImageProperty, HandleImage);
 }