diff --git a/Client/CentrED.lpi b/Client/CentrED.lpi
index 4abe50e..03a85ee 100644
--- a/Client/CentrED.lpi
+++ b/Client/CentrED.lpi
@@ -20,9 +20,6 @@
-
-
-
@@ -133,25 +130,29 @@
-
+
-
+
+
-
-
+
-
+
+
-
-
+
+
+
+
+
-
+
@@ -452,6 +453,11 @@
+
+
+
+
+
@@ -463,4 +469,4 @@
-
\ No newline at end of file
+
diff --git a/Client/Tools/UfrmHueSettings.lfm b/Client/Tools/UfrmHueSettings.lfm
index cbf4c6b..6d0d8d2 100644
--- a/Client/Tools/UfrmHueSettings.lfm
+++ b/Client/Tools/UfrmHueSettings.lfm
@@ -1,11 +1,13 @@
inherited frmHueSettings: TfrmHueSettings
Left = 290
- Height = 209
+ Height = 426
Top = 171
- Width = 217
+ Width = 225
+ AutoSize = True
Caption = 'Hue Settings'
- ClientHeight = 209
- ClientWidth = 217
+ ClientHeight = 426
+ ClientWidth = 225
+ Constraints.MinWidth = 225
OnCreate = FormCreate
object lblHue: TLabel[0]
AnchorSideLeft.Control = Owner
@@ -13,7 +15,7 @@ inherited frmHueSettings: TfrmHueSettings
AnchorSideTop.Side = asrCenter
Left = 8
Height = 16
- Top = 12
+ Top = 11
Width = 26
BorderSpacing.Left = 8
Caption = 'Hue:'
@@ -24,7 +26,7 @@ inherited frmHueSettings: TfrmHueSettings
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 42
- Height = 25
+ Height = 23
Top = 8
Width = 80
BorderSpacing.Left = 8
@@ -41,18 +43,347 @@ inherited frmHueSettings: TfrmHueSettings
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 8
- Height = 160
- Top = 41
- Width = 201
- Anchors = [akTop, akLeft, akRight, akBottom]
+ Height = 139
+ Top = 39
+ Width = 209
+ Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 8
+ Font.Height = 14
ItemHeight = 16
OnDrawItem = lbHueDrawItem
OnSelectionChange = lbHueSelectionChange
+ ParentFont = False
Style = lbOwnerDrawFixed
TabOrder = 1
end
- inherited tmClose: TTimer[3]
+ object gbRandom: TGroupBox[3]
+ AnchorSideLeft.Control = Owner
+ AnchorSideTop.Control = lbHue
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = Owner
+ AnchorSideRight.Side = asrBottom
+ AnchorSideBottom.Side = asrBottom
+ Left = 8
+ Height = 183
+ Top = 186
+ Width = 209
+ Anchors = [akTop, akLeft, akRight]
+ BorderSpacing.Left = 8
+ BorderSpacing.Top = 4
+ BorderSpacing.Right = 8
+ BorderSpacing.Bottom = 8
+ Caption = 'Random pool'
+ ClientHeight = 165
+ ClientWidth = 205
+ TabOrder = 2
+ Visible = False
+ object btnAddRandom: TSpeedButton
+ AnchorSideLeft.Control = gbRandom
+ AnchorSideTop.Control = gbRandom
+ Left = 4
+ Height = 22
+ Hint = 'Add'
+ Top = 0
+ Width = 23
+ BorderSpacing.Left = 4
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003A8C44FF368940FF32873CFF2F84
+ 37FF000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000459653FF419950FF7DC28FFF96D0A6FF96CFA6FF78BE
+ 89FF368D42FF2C8134FF00000000000000000000000000000000000000000000
+ 0000000000004D9C5DFF64B478FFA8DBB5FF87CC98FF66BC7DFF64BA7CFF86CB
+ 98FFA5D9B4FF58AA6BFF2C8134FF000000000000000000000000000000000000
+ 000056A366FF6AB97DFFA8DBB2FF60BC77FF5CBA73FF59B870FF59B56FFF58B5
+ 6FFF5BB774FFA5D9B3FF5AAA6CFF2C8234FF0000000000000000000000000000
+ 000053AB68FFAADDB4FF64C179FF5FBE71FF60BC77FFFFFFFFFFFFFFFFFF59B8
+ 70FF58B56EFF5CB774FFA6DAB4FF388F43FF00000000000000000000000061AC
+ 75FF8ACC98FF89D396FF6BC67AFF63C170FF55AB65FFFFFFFFFFFFFFFFFF59B8
+ 70FF59B870FF5BB972FF85CC97FF7BBE8DFF308539FF000000000000000065AF
+ 7AFFA9DDB3FF7DCF8AFF75CC81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF59B870FF67BE7DFF9CD4ABFF34883DFF000000000000000069B2
+ 7EFFB6E2BEFF8BD597FF7AC986FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF59B870FF69C17EFF9DD4AAFF388B42FF00000000000000006DB5
+ 83FFACDDB6FFA6DFAFFF81CB8CFF7CC986FF6EBD79FFFFFFFFFFFFFFFFFF5BAC
+ 6AFF60BC77FF5CBA73FF8BD199FF80C592FF3C8E47FF00000000000000000000
+ 000085C797FFD2EED7FF95D9A0FF8AD394FF7FC889FFFFFFFFFFFFFFFFFF79CD
+ 85FF6BC37CFF6FC77EFFACDFB5FF459E57FF0000000000000000000000000000
+ 000070B887FFAADAB7FFD8F1DCFF92D89DFF88CD93FF84CC8EFF8BD496FF8AD4
+ 95FF83D28EFFAFE0B7FF6BB97DFF489856FF0000000000000000000000000000
+ 00000000000070B887FFAFDCBBFFDCF2E0FFB6E4BDFF9BDBA5FF96D9A0FFA5DF
+ AFFFC0E8C5FF79C28AFF509E5FFF000000000000000000000000000000000000
+ 0000000000000000000071B887FF94CEA4FFC3E6CBFFCFEBD4FFC9E9CEFFAFDD
+ B8FF6DB97FFF58A569FF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000006EB684FF6AB380FF67B17CFF63AE
+ 77FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000
+ }
+ NumGlyphs = 0
+ OnClick = btnAddRandomClick
+ ShowHint = True
+ ParentShowHint = False
+ end
+ object btnDeleteRandom: TSpeedButton
+ AnchorSideLeft.Control = btnAddRandom
+ AnchorSideLeft.Side = asrBottom
+ AnchorSideTop.Control = btnAddRandom
+ Left = 31
+ Height = 22
+ Hint = 'Delete'
+ Top = 0
+ Width = 23
+ BorderSpacing.Left = 4
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000003853BEFF3551BDFF304BBCFF2E4E
+ B8FF000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000004255C6FF3C52CCFF757AE8FF8F92EEFF8F92EEFF7178
+ E4FF334DC1FF2B4AB7FF00000000000000000000000000000000000000000000
+ 0000000000004959CBFF5C65E0FFA1A6F5FF7E86EFFF5B63E9FF595DE7FF7D84
+ EEFF9EA0F4FF515DD7FF2B4AB7FF000000000000000000000000000000000000
+ 00005361CFFF616BE3FFA1ACF5FF545FECFF505CEAFF4D59E9FF4E59E6FF4C56
+ E6FF5056E6FF9EA2F4FF5460D6FF2A4AB8FF0000000000000000000000000000
+ 00004B56DBFFA2ABF6FF5664F0FF5266EEFF4D59E9FF4D59E9FF4D59E9FF4D59
+ E9FF4C58E6FF525AE6FF9FA3F5FF3450C4FF0000000000000000000000005C62
+ D7FF818CEEFF7E91F7FF5D73F3FF4D59E9FF4D59E9FF4D59E9FF4D59E9FF4D59
+ E9FF4D59E9FF4F5BE9FF7B83F0FF757BE2FF2E4BBAFF00000000000000005F63
+ DAFFA1ABF7FF7086F8FF6882F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF4D59E9FF5C66EAFF969CF1FF3250BCFF00000000000000006469
+ DBFFAFB9F9FF7F93FAFF7085F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF4D59E9FF5E6AEEFF969DF1FF364FBEFF0000000000000000676A
+ DEFFA5AFF5FF9DABFAFF778CF0FF545FECFF545FECFF545FECFF545FECFF545F
+ ECFF545FECFF6377F2FF818EF4FF787FE9FF3A53C0FF00000000000000000000
+ 00007D83EAFFCDD4FCFF8B9DFAFF7E93F7FF758AEEFF6C84F6FF6C84F6FF6C84
+ F6FF6C84F6FF6379F3FFA4AFF8FF3E4FD0FF0000000000000000000000000000
+ 00006A69E0FFA3A7F3FFD4DBFDFF879AFAFF7F91F0FF7A8EF1FF7F94F8FF7E92
+ F9FF768CF8FFA8B6F8FF636EE3FF4557C7FF0000000000000000000000000000
+ 0000000000006A69E0FFAAADF2FFD8DCFDFFAEBAFAFF91A3FAFF8B9DFAFF9CA9
+ FBFFBAC7FCFF707BE9FF4C5BCCFF000000000000000000000000000000000000
+ 000000000000000000006A6ADFFF8E93EDFFBEC3F8FFCCD3F9FFC4CBF9FFAAB4
+ F4FF6670E2FF535ED1FF00000000000000000000000000000000000000000000
+ 000000000000000000000000000000000000686ADDFF6364DCFF6164DAFF5D63
+ D9FF000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000
+ }
+ NumGlyphs = 0
+ OnClick = btnDeleteRandomClick
+ ShowHint = True
+ ParentShowHint = False
+ end
+ object btnClearRandom: TSpeedButton
+ AnchorSideLeft.Control = btnDeleteRandom
+ AnchorSideLeft.Side = asrBottom
+ AnchorSideTop.Control = btnDeleteRandom
+ Left = 58
+ Height = 22
+ Hint = 'Clear'
+ Top = 0
+ Width = 23
+ BorderSpacing.Left = 4
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 000000000000000000000000F1FF0000F1FF0000F1FF0000F1FF0000EFFF0000
+ EFFF0000EDFF0000EDFF00000000000000000000000000000000000000000000
+ 0000000000000000F5FF1A20F5FF3C4CF9FF3A49F8FF3847F8FF3545F8FF3443
+ F7FF3242F7FF141BF1FF0000EDFF000000000000000000000000000000000000
+ 00000000F7FF1D23F9FF4453FAFF2429F9FF1212F7FF0F0FF6FF0C0CF5FF0909
+ F5FF161BF5FF3343F7FF141BF1FF0000EDFF0000000000000000000000000000
+ F9FF1F25FAFF4A58FBFF4247FBFFC9C9FDFF3B3BF9FF1313F7FF1010F6FF3333
+ F7FFC5C5FDFF3035F7FF3444F7FF141BF2FF0000EDFF00000000000000000000
+ FBFF4F5DFDFF3237FBFFCBCBFEFFF2F2FFFFEBEBFEFF3B3BF9FF3939F8FFEAEA
+ FEFFF1F1FEFFC5C5FDFF181DF6FF3343F7FF0000EFFF00000000000000000000
+ FDFF525FFDFF2828FCFF4747FCFFECECFFFFF2F2FFFFECECFFFFECECFEFFF1F1
+ FFFFEAEAFEFF3434F7FF0B0BF5FF3545F8FF0000EFFF00000000000000000000
+ FDFF5562FEFF2C2CFDFF2929FCFF4848FCFFEDEDFFFFF2F2FFFFF2F2FFFFECEC
+ FEFF3A3AF9FF1212F7FF0F0FF6FF3848F8FF0000F1FF00000000000000000000
+ FDFF5764FEFF3030FDFF2D2DFDFF4B4BFCFFEDEDFFFFF2F2FFFFF2F2FFFFECEC
+ FFFF3D3DF9FF1616F8FF1313F7FF3C4BF8FF0000F1FF00000000000000000000
+ FFFF5A67FEFF3333FEFF5050FDFFEDEDFFFFF3F3FFFFEDEDFFFFEDEDFFFFF2F2
+ FFFFECECFEFF3E3EFAFF1717F8FF3F4EF9FF0000F1FF00000000000000000000
+ FFFF5B68FFFF4347FEFFCFCFFFFFF3F3FFFFEDEDFFFF4C4CFCFF4A4AFCFFECEC
+ FFFFF2F2FFFFCACAFEFF2A2FFAFF4251FAFF0000F3FF00000000000000000000
+ FFFF262BFFFF5D6AFFFF585BFFFFCFCFFFFF5252FEFF2F2FFDFF2C2CFDFF4B4B
+ FCFFCCCCFEFF484CFBFF4957FBFF1D23F9FF0000F5FF00000000000000000000
+ 00000000FFFF262BFFFF5D6AFFFF4347FFFF3434FEFF3232FEFF3030FDFF2D2D
+ FDFF383CFCFF4F5DFCFF1F25FAFF0000F7FF0000000000000000000000000000
+ 0000000000000000FFFF262BFFFF5C69FFFF5B68FFFF5A67FEFF5865FEFF5663
+ FEFF5461FEFF2227FCFF0000FBFF000000000000000000000000000000000000
+ 000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FDFF0000
+ FDFF0000FDFF0000FDFF00000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000
+ }
+ NumGlyphs = 0
+ OnClick = btnClearRandomClick
+ ShowHint = True
+ ParentShowHint = False
+ end
+ object btnRandomPresetSave: TSpeedButton
+ AnchorSideTop.Control = cbRandomPreset
+ AnchorSideRight.Control = btnRandomPresetDelete
+ Left = 153
+ Height = 22
+ Hint = 'Save Preset'
+ Top = 138
+ Width = 22
+ Anchors = [akTop, akRight]
+ BorderSpacing.Right = 4
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 000000000000000000000000000000000000BA6833FFC38458FFD38B68FFE18F
+ 70FFDC8D6CFFDA8B6DFFD78A6EFFCD8B6CFFAB6D44FFA65F2EFF00000000BA65
+ 30FFBB6631FFBA6630FFBA6630FFBA6530FFC68355FFEFCEBAFFDDFFFFFF87EE
+ C7FFA2F4D7FFA2F6D7FF8CEEC7FFE0FFFFFFDDA285FFAB6A3EFFBC6933FFF8F1
+ EAFFF7ECDFFFF6EADEFFF6EADCFFF6EADCFFC37F51FFEFB69AFFEAF3E8FF51BF
+ 84FF6FC998FF71C999FF54BF84FFE4F4E9FFDD9C7BFFAA693AFFBF7138FFF5EB
+ DFFFFDBF68FFFBBE65FFFCBE64FFFCBE64FFC48154FFEAB697FFF3F3EAFFEDF1
+ E6FFEFF1E6FFEFF0E6FFEDF1E5FFF3F5EDFFD59C79FFB07044FFC1783CFFF7ED
+ E3FFFDC26EFFFFD79EFFFFD69BFFFFD798FFC98B61FFE6B592FFE2A781FFE1A7
+ 81FFDEA37DFFDCA17BFFDB9F79FFD99E77FFD49A73FFBB7E57FFC47C40FFF7F0
+ E6FFF8B455FFF7B554FFF8B453FFF8B253FFCA8D65FFEAB899FFDDA57EFFDDA6
+ 80FFDBA37CFFD9A07AFFD9A079FFD89F78FFD89E78FFBF845DFFC58245FFF8F2
+ EBFFFEE7D6FFFDE7D6FFFDE7D6FFFDE6D5FFC8885DFFEFBFA1FFFDFCFAFFFEFC
+ FBFFFEFDFDFFFEFDFCFFFDFBFAFFFDFCFBFFDDA885FFC17F53FFC68447FFF9F3
+ ECFFFEE8D6FFFDE7D6FFFDE7D6FFFDE7D5FFC7865BFFEFC09EFFFFFFFFFFCC93
+ 6EFFFFFFFFFFFFFFFFFFFFFBF7FFFFF8F1FFE4AF8CFFC78A61FFC68849FFF9F4
+ EDFFFEE8D8FFFEE8D7FFFEE7D6FFFDE5D3FFCC8D65FFF3CDB0FFFFFFFFFFE3C7
+ B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEABFA1FFC98960FFC6884AFFF9F4
+ EFFFFEE7D7FFFDE7D5FFFDE6D4FFFCE6D2FFD4976EFFD49E7BFFD09871FFD6A4
+ 82FFCD8E68FFCD9069FFD09A75FFD19973FFC88B62FF00000000C6894BFFF9F4
+ F0FFFCE6D3FFFDE7D3FFFCE4D1FFFBE3CDFFFAE0C8FFF8DCC2FFF5D6BBFFF3D4
+ B5FFF1D2B3FFF8F4F0FFC48246FF000000000000000000000000C6894BFFF9F5
+ F1FFFCE3CFFFFCE4CFFFFCE3CDFFFAE1CAFFF9DDC4FFF6D9BCFFF4E9DFFFF7F2
+ ECFFFBF7F3FFF5EFE9FFC27E45FF000000000000000000000000C6894CFFF9F5
+ F1FFFCE3CDFFFBE3CDFFFBE2CBFFF9E0C8FFF8DCC2FFF5D6BAFFFDFBF8FFFCE6
+ CDFFFAE5C9FFE2B684FFBF7942FF000000000000000000000000C5884BFFFAF6
+ F2FFFAE0C7FFFBE2C9FFFBE0C8FFF9DFC5FFF8DBC1FFF4D6B8FFFFFBF8FFF6D8
+ B4FFE1B07DFFDB9264FF00000000000000000000000000000000C48549FFF7F2
+ ECFFF8F4EEFFF8F3EDFFF8F3EDFFF8F3EDFFF8F2ECFFF7F2ECFFF2E6D7FFE2B2
+ 7DFFDB9465FF000000000000000000000000000000000000000000000000C88B
+ 4DFFC88C4FFFC88C4FFFC88C4FFFC88D4FFFC98C4FFFC78B4FFFC5894BFFC476
+ 3BFF000000000000000000000000000000000000000000000000
+ }
+ NumGlyphs = 0
+ ShowCaption = False
+ ShowHint = True
+ ParentShowHint = False
+ end
+ object btnRandomPresetDelete: TSpeedButton
+ AnchorSideTop.Control = btnRandomPresetSave
+ AnchorSideRight.Control = gbRandom
+ AnchorSideRight.Side = asrBottom
+ Left = 179
+ Height = 22
+ Hint = 'Delete Preset'
+ Top = 138
+ Width = 22
+ Anchors = [akTop, akRight]
+ BorderSpacing.Right = 4
+ Glyph.Data = {
+ 36040000424D3604000000000000360000002800000010000000100000000100
+ 2000000000000004000064000000640000000000000000000000000000000000
+ 0000BA6530FFBB6631FFBA6630FFBA6630FFBA6630FFBA6530FFBA652FFFB965
+ 2EFF6E5E76FF1949A8FF0542BBFF1348ADFF394E8FFF0000000000000000BC69
+ 33FFF8F1EAFFF7ECDFFFF6EBDEFFF6EADEFFF6EADCFFF6EADCFFFAF3EBFF8AA5
+ D7FF2866CAFF2177E6FF0579EAFF0164DDFF064DBBFF0000000000000000BF71
+ 38FFF5EBDFFFFDBF68FFFCBD67FFFBBE65FFFCBE64FFFCBE64FFFCBD62FF1E52
+ B0FF639DF4FF187FFFFF0076F8FF0076EEFF0368E1FF0345B9FF00000000C178
+ 3CFFF7EDE3FFFDC26EFFFFD8A0FFFFD79EFFFFD69BFFFFD798FFFFD696FF0543
+ BCFFAECDFEFFFFFFFFFFFFFFFFFFFFFFFFFF187FEFFF0442BCFF00000000C47C
+ 40FFF7F0E6FFF8B455FFF7B456FFF7B554FFF8B453FFF8B253FFF7B352FF2453
+ ABFF8DB5F6FF4D92FFFF1177FFFF2186FFFF408AEBFF0344B9FF00000000C580
+ 42FFF8F1E8FFFEE5D5FFFDE5D3FFFDE5D3FFFCE5D3FFFCE5D3FFFCE4D1FF94A1
+ C9FF3D76D1FF8DB5F7FFB8D6FEFF72A8F5FF2F6BC9FF0000000000000000C582
+ 45FFF8F2EBFFFEE7D6FFFDE7D6FFFDE7D6FFFDE7D6FFFDE6D5FFFDE5D3FFFCE4
+ D1FF94A1C9FF2A5EC1FF0543BCFF1F59BFFF686279FF0000000000000000C684
+ 47FFF9F3ECFFFEE8D6FFFEE8D7FFFDE7D6FFFDE7D6FFFDE7D5FFFDE5D3FFFBE4
+ D0FFFBE3CCFFFADFC7FFFADFC6FFFAF2EAFFC68042FF0000000000000000C688
+ 49FFF9F4EDFFFEE8D8FFFEE8D8FFFEE8D7FFFEE7D6FFFDE5D3FFFCE4D1FFFBE1
+ CCFFFAE0C7FFF9DDC3FFF8DCC2FFFAF4EDFFC68245FF0000000000000000C688
+ 4AFFF9F4EFFFFEE7D7FFFDE7D6FFFDE7D5FFFDE6D4FFFCE6D2FFFBE1CCFFFADF
+ C7FFF8DCC2FFF6DABDFFF6D8BBFFFAF4EFFFC68346FF0000000000000000C689
+ 4BFFF9F4F0FFFCE6D3FFFCE6D4FFFDE7D3FFFCE4D1FFFBE3CDFFFAE0C8FFF8DC
+ C2FFF5D6BBFFF3D4B5FFF1D2B3FFF8F4F0FFC48246FF0000000000000000C689
+ 4BFFF9F5F1FFFCE3CFFFFBE4D0FFFCE4CFFFFCE3CDFFFAE1CAFFF9DDC4FFF6D9
+ BCFFF4E9DFFFF7F2ECFFFBF7F3FFF5EFE9FFC27E45FF0000000000000000C689
+ 4CFFF9F5F1FFFCE3CDFFFBE3CEFFFBE3CDFFFBE2CBFFF9E0C8FFF8DCC2FFF5D6
+ BAFFFDFBF8FFFCE6CDFFFAE5C9FFE2B684FFBF7942FF0000000000000000C588
+ 4BFFFAF6F2FFFAE0C7FFFBE1C9FFFBE2C9FFFBE0C8FFF9DFC5FFF8DBC1FFF4D6
+ B8FFFFFBF8FFF6D8B4FFE1B07DFFDB9264FF000000000000000000000000C485
+ 49FFF7F2ECFFF8F4EEFFF8F4EDFFF8F3EDFFF8F3EDFFF8F3EDFFF8F2ECFFF7F2
+ ECFFF2E6D7FFE2B27DFFDB9465FF000000000000000000000000000000000000
+ 0000C88B4DFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88D4FFFC98C4FFFC78B
+ 4FFFC5894BFFC4763BFF00000000000000000000000000000000
+ }
+ NumGlyphs = 0
+ ShowCaption = False
+ ShowHint = True
+ ParentShowHint = False
+ end
+ object cbRandomPreset: TComboBox
+ AnchorSideLeft.Control = gbRandom
+ AnchorSideRight.Control = btnRandomPresetSave
+ AnchorSideBottom.Control = gbRandom
+ AnchorSideBottom.Side = asrBottom
+ Left = 4
+ Height = 23
+ Top = 138
+ Width = 145
+ Anchors = [akLeft, akRight, akBottom]
+ BorderSpacing.Left = 4
+ BorderSpacing.Right = 4
+ BorderSpacing.Bottom = 4
+ ItemHeight = 15
+ Sorted = True
+ Style = csDropDownList
+ TabOrder = 0
+ end
+ object lbRandom: TListBox
+ AnchorSideLeft.Control = gbRandom
+ AnchorSideTop.Control = btnAddRandom
+ AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = gbRandom
+ AnchorSideRight.Side = asrBottom
+ AnchorSideBottom.Control = cbRandomPreset
+ Left = 4
+ Height = 108
+ Top = 26
+ Width = 197
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ BorderSpacing.Around = 4
+ ItemHeight = 0
+ MultiSelect = True
+ OnDrawItem = lbHueDrawItem
+ TabOrder = 1
+ end
+ end
+ object cbRandom: TCheckBox[4]
+ AnchorSideTop.Control = edHue
+ AnchorSideTop.Side = asrCenter
+ AnchorSideRight.Control = gbRandom
+ AnchorSideRight.Side = asrBottom
+ Left = 152
+ Height = 19
+ Top = 10
+ Width = 65
+ Anchors = [akTop, akRight]
+ Caption = 'Random'
+ OnChange = cbRandomChange
+ TabOrder = 3
+ end
+ inherited tmClose: TTimer[5]
left = 152
top = 112
end
diff --git a/Client/Tools/UfrmHueSettings.pas b/Client/Tools/UfrmHueSettings.pas
index ecf2d72..ba90302 100644
--- a/Client/Tools/UfrmHueSettings.pas
+++ b/Client/Tools/UfrmHueSettings.pas
@@ -31,16 +31,29 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
- UfrmToolWindow, UHue;
+ ExtCtrls, Buttons, VirtualTrees, UfrmToolWindow, UHue;
type
{ TfrmHueSettings }
TfrmHueSettings = class(TfrmToolWindow)
+ btnAddRandom: TSpeedButton;
+ btnClearRandom: TSpeedButton;
+ btnDeleteRandom: TSpeedButton;
+ btnRandomPresetDelete: TSpeedButton;
+ btnRandomPresetSave: TSpeedButton;
+ cbRandomPreset: TComboBox;
+ cbRandom: TCheckBox;
edHue: TEdit;
+ gbRandom: TGroupBox;
lblHue: TLabel;
lbHue: TListBox;
+ lbRandom: TListBox;
+ procedure btnAddRandomClick(Sender: TObject);
+ procedure btnClearRandomClick(Sender: TObject);
+ procedure btnDeleteRandomClick(Sender: TObject);
+ procedure cbRandomChange(Sender: TObject);
procedure edHueEditingDone(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure lbHueDrawItem(Control: TWinControl; Index: Integer; ARect: TRect;
@@ -73,6 +86,39 @@ begin
lbHue.ItemIndex := hueID;
end;
+procedure TfrmHueSettings.btnDeleteRandomClick(Sender: TObject);
+var
+ i: Integer;
+begin
+ lbRandom.Items.BeginUpdate;
+ for i := lbRandom.Items.Count - 1 downto 0 do
+ if lbRandom.Selected[i] then
+ lbRandom.Items.Delete(i);
+ lbRandom.Items.EndUpdate;
+end;
+
+procedure TfrmHueSettings.cbRandomChange(Sender: TObject);
+begin
+ lbHue.MultiSelect := cbRandom.Checked;
+ gbRandom.Visible := cbRandom.Checked;
+end;
+
+procedure TfrmHueSettings.btnClearRandomClick(Sender: TObject);
+begin
+ lbRandom.Items.Clear;
+end;
+
+procedure TfrmHueSettings.btnAddRandomClick(Sender: TObject);
+var
+ i: Integer;
+begin
+ lbRandom.Items.BeginUpdate;
+ for i := 0 to lbHue.Count - 1 do
+ if lbHue.Selected[i] then
+ lbRandom.Items.AddObject(lbHue.Items.Strings[i], lbHue.Items.Objects[i]);
+ lbRandom.Items.EndUpdate;
+end;
+
procedure TfrmHueSettings.FormCreate(Sender: TObject);
var
i: Integer;
@@ -97,7 +143,7 @@ begin
hue := ResMan.Hue.Hues[Index-1]
else
hue := nil;
- DrawHue(hue, lbHue.Canvas, ARect, lbHue.Items.Strings[Index]);
+ DrawHue(hue, TListBox(Control).Canvas, ARect, TListBox(Control).Items.Strings[Index]);
end;
procedure TfrmHueSettings.lbHueSelectionChange(Sender: TObject; User: boolean);
@@ -121,7 +167,7 @@ begin
ACanvas.MoveTo(ARect.Left + 2 + i, ARect.Top + 1);
ACanvas.LineTo(ARect.Left + 2 + i, ARect.Bottom - 1);
end;
- ACanvas.TextOut(ARect.Left + 36, ARect.Top, ACaption);
+ ACanvas.TextOut(ARect.Left + 36, ARect.Top + 1, ACaption);
end;
initialization
diff --git a/Client/UfrmMain.lfm b/Client/UfrmMain.lfm
index 0bcc9ba..ddb7ebd 100644
--- a/Client/UfrmMain.lfm
+++ b/Client/UfrmMain.lfm
@@ -18,7 +18,7 @@ object frmMain: TfrmMain
Position = poScreenCenter
SessionProperties = 'acFlat.Checked;acNoDraw.Checked;Height;Left;mnuFlatShowHeight.Checked;mnuSecurityQuestion.Checked;mnuShowAnimations.Checked;spTileList.Top;tbStatics.Down;tbTerrain.Down;Top;Width;WindowState;mnuWhiteBackground.Checked'
ShowInTaskBar = stAlways
- LCLVersion = '0.9.29'
+ LCLVersion = '0.9.31'
WindowState = wsMaximized
object pnlBottom: TPanel
Left = 0
@@ -140,7 +140,7 @@ object frmMain: TfrmMain
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = spTileList
Left = 4
- Height = 234
+ Height = 240
Hint = '-'
Top = 50
Width = 208
@@ -191,18 +191,20 @@ object frmMain: TfrmMain
OnScroll = vdtTilesScroll
end
object gbRandom: TGroupBox
+ AnchorSideLeft.Control = tsTiles
AnchorSideTop.Control = spTileList
AnchorSideTop.Side = asrBottom
+ AnchorSideRight.Control = tsTiles
+ AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = tsTiles
AnchorSideBottom.Side = asrBottom
Left = 0
- Height = 189
- Top = 289
+ Height = 183
+ Top = 295
Width = 216
- Align = alBottom
Anchors = [akTop, akLeft, akRight, akBottom]
Caption = 'Random pool'
- ClientHeight = 171
+ ClientHeight = 165
ClientWidth = 212
TabOrder = 1
object btnAddRandom: TSpeedButton
@@ -214,7 +216,6 @@ object frmMain: TfrmMain
Top = 0
Width = 23
BorderSpacing.Left = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -266,7 +267,6 @@ object frmMain: TfrmMain
Top = 0
Width = 23
BorderSpacing.Left = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -318,7 +318,6 @@ object frmMain: TfrmMain
Top = 0
Width = 23
BorderSpacing.Left = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -366,11 +365,10 @@ object frmMain: TfrmMain
Left = 160
Height = 22
Hint = 'Save Preset'
- Top = 146
+ Top = 140
Width = 22
Anchors = [akTop, akRight]
BorderSpacing.Right = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -420,11 +418,10 @@ object frmMain: TfrmMain
Left = 186
Height = 22
Hint = 'Delete Preset'
- Top = 146
+ Top = 140
Width = 22
Anchors = [akTop, akRight]
BorderSpacing.Right = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -477,7 +474,7 @@ object frmMain: TfrmMain
AnchorSideBottom.Control = cbRandomPreset
Cursor = 63
Left = 4
- Height = 118
+ Height = 112
Top = 24
Width = 204
Anchors = [akTop, akLeft, akRight, akBottom]
@@ -526,7 +523,7 @@ object frmMain: TfrmMain
AnchorSideBottom.Side = asrBottom
Left = 4
Height = 21
- Top = 146
+ Top = 140
Width = 152
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 4
@@ -546,7 +543,7 @@ object frmMain: TfrmMain
Cursor = crVSplit
Left = 0
Height = 5
- Top = 284
+ Top = 290
Width = 216
Align = alNone
Anchors = [akLeft, akRight, akBottom]
@@ -560,7 +557,7 @@ object frmMain: TfrmMain
Left = 108
Height = 21
Hint = 'Append S or T to restrict the search to Statics or Terrain.'
- Top = 255
+ Top = 261
Width = 96
Anchors = [akRight, akBottom]
BorderSpacing.Right = 8
@@ -650,7 +647,6 @@ object frmMain: TfrmMain
Top = 452
Width = 23
BorderSpacing.Left = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -704,7 +700,6 @@ object frmMain: TfrmMain
Width = 23
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -756,7 +751,6 @@ object frmMain: TfrmMain
Width = 23
Anchors = [akTop, akRight]
BorderSpacing.Right = 4
- Color = clBtnFace
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
@@ -822,7 +816,7 @@ object frmMain: TfrmMain
item
Position = 1
Text = 'Name'
- Width = 133
+ Width = 129
end>
Header.DefaultHeight = 17
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoVisible]
@@ -857,18 +851,18 @@ object frmMain: TfrmMain
Top = 2
Caption = 'Disconnect'
ImageIndex = 0
+ OnClick = mnuDisconnectClick
ParentShowHint = False
ShowHint = True
- OnClick = mnuDisconnectClick
end
object tbSeparator1: TToolButton
Left = 24
Top = 2
- Width = 16
+ Width = 4
Style = tbsDivider
end
object tbSelect: TToolButton
- Left = 40
+ Left = 28
Top = 2
Action = acSelect
Grouped = True
@@ -877,7 +871,7 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbDrawTile: TToolButton
- Left = 63
+ Left = 51
Top = 2
Action = acDraw
Grouped = True
@@ -886,7 +880,7 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbMoveTile: TToolButton
- Left = 86
+ Left = 74
Top = 2
Action = acMove
Grouped = True
@@ -895,7 +889,7 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbElevateTile: TToolButton
- Left = 109
+ Left = 97
Top = 2
Action = acElevate
Grouped = True
@@ -904,7 +898,7 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbDeleteTile: TToolButton
- Left = 132
+ Left = 120
Top = 2
Action = acDelete
Grouped = True
@@ -913,7 +907,7 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbSetHue: TToolButton
- Left = 155
+ Left = 143
Top = 2
Action = acHue
Grouped = True
@@ -922,111 +916,111 @@ object frmMain: TfrmMain
Style = tbsCheck
end
object tbSeparator3: TToolButton
- Left = 209
+ Left = 193
Top = 2
- Width = 16
+ Width = 4
Caption = 'tbSeparator3'
Style = tbsDivider
end
object tbBoundaries: TToolButton
- Left = 225
+ Left = 197
Top = 2
Action = acBoundaries
ParentShowHint = False
ShowHint = True
end
object tbSeparator4: TToolButton
- Left = 294
+ Left = 266
Top = 2
- Width = 17
+ Width = 4
Caption = 'tbSeparator4'
Style = tbsDivider
end
object tbTerrain: TToolButton
- Left = 311
+ Left = 270
Hint = 'Show Terrain'
Top = 2
Caption = 'Terrain'
Down = True
ImageIndex = 10
+ OnClick = tbTerrainClick
ParentShowHint = False
ShowHint = True
Style = tbsCheck
- OnClick = tbTerrainClick
end
object tbStatics: TToolButton
- Left = 334
+ Left = 293
Hint = 'Show Statics'
Top = 2
Caption = 'Statics'
Down = True
ImageIndex = 11
+ OnClick = tbStaticsClick
ParentShowHint = False
ShowHint = True
Style = tbsCheck
- OnClick = tbStaticsClick
end
object tbSeparator5: TToolButton
- Left = 461
+ Left = 420
Top = 2
- Width = 17
+ Width = 4
Caption = 'tbSeparator5'
Style = tbsDivider
end
object tbRadarMap: TToolButton
- Left = 478
+ Left = 424
Hint = 'Radar Map'
Top = 2
Caption = 'Radar Map'
ImageIndex = 13
+ OnClick = tbRadarMapClick
ParentShowHint = False
ShowHint = True
- OnClick = tbRadarMapClick
end
object tbVirtualLayer: TToolButton
- Left = 248
+ Left = 220
Top = 2
Action = acVirtualLayer
end
object tbFilter: TToolButton
- Left = 271
+ Left = 243
Top = 2
Action = acFilter
- Style = tbsCheck
OnMouseMove = tbFilterMouseMove
+ Style = tbsCheck
end
object tbFlat: TToolButton
- Left = 426
+ Left = 385
Top = 2
Action = acFlat
DropdownMenu = pmFlatViewSettings
Style = tbsDropDown
end
object tbNoDraw: TToolButton
- Left = 357
+ Left = 316
Top = 2
Action = acNoDraw
Style = tbsCheck
end
object tbSeparator2: TToolButton
- Left = 178
+ Left = 166
Top = 2
- Width = 8
+ Width = 4
Caption = 'tbSeparator2'
Style = tbsDivider
end
object tbUndo: TToolButton
- Left = 186
+ Left = 170
Top = 2
Action = acUndo
end
object tbLightlevel: TToolButton
- Left = 403
+ Left = 362
Top = 2
Action = acLightlevel
end
object tbWalkable: TToolButton
- Left = 380
+ Left = 339
Top = 2
Action = acWalkable
Style = tbsCheck
@@ -1106,7 +1100,7 @@ object frmMain: TfrmMain
item
Position = 2
Text = 'Message'
- Width = 381
+ Width = 377
end>
Header.DefaultHeight = 17
Header.MainColumn = 2
@@ -1134,14 +1128,13 @@ object frmMain: TfrmMain
end
object spChat: TSplitter
AnchorSideLeft.Control = pcLeft
- AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Cursor = crVSplit
- Left = 224
+ Left = 0
Height = 5
Top = 414
- Width = 531
+ Width = 755
Align = alNone
Anchors = [akLeft, akRight, akBottom]
AutoSnap = False