From 5cb5be5656b97b77988564dfc774a7f866c7470f Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Mon, 30 Jan 2023 03:54:43 +0300 Subject: [PATCH] BoxPainterLib --- .gitmodules | 3 + BoxPainterLib | 1 + YAS/Classes/GUIStyleBase.uc | 691 +----------------------------------- builder.cfg | 6 +- 4 files changed, 13 insertions(+), 688 deletions(-) create mode 160000 BoxPainterLib diff --git a/.gitmodules b/.gitmodules index 27ed978..c565e68 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "tools"] path = tools url = https://github.com/GenZmeY/KF2-BuildTools +[submodule "BoxPainterLib"] + path = BoxPainterLib + url = https://github.com/GenZmeY/KF2-BoxPainterLib diff --git a/BoxPainterLib b/BoxPainterLib new file mode 160000 index 0000000..4f15924 --- /dev/null +++ b/BoxPainterLib @@ -0,0 +1 @@ +Subproject commit 4f159246192bed06b7e36d39b5cc10e8b08fc945 diff --git a/YAS/Classes/GUIStyleBase.uc b/YAS/Classes/GUIStyleBase.uc index 193b2be..ae688d8 100644 --- a/YAS/Classes/GUIStyleBase.uc +++ b/YAS/Classes/GUIStyleBase.uc @@ -16,6 +16,8 @@ var transient YAS_HUD HUDOwner; var Font MainFont, NumberFont, InfiniteFont; var Color BlurColor, BlurColor2; +var BoxPainter BoxPainter; + enum ECornerPosition { ECP_TopLeft, @@ -53,6 +55,8 @@ function InitStyle() ItemTex=Texture2D(DynamicLoadObject("UI_LevelChevrons_TEX.UI_LevelChevron_Icon_02", class'Texture2D')); if (ItemTex == None) ItemTex=Texture2D'EngineMaterials.DefaultWhiteGrid'; + + BoxPainter = new class'BoxPainterLib.BoxPainter'; NumberFont = Font(DynamicLoadObject("UI_Canvas_Fonts.Font_General", class'Font')); @@ -556,693 +560,10 @@ final function DrawWhiteBox(float XS, float YS, optional bool bClip) Canvas.DrawTile(ItemTex, XS, YS, 19, 45, 1,1, ,bClip); } -final function DrawCornerSmart(float X, float Y, float Edge, int CornerPosition, int CornerShape) -{ - switch (CornerPosition) - { - case ECP_TopLeft: - switch (CornerShape) - { - case ECS_Corner: - return; - case ECS_BeveledCorner: - Canvas.SetPos(X, Y); - DrawCornerTex(Edge, 0); - return; - case ECS_VerticalCorner: - Canvas.SetPos(X, Y - Edge); - DrawCornerTex(Edge, 1); - return; - case ECS_HorisontalCorner: - Canvas.SetPos(X - Edge, Y); - DrawCornerTex(Edge, 2); - return; - } - case ECP_TopRight: - switch (CornerShape) - { - case ECS_Corner: - return; - case ECS_BeveledCorner: - Canvas.SetPos(X - Edge, Y); - DrawCornerTex(Edge, 1); - return; - case ECS_VerticalCorner: - Canvas.SetPos(X - Edge, Y - Edge); - DrawCornerTex(Edge, 0); - return; - case ECS_HorisontalCorner: - Canvas.SetPos(X, Y); - DrawCornerTex(Edge, 3); - return; - } - case ECP_BottomLeft: - switch (CornerShape) - { - case ECS_Corner: - return; - case ECS_BeveledCorner: - Canvas.SetPos(X, Y - Edge); - DrawCornerTex(Edge, 2); - return; - case ECS_VerticalCorner: - Canvas.SetPos(X, Y); - DrawCornerTex(Edge, 3); - return; - case ECS_HorisontalCorner: - Canvas.SetPos(X - Edge, Y - Edge); - DrawCornerTex(Edge, 0); - return; - } - case ECP_BottomRight: - switch (CornerShape) - { - case ECS_Corner: - return; - case ECS_BeveledCorner: - Canvas.SetPos(X - Edge, Y - Edge); - DrawCornerTex(Edge, 3); - return; - case ECS_VerticalCorner: - Canvas.SetPos(X - Edge, Y); - DrawCornerTex(Edge, 2); - return; - case ECS_HorisontalCorner: - Canvas.SetPos(X, Y - Edge); - DrawCornerTex(Edge, 1); - return; - } - } -} - -final function DrawRectBoxSmart(float X, float Y, float W, float H, float Edge, int TopLeftShape, int TopRightShape, int BottomLeftShape, int BottomRightShape) -{ - local float BoxX, BoxW; - - // Top Line - DrawCornerSmart(X, Y, Edge, ECP_TopLeft, TopLeftShape); - - BoxX = X; BoxW = W; - if (TopLeftShape == ECS_BeveledCorner) - { - BoxX += Edge; - BoxW -= Edge; - } - if (TopRightShape == ECS_BeveledCorner) - { - BoxW -= Edge; - } - Canvas.SetPos(BoxX, Y); - DrawWhiteBox(BoxW, Edge); - - DrawCornerSmart(X + W, Y, Edge, ECP_TopRight, TopRightShape); - - // Mid Line - Canvas.SetPos(X, Y + Edge); - DrawWhiteBox(W, H - Edge * 2); - - // Bottom Line - DrawCornerSmart(X, Y + H, Edge, ECP_BottomLeft, BottomLeftShape); - - BoxX = X; BoxW = W; - if (BottomLeftShape == ECS_BeveledCorner) - { - BoxX += Edge; - BoxW -= Edge; - } - if (BottomRightShape == ECS_BeveledCorner) - { - BoxW -= Edge; - } - Canvas.SetPos(BoxX, Y + H - Edge); - DrawWhiteBox(BoxW, Edge); - - DrawCornerSmart(X + W, Y + H, Edge, ECP_BottomRight, BottomRightShape); -} - final function DrawRectBox(float X, float Y, float Width, float Height, float Edge, optional byte Extrav) { - if (Extrav == 2) - Edge=Min(FMin(Edge, (Width)*0.5), Height);// Verify size. - else - Edge=Min(FMin(Edge, (Width)*0.5), (Height)*0.5);// Verify size. - - Canvas.PreOptimizeDrawTiles(Extrav == 0 ? 7 : 6, ItemTex); - - switch (Extrav) - { - case 100: - // ______ - // | | - // | | - // |______| - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 110: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 111: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 120: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 121: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 130: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 131: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 132: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 133: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 140: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 141: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_Corner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 142: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 143: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 150: - // ______ - // / \ - // | ____ | - // |/ \| - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 151: - // _______ - // / / - // | | - // \______\ - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 152: - // - // |\____/| - // | | - // \______/ - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 153: - // _______ - // \ \ - // | | - // /______/ - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 160: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 161: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 162: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 163: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 170: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 171: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 172: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 173: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 180: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 181: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 182: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 183: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 190: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 191: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 192: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 193: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 200: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 201: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 202: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 203: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 210: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 211: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 212: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 213: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 220: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 221: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 222: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 223: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 230: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 231: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 232: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 233: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 240: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_HorisontalCorner, // TopRight - ECS_HorisontalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 241: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_VerticalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_VerticalCorner // BottomRight - ); - break; - - case 242: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_HorisontalCorner, // TopLeft - ECS_Corner, // TopRight - ECS_Corner, // BottomLeft - ECS_HorisontalCorner // BottomRight - ); - break; - - case 243: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_VerticalCorner, // TopRight - ECS_VerticalCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 250: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 251: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_Corner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_Corner // BottomRight - ); - break; - - case 252: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_Corner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - case 253: - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_Corner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_Corner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - - default: // 0 - // ______ - // / \ - // | | - // \______/ - - DrawRectBoxSmart(X, Y, Width, Height, Edge, - ECS_BeveledCorner, // TopLeft - ECS_BeveledCorner, // TopRight - ECS_BeveledCorner, // BottomLeft - ECS_BeveledCorner // BottomRight - ); - break; - } + if (BoxPainter.Canvas == None) BoxPainter.Canvas = Canvas; + if (BoxPainter.Canvas != None) BoxPainter.DrawBox(X, Y, Width, Height, Edge, Extrav); } final function DrawBoxHollow(float X, float Y, float Width, float Height, float Thickness) diff --git a/builder.cfg b/builder.cfg index 132c956..5c8ed6f 100644 --- a/builder.cfg +++ b/builder.cfg @@ -8,7 +8,7 @@ StripSource="True" # Mutators to be compiled # Specify them with a space as a separator, # Mutators will be compiled in the specified order -PackageBuildOrder="YAS" +PackageBuildOrder="BoxPainterLib YAS" ### Brew parameters ### @@ -25,7 +25,7 @@ PackagePeelzBrew="" # Mutators that will be uploaded to the workshop # Specify them with a space as a separator, # The order doesn't matter -PackageUpload="YAS" +PackageUpload="BoxPainterLib YAS" ### Test parameters ### @@ -39,7 +39,7 @@ Map="KF-Nuked" # Endless: KFGameContent.KFGameInfo_Endless # Objective: KFGameContent.KFGameInfo_Objective # Versus: KFGameContent.KFGameInfo_VersusSurvival -Game="KFGameContent.KFGameInfo_VersusSurvival" +Game="KFGameContent.KFGameInfo_Survival" # Difficulty: # Normal: 0