Compare commits

...

38 Commits

Author SHA1 Message Date
f1408da29a
add CHN and CHT localizations
translator: cheungfatzong
https://steamcommunity.com/profiles/76561199126205919
2024-04-28 20:12:17 +03:00
8464cf5367
Update README.md 2024-03-08 23:39:59 +03:00
86685f9b55
Merge pull request #7 from GenZmeY/short-name
add short alias for mutator
2024-03-08 23:38:41 +03:00
bf19cfa7b7
add short alias for mutator 2023-12-31 23:47:42 +03:00
4d60429c7b
update ci/cd 2023-12-31 20:50:13 +03:00
dd4cde6a61
fix broken server password icon 2023-10-21 13:08:39 +03:00
3bab74361c
update megalinter ci/cd 2023-10-21 13:02:44 +03:00
a2421820ed
Update README.md 2023-06-28 00:01:55 +03:00
2b595fdce1
Merge pull request #5 from GenZmeY/group-names
add group name (master)
2023-06-28 00:00:28 +03:00
81cc7791a4
Merge pull request #6 from GenZmeY/player-default-rank-fix
fix player default rank apply (master)
2023-06-28 00:00:10 +03:00
c40114ee56
Merge pull request #2 from GenZmeY/default_lang
Default lang + more localization (master)
2023-06-27 23:59:50 +03:00
b824302069 fix player default rank apply 2023-06-27 11:34:37 +03:00
1ad79aba1c add mutator group name 2023-06-03 17:14:44 +03:00
4ee7d2cc59 update .editorconfig 2023-05-14 12:21:03 +03:00
5f6aefea7d update build tools to v1.9.2-1-gfb458ac 2023-05-13 00:48:42 +03:00
9cd56e94df update build tools 2023-05-10 07:32:12 +03:00
145439ef10
Update README.md 2023-05-10 05:51:46 +03:00
741bb7279c include BoxPainterLib in codebase 2023-05-10 05:32:25 +03:00
ab21f050de update build tools 2023-05-10 05:25:43 +03:00
bdacf980c6 update BoxPainterLib 2023-05-10 05:24:53 +03:00
11f61e9da6 update build tools 2023-05-10 03:39:03 +03:00
9894b67d22
Merge pull request #3 from GenZmeY/editorconfig
update .editorconfig
2023-05-02 22:27:23 +03:00
b1635b8e28 update .editorconfig
I changed my mind a little
2023-05-02 22:15:56 +03:00
fdf420a75c add more localization (god bless google translate) 2023-05-02 00:52:46 +03:00
b50680554f add a hardcoded language in case localization files are missing 2023-05-02 00:37:07 +03:00
0dc735b800
Update README.md 2023-05-02 00:08:18 +03:00
9cf94dfba5
Merge pull request #1 from GenZmeY/MegaLinter
Mega linter, editorconfig, format fixes
2023-05-01 23:54:29 +03:00
b9410073cf add MegaLinter badge 2023-05-01 23:47:49 +03:00
e29d18ea1c update formatting to match .editorconfig 2023-05-01 23:26:11 +03:00
da1914f612 add .editorconfig 2023-05-01 23:03:19 +03:00
37db37f97c add MegaLinter CI/CD 2023-05-01 23:02:53 +03:00
206aebc98e Update README.md 2023-05-01 19:52:59 +03:00
430b3250be Merge branch 'BoxPainterLib' 2023-05-01 19:42:05 +03:00
05b8055ef1 remove TODO.md 2023-05-01 19:30:12 +03:00
95c3f414f9 Merge branch 'master' into BoxPainterLib 2023-05-01 19:28:45 +03:00
8b305519c2 update build tools 2023-05-01 19:28:32 +03:00
5cb5be5656 BoxPainterLib 2023-05-01 19:25:10 +03:00
07c37c7cb2 fix broken icons 2022-12-07 23:51:31 +03:00
58 changed files with 1868 additions and 1581 deletions

33
.editorconfig Normal file
View File

