## 0.2.5.1
Experimenting with the way multiple CUIs resolve conflicts
Renamed CUI.UpdateHookIdentifier => CUI.HookIdentifier
now i'm using it in harmony patches to

added warning if it's not set

fixed crash in GUI_UpdateMouseOn_Postfix
Added null checks in GUI_UpdateMouseOn_Postfix

## 0.2.5.0
Added CUI.UpdateHookIdentifier it will be set as identifier to CUI think hook, it very important to set it or hooks from different CUIs will conflict

Added CUIAnimation
Added IgnoreTransparent prop, if true mouse events will work only on not transparent sprites
Added Transparency prop, it multiplies BackgroundColor.A and is propagated to Children

Made CUISpite an object... again
Added Rotation, Origin and Offset to CUISprite
Added option to load CUISprites with base folder, which allows deserialized components to load sprites from the same folder with relative paths

Added CUIMenu, check "Custom Menus" mod, CUIRadialMenu (the ugly brother of CUIMenu)

Added more docs

## 0.2.4.0

"Fixed" cursed bug that made MainComponents become in GameMain.Update patch after multiple lobbies in compiled version
But this "fix" seems to decrease update smoothness, so i might rethink later
Set CUI.UseCursedPatches to true if you're not affraid

Added more performance measurements, shortcutted dumb class scanning in CUILuaRegistrar that happened even if you didn't use lua

Buttons now update their color only on events and not in draw cycle, added AutoUpdateColor to prevent this color change in case you want to control it manually (why?)

Added confusing event InvokeOnMouseOff which is symmetrical to InvokeOnMouseOn but happens on previous MouseOn list, and it turned out to be essential to e.g. switch color when mouse leaves a button

You can now limit resize directions with CUIComponent.ResizeDirection

Fixed forsed size not reseting after removing a textblock

Added cuiprinttree command along with cuidraworder


## 0.2.3.0

Made CUITextInput, CUITickBox and CUISlider use commands and consume data

Added Gap to CUIVerticalList

Made OnAnyCommand,OnAnyData,OnConsume events instead of delegates

added ReflectCommands and RetranslateCommands props, so you could define in xml that a wrapper should sync state between its children

Setting a Palette prop now won't automatically set palette for all children because it doesn't work as intended on deserialized components, use DeepPalette instead

CUISlider now have Range and Precision

CUI.OnPauseMenuToggled will now trigger even when resume button in pause menu is pressed

You can no just set CUIPalette.DefaultPalette before CUI.Initialize instead of manually loading it

Palettes now remember their BaseColor so you could replicate them

Added more useless CUIPrefabs, i think they are too specific and need some redesign, perhaps i need to create some builder 

Added FloatRange alongside with IntRange

fixed crash in KeyboardDispatcher_set_Subscriber_Replace in compiled mods

## 0.2.2.1

Minor stuff: multibutton dispatches the command, CUIPages resizes page to [0,0,1,1], maincomponent flatten tree is a bit more thread safe

Added IRefreshable interface and CUIComponent.CascadeRefresh
CascadeRefresh will recursivelly call Refresh on every child that implements IRefreshable

## 0.2.2.0

Added to CUI.cs
```
using System.Runtime.CompilerServices;
[assembly: IgnoresAccessChecksTo("Barotrauma")]
[assembly: IgnoresAccessChecksTo("DedicatedServer")]
[assembly: IgnoresAccessChecksTo("BarotraumaCore")]
```
So it could be compiled

#### Temporary solution to pathing:

Now mod won't automatially find its folders

If you want to use lua you need to set CUI.ModDir to the mod folder path

Also you need to place Assets folder with CUI stuff somewhere in your mod and set CUI.AssetsPath to it  
You can rename it, just set the path

All this needs to be done before CUI.Initialize()

## 0.2.1.0

Dried tree building methods, added tests for them

Added insert method along with append and prepend, unlike List.Insert it won't throw on "index out of bounds"

## 0.2.0.1

.nojekyll moment

## 0.2.0.0

Reworked CUIPalette, and CUICommand, check docs

Reworked border, added separate borders for each side, border sprite, outline

Changed how zindex is calculated, now every next child will have higher zindex -> everything in one frame will be above or below everything in the other

optimized CUITextBlock measurements, added some validation to CUITextInput

Added CUIPresets with... presets. Which you can use to reduce boilerplate code 

Made more stuff parsable and serializble

And tons of other things i'm too lazy to write down, compare commits if you're curious


## 0.1.0.0

You can now use relative paths for sprite textures  
You can set CUI.PGNAssets to the folder with your assets, CUI will also search for textures there

Reworked MasterColorOpaque, it now just uses base color alpha

Synced vertical and horizontal lists, added ScrollSpeed

OnUpdate event now invoked before layout calcs, Also added OnLayoutUpdated event, it's invoked before recalc of children layouts

"Fixed" imprecise rects that e.g. caused sprite overlap and gaps

Added CrossRelative prop, it's like Relative but values are relative to the oposite value, e.g. CrossRelative.Width = Host.Real.Height, convinient for making square things

Reworked slider component

DragHandle can now DragRelative to the parent 

#### Serialization 

Added BreakSerialization prop, if true serrialization will stop on this component

Added LoadSelfFromFile, SaveToTheSamePath methods

Added Hydrate method, it will run right after deserizlization, allowing you to access children with Get<> and e.g. save them to local vars

Added SaveAfterLoad prop, it's mostly for serialization debugging

Added more Custom ToString and parsed methods to CUIExtensions, Added native enum serialization, Vector2 and Rectangle is now serialized into [ x, y ], be carefull

Sprite is now fully serializable

## 0.0.5.1

Added "[CUISerializable] public string Command { get; set; }"" to CUIButton so you could define command that is called on click in xml

Splitted MasterColor into MasterColor and MasterColorOpaque

CUITextBlock RealTextSize is now rounded because 2.199999 is prone to floating-point errors 

Added MasterColor to CUIToggleButton

Buttons now will folow a pattern: if state is changed by user input then it'll invoke StateChanged event  
If state is changed from code then it won't invoke the event

When you change state from code you already know about that so you don't need an event  
And on the other side if event is always fired it will create un-untangleable loops when you try to sync state between two buttons

Fixed CUIComponent.Get< T > method, i forgot to add it to docs, it gives you memorized component by its name, so it's same as frame["header"], but it can also give you nested components like that `Header = Frame.Get<CUIHorizontalList>("layout.content.header");`

Exposed ResizeHandles, you can hide them separately

Fixed crash when serializing a Vector2, added more try-catches and warnings there

Fixed Sprites in CUI.png being 33x33, i just created a wrong first rectangle and then copy-pasted it, guh

Added sprites to resize handles, and gradient sprite that's not used yet

Added `public SpriteEffects Effects;` to CUISprite, it controls texture flipping

More params in CUITextureManager.GetSprite

## 0.0.5.0

Added Styles

Every component has a Style and every Type has a DefaultStyle

Styles are observable dicts with pairs { "prop name", "prop value" } and can be used to assign any parsable string to any prop or reference some value from CUIPalette

## 0.0.4.0
Added CUICanvas.Render(Action< SpriteBatch > renderFunc) method that allows you to render anything you want onto the canvas texture

## 0.0.3.0
Added Changelog.md :BaroDev:

Added CUI.TopMain, it's the second CUIMainComponent which exists above vanilla GUI

Added printsprites command, it prints styles from GUIStyle.ComponentStyles

More fabric methods for CUISprite