include BoxPainterLib in codebase

This commit is contained in:
GenZmeY 2023-05-10 05:32:25 +03:00
parent ab21f050de
commit 741bb7279c
6 changed files with 784 additions and 8 deletions

3
.gitmodules vendored
View File

@ -1,6 +1,3 @@
[submodule "tools"]
path = tools
url = https://github.com/GenZmeY/KF2-BuildTools
[submodule "BoxPainterLib"]
path = BoxPainterLib
url = https://github.com/GenZmeY/KF2-BoxPainterLib

@ -1 +0,0 @@
Subproject commit 13798bb0b8408c5d98a35682a95a44756e4578fb

595
YAS/Classes/BoxPainter.uc Normal file
View File

@ -0,0 +1,595 @@
class BoxPainter extends BoxPainterBase;
public final function DrawBox(float X, float Y, float Width, float Height, float Edge, optional byte Shape = 0)
{
Edge = FMin(FMin(Edge, Width * 0.5), Height * 0.5);
switch (Shape)
{
case 100:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 110:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______/
ECS_BeveledCorner // BottomRight //
);
break;
case 111:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______|
ECS_Corner // BottomRight //
);
break;
case 120:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\____/|
ECS_VerticalCorner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | ____ |
ECS_VerticalCorner // BottomRight // |/ \|
);
break;
case 121:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ /
ECS_HorisontalCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // | |
ECS_HorisontalCorner // BottomRight // /_____\
);
break;
case 130:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______/
ECS_BeveledCorner // BottomRight //
);
break;
case 131:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 132:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 133:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______|
ECS_Corner // BottomRight //
);
break;
case 140:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______|
ECS_Corner // BottomRight //
);
break;
case 141:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / |
ECS_Corner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 142:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 143:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______/
ECS_BeveledCorner // BottomRight //
);
break;
case 150:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | ____ |
ECS_VerticalCorner // BottomRight // |/ \|
);
break;
case 151:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_BeveledCorner, // TopLeft // / /
ECS_HorisontalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 152:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\____/|
ECS_VerticalCorner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 153:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ \
ECS_BeveledCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______/
ECS_BeveledCorner // BottomRight //
);
break;
case 160:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / /
ECS_HorisontalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \_____/
ECS_BeveledCorner // BottomRight //
);
break;
case 161:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 162:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______/
ECS_BeveledCorner // BottomRight //
);
break;
case 163:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 170:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 171:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_BeveledCorner, // TopLeft // / |
ECS_VerticalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 172:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 173:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____/
ECS_BeveledCorner // BottomRight // |/
);
break;
case 180:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_Corner, // TopLeft // | /
ECS_HorisontalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 181:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 182:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______|
ECS_Corner // BottomRight //
);
break;
case 183:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 190:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 191:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_Corner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 192:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 193:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____|
ECS_Corner // BottomRight // |/
);
break;
case 200:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | ____ |
ECS_VerticalCorner // BottomRight // |/ \|
);
break;
case 201:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_Corner, // TopLeft // | /
ECS_HorisontalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 202:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\____/|
ECS_VerticalCorner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 203:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ |
ECS_Corner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______|
ECS_Corner // BottomRight //
);
break;
case 210:
DrawShapedBox(
X, Y, Width, Height, Edge, // ________
ECS_HorisontalCorner, // TopLeft // \ /
ECS_HorisontalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 211:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____/
ECS_BeveledCorner // BottomRight // |/
);
break;
case 212:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 213:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_BeveledCorner, // TopLeft // / |
ECS_VerticalCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 220:
DrawShapedBox(
X, Y, Width, Height, Edge, // ________
ECS_HorisontalCorner, // TopLeft // \ /
ECS_HorisontalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 221:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____|
ECS_Corner // BottomRight // |/
);
break;
case 222:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 223:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_Corner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 230:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_BeveledCorner, // TopLeft // / /
ECS_HorisontalCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______/
ECS_BeveledCorner // BottomRight //
);
break;
case 231:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 232:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ \
ECS_BeveledCorner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 233:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_BeveledCorner, // TopLeft // / |
ECS_VerticalCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____/
ECS_BeveledCorner // BottomRight // |/
);
break;
case 240:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_Corner, // TopLeft // | /
ECS_HorisontalCorner, // TopRight // | |
ECS_HorisontalCorner, // BottomLeft // /______|
ECS_Corner // BottomRight //
);
break;
case 241:
DrawShapedBox(
X, Y, Width, Height, Edge, // |\_____
ECS_VerticalCorner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |_____ |
ECS_VerticalCorner // BottomRight // \|
);
break;
case 242:
DrawShapedBox(
X, Y, Width, Height, Edge, // _______
ECS_HorisontalCorner, // TopLeft // \ |
ECS_Corner, // TopRight // | |
ECS_Corner, // BottomLeft // |______\
ECS_HorisontalCorner // BottomRight //
);
break;
case 243:
DrawShapedBox(
X, Y, Width, Height, Edge, // _____/|
ECS_Corner, // TopLeft // | |
ECS_VerticalCorner, // TopRight // | |
ECS_VerticalCorner, // BottomLeft // | _____|
ECS_Corner // BottomRight // |/
);
break;
case 250:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / \
ECS_BeveledCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______|
ECS_Corner // BottomRight //
);
break;
case 251:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_BeveledCorner, // TopLeft // / |
ECS_Corner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______|
ECS_Corner // BottomRight //
);
break;
case 252:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | |
ECS_Corner, // TopRight // | |
ECS_BeveledCorner, // BottomLeft // \______/
ECS_BeveledCorner // BottomRight //
);
break;
case 253:
DrawShapedBox(
X, Y, Width, Height, Edge, // ______
ECS_Corner, // TopLeft // | \
ECS_BeveledCorner, // TopRight // | |
ECS_Corner, // BottomLeft // |______/
ECS_BeveledCorner // BottomRight //
);
break;
case 0:
default:
DrawShapedBox(
X, Y, Width, Height, Edge, //
ECS_BeveledCorner, // TopLeft // ______
ECS_BeveledCorner, // TopRight // / \
ECS_BeveledCorner, // BottomLeft // | |
ECS_BeveledCorner // BottomRight // \______/
);
break;
}
}
defaultproperties
{
}