@ -0,0 +1,33 @@
root = true
# Global
[*]
indent_style = unset
indent_size = 4
tab_width = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = unset
# Unreal Engine 3 / Source
[*.uc]
indent_style = tab
[*.{uci,upkg}]
# Unreal Engine 3 / i18n
[*.{chn,cht,cze,dan,deu,dut,esl,esn,fra,frc,hun,int,ita,jpn,kor,pol,por,ptb,rus,tur,ukr}]
charset = utf-16le
# Other
[*.md]
indent_style = space
trim_trailing_whitespace = false
[*.yml]
indent_style = space
indent_size = 2
[*.{txt,cfg,conf}]
indent_style = tab

114
.github/workflows/mega-linter.yml vendored Normal file
View File

@ -0,0 +1,114 @@
---
name: MegaLinter
permissions: read-all
on:
push:
pull_request:
branches:
- master
env:
APPLY_FIXES: none
APPLY_FIXES_EVENT: pull_request
APPLY_FIXES_MODE: commit
FILTER_REGEX_EXCLUDE: (mega-linter.yml)
DISABLE: SPELL
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
megalinter:
name: MegaLinter
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
steps:
- name: Checkout Code
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: MegaLinter
uses: oxsecurity/megalinter@7e042c726c68415475b05a65a686c612120a1232
id: ml
env:
VALIDATE_ALL_CODEBASE: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Archive production artifacts
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392
if: success() || failure()
with:
name: MegaLinter reports
path: |
megalinter-reports
mega-linter.log
- name: Set APPLY_FIXES_IF var
run: |
printf 'APPLY_FIXES_IF=%s\n' "${{
steps.ml.outputs.has_updated_sources == 1 &&
(
env.APPLY_FIXES_EVENT == 'all' ||
env.APPLY_FIXES_EVENT == github.event_name
) &&
(
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name == github.repository
)
}}" >> "${GITHUB_ENV}"
- name: Set APPLY_FIXES_IF_* vars
run: |
printf 'APPLY_FIXES_IF_PR=%s\n' "${{
env.APPLY_FIXES_IF == 'true' &&
env.APPLY_FIXES_MODE == 'pull_request'
}}" >> "${GITHUB_ENV}"
printf 'APPLY_FIXES_IF_COMMIT=%s\n' "${{
env.APPLY_FIXES_IF == 'true' &&
env.APPLY_FIXES_MODE == 'commit' &&
(!contains(fromJSON('["refs/heads/main", "refs/heads/master"]'), github.ref))
}}" >> "${GITHUB_ENV}"
- name: Create Pull Request with applied fixes
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
id: cpr
if: env.APPLY_FIXES_IF_PR == 'true'
with:
token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
commit-message: "[MegaLinter] Apply linters automatic fixes"
title: "[MegaLinter] Apply linters automatic fixes"
labels: bot
- name: Create PR output
if: env.APPLY_FIXES_IF_PR == 'true'
run: |
echo "PR Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "PR URL - ${{ steps.cpr.outputs.pull-request-url }}"
- name: Prepare commit
if: env.APPLY_FIXES_IF_COMMIT == 'true'
run: sudo chown -Rc $UID .git/
- name: Commit and push applied linter fixes
uses: stefanzweifel/git-auto-commit-action@8756aa072ef5b4a080af5dc8fef36c5d586e521d
if: env.APPLY_FIXES_IF_COMMIT == 'true'
with:
branch: >-
${{
github.event.pull_request.head.ref ||
github.head_ref ||
github.ref
}}
commit_message: "[MegaLinter] Apply linters fixes"
commit_user_name: "github-actions"
commit_user_email: "github-actions[bot]@users.noreply.github.com"

BIN
Localization/CHN/YAS.CHN Normal file

Binary file not shown.

BIN
Localization/CHT/YAS.CHT Normal file

Binary file not shown.

BIN
Localization/CZE/YAS.CZE Normal file

Binary file not shown.

