Example #1
0
            public void SetState(BasePlayer player, GUIElementBase definition)
            {
                var state = GetState(player, definition);

                if (state == null)
                {
                    return;
                }

                foreach (var kvp in state)
                {
                    definition.GetType().GetProperty(kvp.Key, BindingFlags.Instance | BindingFlags.Public).SetValue(definition, kvp.Value);
                }
            }
Example #2
0
            public void ChangeState(BasePlayer player, GUIElementBase definition, StateSetter setter)
            {
                var state = setter.Invoke(GetState(player, definition));

                if (state == null)
                {
                    return;
                }

                _states[player][GetElementHash(definition)] = state;

                foreach (var kvp in state)
                {
                    definition.GetType().GetProperty(kvp.Key, BindingFlags.Instance | BindingFlags.Public).SetValue(definition, kvp.Value);
                }
            }
Example #3
0
            public void RegisterDefaultState(GUIElementBase definition, bool full = false)
            {
                var key   = GetElementHash(definition);
                var value = new StateCollection();

                var props = definition.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

                foreach (var prop in props)
                {
                    value.Add(prop.Name, prop.GetValue(definition));
                }

                if (full)
                {
                    var objs = definition.Render();

                    foreach (var obj in objs)
                    {
                        var name = obj.Name;
                    }
                }

                _defaultStates.Add(key, value);
            }
Example #4
0
 private string GetElementHash(GUIElementBase element)
 {
     return(new StringBuilder().Append(element.GetType().FullName).Append(element.Render()?.First().Name).Append(element.GetHashCode()).ToString());
 }