View File

@ -0,0 +1,185 @@
class BoxPainterBase extends Object;
const Texture = Texture2D'UI_LevelChevrons_TEX.UI_LevelChevron_Icon_02';
enum EPosition
{
ECP_TopLeft,
ECP_TopRight,
ECP_BottomLeft,
ECP_BottomRight
};
enum EShape
{
ECS_Corner,
ECS_BeveledCorner,
ECS_VerticalCorner,
ECS_HorisontalCorner
};
var public Canvas Canvas;
private final function DrawBoxTexture(float X, float Y)
{
Canvas.DrawTile(Texture, X, Y, 19, 45, 1, 1);
}
private final function DrawCornerTexture(float Size, byte Position)
{
switch (Position)
{
case ECP_TopLeft: Canvas.DrawTile(Texture, Size, Size, 77, 15, -66, 58); return;
case ECP_TopRight: Canvas.DrawTile(Texture, Size, Size, 11, 15, 66, 58); return;
case ECP_BottomLeft: Canvas.DrawTile(Texture, Size, Size, 77, 73, -66, -58); return;
case ECP_BottomRight: Canvas.DrawTile(Texture, Size, Size, 11, 73, 66, -58); return;
}
}
private final function DrawCorner(float X, float Y, float Edge, byte Position, byte Shape)
{
switch (Position)
{
case ECP_TopLeft: switch (Shape)
{
case ECS_Corner:
return;
case ECS_BeveledCorner:
Canvas.SetPos(X, Y);
DrawCornerTexture(Edge, ECP_TopLeft);
return;
case ECS_VerticalCorner:
Canvas.SetPos(X, Y - Edge);
DrawCornerTexture(Edge, ECP_TopRight);
return;
case ECS_HorisontalCorner:
Canvas.SetPos(X - Edge, Y);
DrawCornerTexture(Edge, ECP_BottomLeft);
return;
}
case ECP_TopRight: switch (Shape)
{
case ECS_Corner:
return;
case ECS_BeveledCorner:
Canvas.SetPos(X - Edge, Y);
DrawCornerTexture(Edge, ECP_TopRight);
return;
case ECS_VerticalCorner:
Canvas.SetPos(X - Edge, Y - Edge);
DrawCornerTexture(Edge, ECP_TopLeft);
return;
case ECS_HorisontalCorner:
Canvas.SetPos(X, Y);
DrawCornerTexture(Edge, ECP_BottomRight);
return;
}
case ECP_BottomLeft: switch (Shape)
{
case ECS_Corner:
return;
case ECS_BeveledCorner:
Canvas.SetPos(X, Y - Edge);
DrawCornerTexture(Edge, ECP_BottomLeft);
return;
case ECS_VerticalCorner:
Canvas.SetPos(X, Y);
DrawCornerTexture(Edge, ECP_BottomRight);
return;
case ECS_HorisontalCorner:
Canvas.SetPos(X - Edge, Y - Edge);
DrawCornerTexture(Edge, ECP_TopLeft);
return;
}
case ECP_BottomRight: switch (Shape)
{
case ECS_Corner:
return;
case ECS_BeveledCorner:
Canvas.SetPos(X - Edge, Y - Edge);
DrawCornerTexture(Edge, ECP_BottomRight);
return;
case ECS_VerticalCorner:
Canvas.SetPos(X - Edge, Y);
DrawCornerTexture(Edge, ECP_BottomLeft);
return;
case ECS_HorisontalCorner:
Canvas.SetPos(X, Y - Edge);
DrawCornerTexture(Edge, ECP_TopRight);
return;
}
}
}
public final function DrawShapedBox(float X, float Y, float W, float H, float Edge, byte TopLeftShape, byte TopRightShape, byte BottomLeftShape, byte BottomRightShape)
{
local float BoxX, BoxW;
Canvas.PreOptimizeDrawTiles((
3 // x3 DrawBoxTexture(...) + x1..x4 DrawCornerTexture(...)
+ (TopLeftShape == ECS_Corner ? 0 : 1)
+ (TopRightShape == ECS_Corner ? 0 : 1)
+ (BottomLeftShape == ECS_Corner ? 0 : 1)
+ (BottomRightShape == ECS_Corner ? 0 : 1)
), Texture);
// Top Line
DrawCorner(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);
DrawBoxTexture(BoxW, Edge);
DrawCorner(X + W, Y, Edge, ECP_TopRight, TopRightShape);
// Mid Line
Canvas.SetPos(X, Y + Edge);
DrawBoxTexture(W, H - Edge * 2);
// Bottom Line
DrawCorner(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);
DrawBoxTexture(BoxW, Edge);
DrawCorner(X + W, Y + H, Edge, ECP_BottomRight, BottomRightShape);
}
defaultproperties
{
}

View File

@ -56,7 +56,7 @@ function InitStyle()
if (ItemTex == None)
ItemTex=Texture2D'EngineMaterials.DefaultWhiteGrid';
BoxPainter = new class'BoxPainterLib.BoxPainter';
BoxPainter = new class'BoxPainter';
NumberFont = Font(DynamicLoadObject("UI_Canvas_Fonts.Font_General", class'Font'));

View File

@ -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="BoxPainterLib YAS"
PackageBuildOrder="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="BoxPainterLib YAS"
PackageUpload="YAS"
### Test parameters ###
@ -55,7 +55,7 @@ Difficulty="0"
GameLength="0"
# Mutators
Mutators="YAS.YASMut,FriendlyHUD.FriendlyHUDMutator"
Mutators="YAS.YASMut"
# Additional parameters
Args=""