BIN
Localization/DAN/YAS.DAN Normal file

Binary file not shown.

BIN
Localization/DEU/YAS.DEU Normal file

Binary file not shown.

BIN
Localization/ESN/YAS.ESN Normal file

Binary file not shown.

BIN
Localization/FRA/YAS.FRA Normal file

Binary file not shown.

BIN
Localization/HUN/YAS.HUN Normal file

Binary file not shown.

Binary file not shown.

BIN
Localization/ITA/YAS.ITA Normal file

Binary file not shown.

BIN
Localization/JPN/YAS.JPN Normal file

Binary file not shown.

BIN
Localization/KOR/YAS.KOR Normal file

Binary file not shown.

BIN
Localization/POL/YAS.POL Normal file

Binary file not shown.

BIN
Localization/POR/YAS.POR Normal file

Binary file not shown.

BIN
Localization/PTB/YAS.PTB Normal file

Binary file not shown.

Binary file not shown.

BIN
Localization/TUR/YAS.TUR Normal file

Binary file not shown.

BIN
Localization/UKR/YAS.UKR Normal file

Binary file not shown.

View File

@ -15,7 +15,7 @@ https://forums.tripwireinteractive.com/index.php?threads/whitelisting-mods-and-m
[*]Subscribe to this mutator; [*]Subscribe to this mutator;
[*]Start KF2; [*]Start KF2;
[*]Open console (`) and input: [*]Open console (`) and input:
[b]open KF-BioticsLab?Mutator=YAS.YASMut?[/b] [b]open KF-BioticsLab?Mutator=YAS.Mut?[/b]
(replace the map and add the parameters you need) (replace the map and add the parameters you need)
[*]<Enter>. [*]<Enter>.
[/olist] [/olist]
@ -30,7 +30,7 @@ https://forums.tripwireinteractive.com/index.php?threads/whitelisting-mods-and-m
[*]Add the following string to the [b][OnlineSubsystemSteamworks.KFWorkshopSteamworks][/b] section (create one if it doesn't exist): [*]Add the following string to the [b][OnlineSubsystemSteamworks.KFWorkshopSteamworks][/b] section (create one if it doesn't exist):
[b]ServerSubscribedWorkshopItems=2521826524[/b] [b]ServerSubscribedWorkshopItems=2521826524[/b]
[*]Start the server and wait until the mutator is downloading; [*]Start the server and wait until the mutator is downloading;
[*]Add mutator to server start parameters: [b]?Mutator=YAS.YASMut[/b] and restart the server. [*]Add mutator to server start parameters: [b]?Mutator=YAS.Mut[/b] and restart the server.
[/olist] [/olist]
[h1]Important setup information[/h1] [h1]Important setup information[/h1]
@ -110,7 +110,10 @@ If you need a SteamID64 for a steam group, open the group in a browser and add t
[img]https://raw.githubusercontent.com/GenZmeY/KF2-YetAnotherScoreboard/master/PublicationContent/ID4.png[/img] [img]https://raw.githubusercontent.com/GenZmeY/KF2-YetAnotherScoreboard/master/PublicationContent/ID4.png[/img]
[h1]Notes[/h1] [h1]Notes[/h1]
📌 VersusSurvival mode not supported (yet). 📌 VersusSurvival mode not supported.
[h1]Translators:[/h1]
[url=https://steamcommunity.com/profiles/76561199126205919]cheungfatzong[/url] - Traditional [CHT] and Simplified [CHN] Chinese.
[h1]Sources[/h1] [h1]Sources[/h1]
[url=https://github.com/GenZmeY/KF2-YetAnotherScoreboard]https://github.com/GenZmeY/KF2-YetAnotherScoreboard[/url] [b](GNU GPLv3)[/b] [url=https://github.com/GenZmeY/KF2-YetAnotherScoreboard]https://github.com/GenZmeY/KF2-YetAnotherScoreboard[/url] [b](GNU GPLv3)[/b]

View File

@ -3,22 +3,22 @@
[![Steam Workshop](https://img.shields.io/static/v1?message=workshop&logo=steam&labelColor=gray&color=blue&logoColor=white&label=steam%20)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524) [![Steam Workshop](https://img.shields.io/static/v1?message=workshop&logo=steam&labelColor=gray&color=blue&logoColor=white&label=steam%20)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524)
[![Steam Downloads](https://img.shields.io/steam/downloads/2521826524)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524) [![Steam Downloads](https://img.shields.io/steam/downloads/2521826524)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524)
[![Steam Favorites](https://img.shields.io/steam/favorites/2521826524)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524) [![Steam Favorites](https://img.shields.io/steam/favorites/2521826524)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524)
[![Steam Update Date](https://img.shields.io/steam/update-date/2521826524)](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524) [![MegaLinter](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/actions/workflows/mega-linter.yml/badge.svg?branch=master)](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/actions/workflows/mega-linter.yml)
[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/GenZmeY/KF2-YetAnotherScoreboard)](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/tags) [![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/GenZmeY/KF2-YetAnotherScoreboard)](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/tags)
[![GitHub](https://img.shields.io/github/license/GenZmeY/KF2-YetAnotherScoreboard)](LICENSE) [![GitHub](https://img.shields.io/github/license/GenZmeY/KF2-YetAnotherScoreboard)](LICENSE)
# Description ## Description
Yet another scoreboard... Yet another scoreboard...
Based on the scoreboard from [ClassicHUD](https://steamcommunity.com/sharedfiles/filedetails/?id=1963099942) and heavily modified. Based on the scoreboard from [ClassicHUD](https://steamcommunity.com/sharedfiles/filedetails/?id=1963099942) and heavily modified.
# Usage ## Usage
[See steam workshop page](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524) [See steam workshop page](https://steamcommunity.com/sharedfiles/filedetails/?id=2521826524)
*** ***
**Note:** If you want to build/test/brew/publish a mutator without git-bash and/or scripts, follow [these instructions](https://tripwireinteractive.atlassian.net/wiki/spaces/KF2SW/pages/26247172/KF2+Code+Modding+How-to) instead of what is described here. **Note:** If you want to build/test/brew/publish a mutator without git-bash and/or scripts, follow [these instructions](https://tripwireinteractive.atlassian.net/wiki/spaces/KF2SW/pages/26247172/KF2+Code+Modding+How-to) instead of what is described here.
# Build ## Build
1. Install [Killing Floor 2](https://store.steampowered.com/app/232090/Killing_Floor_2/), Killing Floor 2 - SDK and [git for windows](https://git-scm.com/download/win); 1. Install [Killing Floor 2](https://store.steampowered.com/app/232090/Killing_Floor_2/), Killing Floor 2 - SDK and [git for windows](https://git-scm.com/download/win);
2. open git-bash and go to any folder where you want to store sources: 2. open git-bash and go to any folder where you want to store sources:
`cd <ANY_FOLDER_YOU_WANT>` `cd <ANY_FOLDER_YOU_WANT>`
@ -31,14 +31,7 @@ Based on the scoreboard from [ClassicHUD](https://steamcommunity.com/sharedfiles
5. The compiled files will be here: 5. The compiled files will be here:
`C:\Users\<USERNAME>\Documents\My Games\KillingFloor2\KFGame\Unpublished\BrewedPC\Script\` `C:\Users\<USERNAME>\Documents\My Games\KillingFloor2\KFGame\Unpublished\BrewedPC\Script\`
# Testing ## Bug reports
Open git-bash in the source folder and run command:
`./tools/builder -t`
(or `./tools/builder -ct` if you haven't compiled the mutator yet)
A local single-user test will be launched with parameters from `test.cfg` (edit this file if you want to test mutator with different parameters).
# Bug reports
If you find a bug, go to the [issue page](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/issues) and check if there is a description of your bug. If not, create a new issue. If you find a bug, go to the [issue page](https://github.com/GenZmeY/KF2-YetAnotherScoreboard/issues) and check if there is a description of your bug. If not, create a new issue.
Describe what the bug looks like and how reproduce it. Describe what the bug looks like and how reproduce it.
Attach screenshots if you think it might help. Attach screenshots if you think it might help.
@ -47,5 +40,6 @@ If it's a crash issue, be sure to include the `Launch.log` files. You can find t
`C:\Users\<USERNAME>\Documents\My Games\KillingFloor2\KFGame\Logs\` `C:\Users\<USERNAME>\Documents\My Games\KillingFloor2\KFGame\Logs\`
Please note that these files are overwritten every time you start the game/server. Therefore, you must take these files immediately after the game crashes in order not to lose information. Please note that these files are overwritten every time you start the game/server. Therefore, you must take these files immediately after the game crashes in order not to lose information.
# License ## License
[GNU GPLv3](LICENSE) [![license](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](LICENSE)

12
TODO.md
View File

@ -1,12 +0,0 @@
# TODO List:
+ ability to display HP on the left
- ability to hide rank
- ability to turn off the panel on the client
+ colors for perks
+ dynamic colors for dosh
+ dynamic colors for assists
- abbreviated dosh display (10K, 15K, etc.)
- images for HP (cross, skull with bones if dead)
+ show armor
+ use rank id as priority

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

@ -422,4 +422,5 @@ function RenderButton(KFGUI_Button B)
defaultproperties defaultproperties
{ {
} }

View File

@ -16,6 +16,8 @@ var transient YAS_HUD HUDOwner;
var Font MainFont, NumberFont, InfiniteFont; var Font MainFont, NumberFont, InfiniteFont;
var Color BlurColor, BlurColor2; var Color BlurColor, BlurColor2;
var BoxPainter BoxPainter;
enum ECornerPosition enum ECornerPosition
{ {
ECP_TopLeft, ECP_TopLeft,
@ -54,6 +56,8 @@ function InitStyle()
if (ItemTex == None) if (ItemTex == None)
ItemTex=Texture2D'EngineMaterials.DefaultWhiteGrid'; ItemTex=Texture2D'EngineMaterials.DefaultWhiteGrid';
BoxPainter = new class'BoxPainter';
NumberFont = Font(DynamicLoadObject("UI_Canvas_Fonts.Font_General", class'Font')); NumberFont = Font(DynamicLoadObject("UI_Canvas_Fonts.Font_General", class'Font'));
BlurColor = MakeColor(60, 60, 60, 220); BlurColor = MakeColor(60, 60, 60, 220);
@ -556,693 +560,10 @@ final function DrawWhiteBox(float XS, float YS, optional bool bClip)
Canvas.DrawTile(ItemTex, XS, YS, 19, 45, 1,1, ,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) final function DrawRectBox(float X, float Y, float Width, float Height, float Edge, optional byte Extrav)
{ {
if (Extrav == 2) if (BoxPainter.Canvas == None) BoxPainter.Canvas = Canvas;
Edge=Min(FMin(Edge, (Width)*0.5), Height);// Verify size. if (BoxPainter.Canvas != None) BoxPainter.DrawBox(X, Y, Width, Height, Edge, Extrav);
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;
}
} }
final function DrawBoxHollow(float X, float Y, float Width, float Height, float Thickness) final function DrawBoxHollow(float X, float Y, float Width, float Height, float Thickness)

View File

@ -59,4 +59,5 @@ function PreClientTravel(string PendingURL, ETravelType TravelType, bool bIsSeam
defaultproperties defaultproperties
{ {
} }

View File

@ -77,4 +77,5 @@ function DrawMenu()
defaultproperties defaultproperties
{ {
} }

View File

@ -86,4 +86,5 @@ function EmptyList()
defaultproperties defaultproperties
{ {
} }

View File

@ -13,6 +13,7 @@ function InitMenu()
Components[i].InitMenu(); Components[i].InitMenu();
} }
} }
function ShowMenu() function ShowMenu()
{ {
local int i; local int i;
@ -20,6 +21,7 @@ function ShowMenu()
for (i=0; i < Components.Length; ++i) for (i=0; i < Components.Length; ++i)
Components[i].ShowMenu(); Components[i].ShowMenu();
} }
function PreDraw() function PreDraw()
{ {
local int i; local int i;
@ -41,6 +43,7 @@ function PreDraw()
Components[i].PreDraw(); Components[i].PreDraw();
} }
} }
function InventoryChanged(optional KFWeapon Wep, optional bool bRemove) function InventoryChanged(optional KFWeapon Wep, optional bool bRemove)
{ {
local int i; local int i;
@ -48,6 +51,7 @@ function InventoryChanged(optional KFWeapon Wep, optional bool bRemove)
for (i=0; i < Components.Length; ++i) for (i=0; i < Components.Length; ++i)
Components[i].InventoryChanged(Wep, bRemove); Components[i].InventoryChanged(Wep, bRemove);
} }
function MenuTick(float DeltaTime) function MenuTick(float DeltaTime)
{ {
local int i; local int i;
@ -72,6 +76,7 @@ function CloseMenu()
for (i=0; i < Components.Length; ++i) for (i=0; i < Components.Length; ++i)
Components[i].CloseMenu(); Components[i].CloseMenu();
} }
function bool CaptureMouse() function bool CaptureMouse()
{ {
local int i; local int i;
@ -87,6 +92,7 @@ function bool CaptureMouse()
MouseArea = None; MouseArea = None;
return Super.CaptureMouse(); // check with frame itself. return Super.CaptureMouse(); // check with frame itself.
} }
function bool ReceievedControllerInput(int ControllerId, name Key, EInputEvent Event) function bool ReceievedControllerInput(int ControllerId, name Key, EInputEvent Event)
{ {
local int i; local int i;
@ -101,6 +107,7 @@ function bool ReceievedControllerInput(int ControllerId, name Key, EInputEvent E
return Super.ReceievedControllerInput(ControllerId, Key, Event); return Super.ReceievedControllerInput(ControllerId, Key, Event);
} }
function KFGUI_Base FindComponentID(name InID) function KFGUI_Base FindComponentID(name InID)
{ {
local int i; local int i;
@ -115,6 +122,7 @@ function KFGUI_Base FindComponentID(name InID)
} }
return Result; return Result;
} }
function FindAllComponentID(name InID, out array < KFGUI_Base> Res) function FindAllComponentID(name InID, out array < KFGUI_Base> Res)
{ {
local int i; local int i;
@ -124,6 +132,7 @@ function FindAllComponentID(name InID, out array < KFGUI_Base> Res)
for (i=0; i < Components.Length; ++i) for (i=0; i < Components.Length; ++i)
Components[i].FindAllComponentID(InID, Res); Components[i].FindAllComponentID(InID, Res);
} }
function RemoveComponent(KFGUI_Base B) function RemoveComponent(KFGUI_Base B)
{ {
local int i; local int i;
@ -138,6 +147,7 @@ function RemoveComponent(KFGUI_Base B)
for (i=0; i < Components.Length; ++i) for (i=0; i < Components.Length; ++i)
Components[i].RemoveComponent(B); Components[i].RemoveComponent(B);
} }
function NotifyLevelChange() function NotifyLevelChange()
{ {
local int i; local int i;

60
YAS/Classes/Mut.uc Normal file
View File

@ -0,0 +1,60 @@
class Mut extends KFMutator;
var private YAS YAS;
public simulated function bool SafeDestroy()
{
return (bPendingDelete || bDeleteMe || Destroy());
}
public event PreBeginPlay()
{
Super.PreBeginPlay();
if (WorldInfo.NetMode == NM_Client) return;
foreach WorldInfo.DynamicActors(class'YAS', YAS)
{
break;
}
if (YAS == None)
{
YAS = WorldInfo.Spawn(class'YAS');
}
if (YAS == None)
{
`Log_Base("FATAL: Can't Spawn 'YAS'");
SafeDestroy();
}
}
public function AddMutator(Mutator M)
{
if (M == Self) return;
if (M.Class == Class)
Mut(M).SafeDestroy();
else
Super.AddMutator(M);
}
public function NotifyLogin(Controller C)
{
YAS.NotifyLogin(C);
Super.NotifyLogin(C);
}
public function NotifyLogout(Controller C)
{
YAS.NotifyLogout(C);
Super.NotifyLogout(C);
}
DefaultProperties
{
GroupNames.Add("Scoreboard")
}

View File

@ -355,6 +355,7 @@ public function YAS_RepInfoOwner CreateRepInfo(Controller C)
{ {
RepInfos.AddItem(OwnerRepInfo); RepInfos.AddItem(OwnerRepInfo);
PlayerRepInfo.Rank = class'YAS_Types'.static.FromSystemRank(CfgRanks.default.Player);
OwnerRepInfo.PlayerRepInfo = PlayerRepInfo; OwnerRepInfo.PlayerRepInfo = PlayerRepInfo;
OwnerRepInfo.YAS = Self; OwnerRepInfo.YAS = Self;
OwnerRepInfo.LogLevel = LogLevel; OwnerRepInfo.LogLevel = LogLevel;

View File

@ -1,60 +1 @@
class YASMut extends KFMutator; class YASMut extends Mut; // backward compatibility
var private YAS YAS;
public simulated function bool SafeDestroy()
{
return (bPendingDelete || bDeleteMe || Destroy());
}
public event PreBeginPlay()
{
Super.PreBeginPlay();
if (WorldInfo.NetMode == NM_Client) return;
foreach WorldInfo.DynamicActors(class'YAS', YAS)
{
break;
}
if (YAS == None)
{
YAS = WorldInfo.Spawn(class'YAS');
}
if (YAS == None)
{
`Log_Base("FATAL: Can't Spawn 'YAS'");
SafeDestroy();
}
}
public function AddMutator(Mutator Mut)
{
if (Mut == Self) return;
if (Mut.Class == Class)
Mut.Destroy();
else
Super.AddMutator(Mut);
}
public function NotifyLogin(Controller C)
{
YAS.NotifyLogin(C);
Super.NotifyLogin(C);
}
public function NotifyLogout(Controller C)
{
YAS.NotifyLogout(C);
Super.NotifyLogout(C);
}
DefaultProperties
{
}

View File

@ -0,0 +1,34 @@
class YAS_LocalMessage extends Object
abstract;
var const String PlayersDefault;
var private localized String Players;
var const String SpectatorsDefault;
var private localized String Spectators;
enum E_YAS_LocalMessageType
{
YAS_Players,
YAS_Spectators
};
public static function String GetLocalizedString(E_YAS_LocalMessageType LMT)
{
switch (LMT)
{
case YAS_Players:
return (default.Players != "" ? default.Players : default.PlayersDefault);
case YAS_Spectators:
return (default.Spectators != "" ? default.Spectators : default.SpectatorsDefault);
}
return "";
}
defaultproperties
{
PlayersDefault = "Players"
SpectatorsDefault = "Spectators"
}

View File

@ -40,6 +40,8 @@ public simulated event ReplicatedEvent(name VarName)
{ {
`Log_Trace(); `Log_Trace();
`Log_Debug(`Location @ "Var:" @ VarName);
switch (VarName) switch (VarName)
{ {
case 'LogLevel': case 'LogLevel':

View File

@ -1,6 +1,8 @@
class YAS_ScoreBoard extends KFGUI_Page class YAS_ScoreBoard extends KFGUI_Page
dependson(YAS_Types); dependson(YAS_Types);
const LocalMessage = class'YAS_LocalMessage';
const HeaderWidthRatio = 0.30f; const HeaderWidthRatio = 0.30f;
const PlayerListWidthRatio = 0.6f; const PlayerListWidthRatio = 0.6f;
const PlayerEntryHeightMod = 1.05f; const PlayerEntryHeightMod = 1.05f;
@ -16,10 +18,10 @@ const FontScalarModDefault = 1.25f;
const ShowDamage = true; const ShowDamage = true;
const IconRanked = Texture2D'DailyObjective_UI.KF2_Dailies_Icon_PerkLvl'; // where the hell is the right icon? const IconRanked = Texture2D'DailyObjective_UI.KF2_Dailies_Icon_PerkLvl'; // where the hell is the right icon?
const IconCustom = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I26'; //const IconCustom = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I26';
const IconUnranked = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I28'; //const IconUnranked = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I28';
const IconUnrankedAlt = Texture2D'UI_VoiceComms_TEX.UI_VoiceCommand_Icon_Negative'; const IconUnrankedAlt = Texture2D'UI_VoiceComms_TEX.UI_VoiceCommand_Icon_Negative';
const IconPassword = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I20'; const IconPassword = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I28';
//const IconDosh = Texture2D'UI_HUD.InGameHUD_SWF_I13A'; //const IconDosh = Texture2D'UI_HUD.InGameHUD_SWF_I13A';
const IconPlayer = Texture2D'UI_HUD.InGameHUD_ZED_SWF_I1F5'; const IconPlayer = Texture2D'UI_HUD.InGameHUD_ZED_SWF_I1F5';
//const IconClock = Texture2D'UI_HUD.InGameHUD_SWF_I17D'; //const IconClock = Texture2D'UI_HUD.InGameHUD_SWF_I17D';
@ -50,8 +52,6 @@ var KFPlayerController OwnerPC;
var Color PingColor; var Color PingColor;
var float PingBars; var float PingBars;
var localized String Players, Spectators;
// Cache // Cache
var public Array<YAS_RepInfoPlayer> RepInfos; var public Array<YAS_RepInfoPlayer> RepInfos;
@ -430,7 +430,9 @@ function DrawMenu()
*/ */
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountTextColor); Canvas.SetDrawColorStruct(Settings.Style.PlayerCountTextColor);
S = Players $ ":" @ NumPlayer @ "/" @ KFGRI.MaxHumanCount $ " " $ Spectators $ ": " $ NumSpec; ; S = LocalMessage.static.GetLocalizedString(YAS_Players) $ ":"
@ NumPlayer @ "/" @ KFGRI.MaxHumanCount $ " "
$ LocalMessage.static.GetLocalizedString(YAS_Spectators) $ ": " $ NumSpec; ;
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar); Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
DrawTextShadowHLeftVCenter(S, BoxX + EdgeSize, YPos, BoxH, FontScalar); DrawTextShadowHLeftVCenter(S, BoxX + EdgeSize, YPos, BoxH, FontScalar);

View File

@ -39,7 +39,7 @@ Map="KF-Nuked"
# Endless: KFGameContent.KFGameInfo_Endless # Endless: KFGameContent.KFGameInfo_Endless
# Objective: KFGameContent.KFGameInfo_Objective # Objective: KFGameContent.KFGameInfo_Objective
# Versus: KFGameContent.KFGameInfo_VersusSurvival # Versus: KFGameContent.KFGameInfo_VersusSurvival
Game="KFGameContent.KFGameInfo_VersusSurvival" Game="KFGameContent.KFGameInfo_Survival"
# Difficulty: # Difficulty:
# Normal: 0 # Normal: 0
@ -55,7 +55,7 @@ Difficulty="0"
GameLength="0" GameLength="0"
# Mutators # Mutators
Mutators="YAS.YASMut,FriendlyHUD.FriendlyHUDMutator" Mutators="YAS.YASMut"
# Additional parameters # Additional parameters
Args="" Args=""

2
tools

@ -1 +1 @@
Subproject commit d830a5ea169e230fa40d63319b838fde1e25f6c1 Subproject commit fb458ac61f7e6c6426b8dff366dd5e7499e0d95f