AKA: GUIs. Such a good feature... These can make or break games, yet we have limited control over them...
I propose we add a whole range of new features and objects to help improve the interface.
==GENERAL==
=PROPERTIES=
1] Reflection
This Enum property controls the reflection an element has. Can be None, X, Y, XY. The position and size are not reflected, though (So the topleft and bottomright corners retain their positions)
|DEFAULT : None|
2] TextOutlineWidth
This integer property controls the size of the texts outline.
|DEFAULT : 1|
3] ClippingType
A special Enum value that only applies for Text and Image elements. It changes what clips its descendants. For Text elements it has the options of Text or Frame. For Image elements it has the options of Alpha, Grayscale and Frame. Alpha makes it so that if something has no transparency (alpha), it is not clipped. Greyscale makes it so that the darker it is, the more its clipped. This will allow for some more interesting effects.
|DEFAULT : Frame|
4] RelativeZIndex
This boolean value controls if the ZIndex of a GUI is relative or not.
|DEFAULT : false|
|NOTE: REQUIRES A CHANGE TO ZINDEX THAT IS SPECIFIED LATER|
=METHODS=
1] TweenColor(Color3 endColor, EasingDirection easingDirection = Out, EasingStyle easingStyle = Quad, float time = 1, bool override = false, Function callback = nil)
This method is similar to TweenPosition, only it changes the color of the element. Does not affect TweenSize/Position.
2] TweenTransparency(float endTransparency, EasingDirection easingDirection = Out, EasingStyle easingStyle = Quad, float time = 1, bool override = false, Function callback = nil)
This method is similar to TweenColor, only with transparency
3] TweenColorAndTransparency(Color3 endColor, float endTransparency, EasingDirection easingDirection = Out, EasingStyle easingStyle = Quad, float time = 1, bool override = false, Function callback = nil)
This method is a combination of TweenColor and TweenTransparency
==NEW OBJECTS==
1] Line
Draws a line between 2 UDim2 points (labeled A and B) with a width you can change at will.
|ADDITIONAL NOTES: Not 100% vital if Rotation is added as you could simply rotate a Frame. But would still be a nice feature|
2] Triange
Draws a triangle between three points (Labeled A, B and C) because you can make almost any shape (even 3D ones) from these simple 2D shapes.
|ADDITIONAL NOTES: Move vital than a line|
3] Circle
Draws a circle with center Origin, width Width and sector percentage (IDK what to call it) SectorPercentage (This property goes between 0 and 1 and controls how much of the circle is drawn, eg 0.5 makes a semicircle)
|ADDITIONAL NOTES: Cannot be made with finite triangles, disagree and you offend the 3.141592 gods of cyclic shapes)
4] ExclusionFrame
This is a bit different. It excludes all parts of its parent that fall under it. A bit like an inverse of ClipsDescendants.
|ADDITIONAL NOTES: Potential property, but for now its own object|
5] SpriteSheet
This object takes a single decal and splits it up into smaller pieces for use in games with retro animated graphics.
|ADDITONAL NOTES: Possible with ClipsDescendants, but less laggy. What a lot of games use|
==CHANGES==
1] ZIndex
The ZIndex is the layer that the element is drawn on. Current limit is... 10. Yeah, useless. It should, instead, be an integer value for much better GUIs.
2] Fonts
VERY important. VERY unsupported. Quite a few factors arise when dealing with these.
FIRST: Drop your current system in support for ACTUAL fonts.
SECOND: Give us at least 100 fonts including sci-fi, modern, handwriting, alien, sybmolic and others.
THIRD: Drop your current Enum size for numeric size (From 1 to 255)
FOURTH: Drop ArialBlack for Bold, Italic, Underlined and Uniform (Where all letters have the same width) properties.
FIFTH: Give us a Lua function for calculating the width of text based on font and fontsize.
SIXTH: Possibly give us a way to upload new fonts (after being moderated) to greater expand the limits of Roblox text.
===FINAL NOTES===
Well, thats it for now on my revised GUI suggestions. Please leave a comment! |