This commit is contained in:
GenZmeY 2022-09-03 20:26:40 +03:00
parent 302741d427
commit 86be867a00
64 changed files with 581 additions and 1909 deletions

View File

@ -1,2 +0,0 @@
`define bEnableCallstack false
`define bEnableDebug false

View File

@ -1,7 +1,4 @@
Class ClassicStyle extends KF2Style;
`include(Build.uci)
`include(Logger.uci)
class ClassicStyle extends KF2Style;
function RenderFramedWindow(KFGUI_FloatingWindow P)
{

View File

@ -1,47 +0,0 @@
class CustomRanks extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config array<RankInfo> Rank;
public static function InitConfig(int ConfigVersion)
{
local RankInfo ExampleRank;
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
// Example rank for player(s)
ExampleRank.ID = 0;
ExampleRank.Rank = "YAS Creator";
ExampleRank.TextColor.R = 130;
ExampleRank.TextColor.G = 250;
ExampleRank.TextColor.B = 235;
ExampleRank.OverrideAdminRank = false;
default.Rank.AddItem(ExampleRank);
// Example rank for steam group members
ExampleRank.ID = 1;
ExampleRank.Rank = "MSK-GS";
ExampleRank.TextColor.R = 130;
ExampleRank.TextColor.G = 250;
ExampleRank.TextColor.B = 130;
ExampleRank.OverrideAdminRank = false;
default.Rank.AddItem(ExampleRank);
case 1:
case 2147483647:
StaticSaveConfig();
}
}
defaultproperties
{
}

View File

@ -1,9 +1,6 @@
Class GUIStyleBase extends Object
class GUIStyleBase extends Object
abstract;
`include(Build.uci)
`include(Logger.uci)
var Texture2D ItemTex;
var array<Texture2D> BorderTextures, ArrowTextures, ButtonTextures, TabTextures, ItemBoxTextures, PerkBox, CheckBoxTextures, ProgressBarTextures, SliderTextures;
var Texture2D ScrollTexture, FavoriteIcon, BankNoteIcon;
@ -14,7 +11,7 @@ var() byte MaxFontScale;
var float DefaultHeight; // Default font text size.
var transient Canvas Canvas;
var transient KF2GUIController Owner;
var transient YASHUD HUDOwner;
var transient YAS_HUD HUDOwner;
var Font MainFont, NumberFont, InfiniteFont;
var Color BlurColor, BlurColor2;

View File

@ -1,13 +1,10 @@
Class KF2GUIController extends Info
class KF2GUIController extends Info
transient;
`include(Build.uci)
`include(Logger.uci)
var() class<GUIStyleBase> DefaultStyle;
var PlayerController PlayerOwner;
var YASHUD HUDOwner;
var YAS_HUD HUDOwner;
var transient KF2GUIInput CustomInput;
var transient PlayerInput BackupInput;
var transient GameViewportClient ClientViewport;
@ -67,7 +64,7 @@ simulated function PostBeginPlay()
{
PlayerOwner = PlayerController(Owner);
ClientViewport = LocalPlayer(PlayerOwner.Player).ViewportClient;
HUDOwner = YASHUD(PlayerOwner.myHUD);
HUDOwner = YAS_HUD(PlayerOwner.myHUD);
CurrentStyle = new (None) DefaultStyle;
CurrentStyle.InitStyle();
@ -448,7 +445,7 @@ simulated function KFGUI_Base InitializeHUDWidget(class<KFGUI_Base> GUIClass)
{
local KFGUI_Base Widget;
if (GUIClass == None)
if (GUIclass == None)
return None;
Widget = New(None) GUIClass;
@ -471,7 +468,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
local int i;
local KFGUI_Page M;
if (MenuClass == None)
if (Menuclass == None)
return None;
if (KeyboardFocus != None)
@ -489,7 +486,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
if (MenuClass.Default.bUnique)
{
for (i=0; i < ActiveMenus.Length; ++i)
if (ActiveMenus[i].Class == MenuClass)
if (ActiveMenus[i].class == MenuClass)
{
if (i > 0 && ActiveMenus[i].BringPageToFront() ) // Sort it upfront.
{
@ -504,7 +501,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
if (MenuClass.Default.bPersistant)
{
for (i=0; i < PersistentMenus.Length; ++i)
if (PersistentMenus[i].Class == MenuClass)
if (PersistentMenus[i].class == MenuClass)
{
M = PersistentMenus[i];
PersistentMenus.Remove(i, 1);
@ -532,7 +529,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
local int i, j;
local KFGUI_Page M;
if (!bCloseAll && MenuClass == None)
if (!bCloseAll && Menuclass == None)
return;
if (KeyboardFocus != None)
@ -544,7 +541,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
}
for (i=(ActiveMenus.Length-1); i >= 0; --i)
{
if (bCloseAll || ActiveMenus[i].Class == MenuClass)
if (bCloseAll || ActiveMenus[i].class == MenuClass)
{
M = ActiveMenus[i];
ActiveMenus.Remove(i, 1);
@ -628,7 +625,7 @@ simulated final function bool MenuIsOpen(optional class<KFGUI_Page> MenuClass)
local int i;
for (i=(ActiveMenus.Length-1); i >= 0; --i)
if (MenuClass == None || ActiveMenus[i].Class == MenuClass)
if (Menuclass == None || ActiveMenus[i].class == MenuClass)
return true;
return false;
}

View File

@ -1,10 +1,6 @@
// Input while in a menu.
class KF2GUIInput extends KFPlayerInput;
`include(Build.uci)
`include(Logger.uci)
var KF2GUIController ControllerOwner;
var PlayerInput BaseInput;

View File

@ -1,7 +1,4 @@
Class KF2Style extends GUIStyleBase;
`include(Build.uci)
`include(Logger.uci)
class KF2Style extends GUIStyleBase;
var Texture2D LoadedTex[2];
const TOOLTIP_BORDER=4;

View File

@ -2,10 +2,6 @@
class KFColorHelper extends Object
transient;
`include(Build.uci)
`include(Logger.uci)
struct HSVColour
{
var() float H, S, V, A;

View File

@ -1,8 +1,5 @@
// Ugly hack to draw ontop of flash UI!
Class KFGUIConsoleHack extends Console;
`include(Build.uci)
`include(Logger.uci)
class KFGUIConsoleHack extends Console;
var KF2GUIController OutputObject;

View File

@ -1,13 +1,9 @@
// Menu system written by Marco.
Class KFGUI_Base extends Object
class KFGUI_Base extends Object
abstract;
`include(Build.uci)
`include(Logger.uci)
var KF2GUIController Owner;
var YASHUD HUDOwner;
var YAS_HUD HUDOwner;
var KFGUI_Base ParentComponent; // Parent component if any.
var transient Canvas Canvas;

View File

@ -1,8 +1,4 @@
Class KFGUI_Button extends KFGUI_Clickable;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_Button extends KFGUI_Clickable;
var() Canvas.CanvasIcon OverlayTexture;
var() string ButtonText, GamepadButtonName;

View File

@ -1,9 +1,5 @@
class KFGUI_CategoryButton extends KFGUI_Button;
`include(Build.uci)
`include(Logger.uci)
var transient bool bOpened;
var Texture2D Icon;
var Color IconColor;

View File

@ -1,9 +1,5 @@
class KFGUI_CategoryList extends KFGUI_ComponentList;
`include(Build.uci)
`include(Logger.uci)
// Broken, does not work correctly when closing a menu and re-opening it if a category is open
struct FCategoryItems
{

View File

@ -1,8 +1,4 @@
Class KFGUI_CheckBox extends KFGUI_EditControl;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_CheckBox extends KFGUI_EditControl;
var() Texture CheckMark, CheckDisabled, CheckIdle, CheckFocus, CheckClicked;
var() bool bForceUniform, bChecked;

View File

@ -1,10 +1,6 @@
Class KFGUI_Clickable extends KFGUI_Base
class KFGUI_Clickable extends KFGUI_Base
abstract;
`include(Build.uci)
`include(Logger.uci)
var() int IntIndex; // More user variables.
var() string ToolTip;

View File

@ -1,8 +1,5 @@
class KFGUI_ColorSlider extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
var KFGUI_Slider RSlider, GSlider, BSlider, ASlider;
var KFGUI_TextLable TextLable, RedLabel, GreenLabel, BlueLabel, AlphaLabel, RedValue, GreenValue, BlueValue, AlphaValue;
var KFGUI_ComponentList SettingsBox;

View File

@ -1,8 +1,5 @@
// Columned list box (only for text lines).
Class KFGUI_ColumnList extends KFGUI_List;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ColumnList extends KFGUI_List;
struct FColumnItem
{

View File

@ -1,8 +1,5 @@
// Do not use this on your own, it is used by ColumnList
Class KFGUI_ColumnTop extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ColumnTop extends KFGUI_Base;
var() float ColumnMinSize; // Minimum pixels width allowed.
var KFGUI_ColumnList ListOwner;

View File

@ -1,7 +1,4 @@
Class KFGUI_ComboBox extends KFGUI_EditControl;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ComboBox extends KFGUI_EditControl;
var KFGUI_ComboSelector Selection;

View File

@ -1,7 +1,4 @@
Class KFGUI_ComboSelector extends KFGUI_Clickable;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ComboSelector extends KFGUI_Clickable;
var KFGUI_ComboBox Combo;
var int CurrentRow, OldRow;

View File

@ -1,8 +1,5 @@
// List box with components as items.
Class KFGUI_ComponentList extends KFGUI_List;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ComponentList extends KFGUI_List;
var int VisRange[2];
var() int NumColumns;

View File

@ -1,7 +1,4 @@
Class KFGUI_EditBox extends KFGUI_Clickable;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_EditBox extends KFGUI_Clickable;
var enum eTextCase
{

View File

@ -1,7 +1,4 @@
Class KFGUI_EditControl extends KFGUI_Clickable;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_EditControl extends KFGUI_Clickable;
var export editinline KFGUI_TextLable TextLable;
var transient float TextHeight, TextScale;

View File

@ -1,9 +1,6 @@
Class KFGUI_FloatingWindow extends KFGUI_Page
class KFGUI_FloatingWindow extends KFGUI_Page
abstract;
`include(Build.uci)
`include(Logger.uci)
var() string WindowTitle; // Title of this window.
var float DragOffset[2], OpenAnimSpeed;
var KFGUI_FloatingWindowHeader HeaderComp;

View File

@ -1,7 +1,4 @@
Class KFGUI_FloatingWindowHeader extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_FloatingWindowHeader extends KFGUI_Base;
var bool bDragWindow;

View File

@ -1,7 +1,4 @@
Class KFGUI_Frame extends KFGUI_FloatingWindow;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_Frame extends KFGUI_FloatingWindow;
var() float EdgeSize[4]; // Pixels wide for edges (left, top, right, bottom).
var() float HeaderSize[2]; // Pixels wide for edges (left, top).

View File

@ -1,7 +1,4 @@
Class KFGUI_Image extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_Image extends KFGUI_Base;
var enum eImageStyle
{

View File

@ -1,8 +1,5 @@
// List box with custom render code for the items.
Class KFGUI_List extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_List extends KFGUI_MultiComponent;
var() bool bDrawBackground, bHideScrollbar, bUseFocusSound;
var() protectedwrite int ListCount;

View File

@ -1,7 +1,4 @@
Class KFGUI_ListHorz extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ListHorz extends KFGUI_MultiComponent;
var() bool bDrawBackground, bHideScrollbar, bUseFocusSound;
var() protected int ListCount;

View File

@ -1,9 +1,6 @@
Class KFGUI_ListItem extends Object
class KFGUI_ListItem extends Object
transient;
`include(Build.uci)
`include(Logger.uci)
var KFGUI_ListItem Next;
var array<string> Columns, SortColumns;
var int Index, Value;

View File

@ -1,7 +1,4 @@
Class KFGUI_MultiComponent extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_MultiComponent extends KFGUI_Base;
var() export editinline array<KFGUI_Base> Components;

View File

@ -1,9 +1,6 @@
Class KFGUI_Page extends KFGUI_MultiComponent
class KFGUI_Page extends KFGUI_MultiComponent
abstract;
`include(Build.uci)
`include(Logger.uci)
var() byte FrameOpacity; // Transperancy of the frame.
var() bool bPersistant, // Reuse the same menu object throughout the level.
bUnique, // If calling OpenMenu multiple times with same menu class, only open one instance of it.

View File

@ -1,8 +1,5 @@
class KFGUI_ProgressBar extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
var Texture BarBack;
var Texture BarTop;
var Color BarColor;

View File

@ -1,7 +1,4 @@
Class KFGUI_RightClickMenu extends KFGUI_Clickable;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_RightClickMenu extends KFGUI_Clickable;
struct FRowItem
{

View File

@ -1,9 +1,6 @@
Class KFGUI_ScrollBarBase extends KFGUI_Clickable
class KFGUI_ScrollBarBase extends KFGUI_Clickable
abstract;
`include(Build.uci)
`include(Logger.uci)
var() int MinRange, MaxRange, ScrollStride, PageStep;
var() float ButtonScale; // Button width (scaled by default font height).
var int CurrentScroll;

View File

@ -1,7 +1,4 @@
Class KFGUI_ScrollBarH extends KFGUI_ScrollBarBase;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ScrollBarH extends KFGUI_ScrollBarBase;
defaultproperties
{

View File

@ -1,7 +1,4 @@
Class KFGUI_ScrollBarV extends KFGUI_ScrollBarBase;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_ScrollBarV extends KFGUI_ScrollBarBase;
defaultproperties
{

View File

@ -1,8 +1,5 @@
class KFGUI_Slider extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
var KFGUI_ScrollBarH ScrollBar;
var int MinValue, MaxValue;

View File

@ -1,8 +1,5 @@
// Same as SwitchComponent, but with buttons.
Class KFGUI_SwitchMenuBar extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_SwitchMenuBar extends KFGUI_MultiComponent;
var array<KFGUI_Base> SubPages;
var() byte ButtonPosition; // 0 = top, 1 = bottom, 2 = left, 3 = right

View File

@ -1,7 +1,4 @@
Class KFGUI_TextField extends KFGUI_MultiComponent;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_TextField extends KFGUI_MultiComponent;
enum ETextFieldStyles
{

View File

@ -1,7 +1,4 @@
Class KFGUI_TextLable extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_TextLable extends KFGUI_Base;
var() protected string Text;
var() color TextColor;

View File

@ -1,7 +1,4 @@
Class KFGUI_TextScroll extends KFGUI_TextField;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_TextScroll extends KFGUI_TextField;
var float ScrollSpeed;

View File

@ -1,7 +1,4 @@
Class KFGUI_Tooltip extends KFGUI_Base;
`include(Build.uci)
`include(Logger.uci)
class KFGUI_Tooltip extends KFGUI_Base;
var() array<string> Lines;
var() Canvas.FontRenderInfo TextFontInfo;

View File

@ -1,32 +0,0 @@
class PlayerRankRelations extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config array<RankRelation> Relation;
public static function InitConfig(int ConfigVersion)
{
local RankRelation ExamplePlayer;
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
// Example player
ExamplePlayer.ObjectID = "76561198001617867"; // GenZmeY SteamID64
ExamplePlayer.RankID = 0;
default.Relation.AddItem(ExamplePlayer);
case 2147483647:
StaticSaveConfig();
}
}
defaultproperties
{
}

View File

@ -1,472 +0,0 @@
class ScoreboardStyle extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
// Box shapes
var config int EdgeSize;
var config int ShapeServerNameBox;
var config int ShapeGameInfoBox;
var config int ShapeWaveInfoBox;
var config int ShapePlayersCountBox;
var config int ShapeHeaderBox;
var config int ShapeStateHealthBoxTopPlayer;
var config int ShapeStateHealthBoxMidPlayer;
var config int ShapeStateHealthBoxBottomPlayer;
var config int ShapePlayerBoxTopPlayer;
var config int ShapePlayerBoxMidPlayer;
var config int ShapePlayerBoxBottomPlayer;
var config int ShapeStatsBoxTopPlayer;
var config int ShapeStatsBoxMidPlayer;
var config int ShapeStatsBoxBottomPlayer;
// Server box
var config ColorRGBA ServerNameBoxColor;
var config ColorRGBA ServerNameTextColor;
// Game info box
var config ColorRGBA GameInfoBoxColor;
var config ColorRGBA GameInfoTextColor;
// Wave info box
var config ColorRGBA WaveBoxColor;
var config ColorRGBA WaveTextColor;
// Player count box
var config ColorRGBA PlayerCountBoxColor;
var config ColorRGBA PlayerCountTextColor;
// Header box
var config ColorRGBA ListHeaderBoxColor;
var config ColorRGBA ListHeaderTextColor;
// State box
var config ColorRGBA StateBoxColorLobby;
var config ColorRGBA StateBoxColorReady;
var config ColorRGBA StateBoxColorNotReady;
var config ColorRGBA StateBoxColorSpectator;
var config ColorRGBA StateBoxColorDead;
var config ColorRGBA StateBoxColorNone;
var config ColorRGBA StateBoxColorHealthLow;
var config ColorRGBA StateBoxColorHealthMid;
var config ColorRGBA StateBoxColorHealthHigh;
// Player box
var config ColorRGBA PlayerOwnerBoxColor;
var config ColorRGBA PlayerBoxColor;
// Stats box
var config ColorRGBA StatsOwnerBoxColor;
var config ColorRGBA StatsBoxColor;
// State text
var config ColorRGBA StateTextColorLobby;
var config ColorRGBA StateTextColorReady;
var config ColorRGBA StateTextColorNotReady;
var config ColorRGBA StateTextColorSpectator;
var config ColorRGBA StateTextColorDead;
var config ColorRGBA StateTextColorNone;
var config ColorRGBA StateTextColorHealthLow;
var config ColorRGBA StateTextColorHealthMid;
var config ColorRGBA StateTextColorHealthHigh;
// Rank text
var config ColorRGBA RankTextColor;
// Player text
var config ColorRGBA PlayerNameTextColor;
// Level text
var config ColorRGBA LevelTextColorLow;
var config ColorRGBA LevelTextColorMid;
var config ColorRGBA LevelTextColorHigh;
// Perk text
var config ColorRGBA ZedTextColor;
var config ColorRGBA PerkNoneTextColor;
var config ColorRGBA PerkBerserkerTextColor;
var config ColorRGBA PerkCommandoTextColor;
var config ColorRGBA PerkSupportTextColor;
var config ColorRGBA PerkFieldMedicTextColor;
var config ColorRGBA PerkDemolitionistTextColor;
var config ColorRGBA PerkFirebugTextColor;
var config ColorRGBA PerkGunslingerTextColor;
var config ColorRGBA PerkSharpshooterTextColor;
var config ColorRGBA PerkSwatTextColor;
var config ColorRGBA PerkSurvivalistTextColor;
// Dosh text
var config ColorRGBA DoshTextColorLow;
var config ColorRGBA DoshTextColorMid;
var config ColorRGBA DoshTextColorHigh;
// Kills text
var config ColorRGBA KillsTextColorLow;
var config ColorRGBA KillsTextColorMid;
var config ColorRGBA KillsTextColorHigh;
// Assists text
var config ColorRGBA AssistsTextColorLow;
var config ColorRGBA AssistsTextColorMid;
var config ColorRGBA AssistsTextColorHigh;
// Ping text
var config ColorRGBA PingTextColorNone;
var config ColorRGBA PingTextColorLow;
var config ColorRGBA PingTextColorMid;
var config ColorRGBA PingTextColorHigh;
// Other settings
var config bool bShowPingBars;
var config bool bHealthBoxSmoothColorChange;
var config bool bHealthTextSmoothColorChange;
var config bool bLevelTextSmoothColorChange;
var config bool bDoshTextSmoothColorChange;
var config bool bKillsTextSmoothColorChange;
var config bool bAssistsTextSmoothColorChange;
var config bool bPingTextSmoothColorChange;
public static function InitConfig(int ConfigVersion)
{
local YASStyle DefaultStyle;
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
WriteSettings(DefaultSettings());
case 1:
default.AssistsTextColorHigh = DefaultStyle.AssistsTextColorHigh;
default.AssistsTextColorLow = DefaultStyle.AssistsTextColorLow;
default.AssistsTextColorMid = DefaultStyle.AssistsTextColorMid;
default.bAssistsTextSmoothColorChange = DefaultStyle.AssistsTextSmoothColorChange;
default.bDoshTextSmoothColorChange = DefaultStyle.DoshTextSmoothColorChange;
default.bHealthBoxSmoothColorChange = DefaultStyle.HealthBoxSmoothColorChange;
default.bHealthTextSmoothColorChange = DefaultStyle.HealthTextSmoothColorChange;
default.bKillsTextSmoothColorChange = DefaultStyle.KillsTextSmoothColorChange;
default.bLevelTextSmoothColorChange = DefaultStyle.LevelTextSmoothColorChange;
default.bPingTextSmoothColorChange = DefaultStyle.PingTextSmoothColorChange;
default.bShowPingBars = DefaultStyle.ShowPingBars;
default.DoshTextColorHigh = DefaultStyle.DoshTextColorHigh;
default.DoshTextColorLow = DefaultStyle.DoshTextColorLow;
default.DoshTextColorMid = DefaultStyle.DoshTextColorMid;
default.KillsTextColorHigh = DefaultStyle.KillsTextColorHigh;
default.KillsTextColorLow = DefaultStyle.KillsTextColorLow;
default.KillsTextColorMid = DefaultStyle.KillsTextColorMid;
default.LevelTextColorHigh = DefaultStyle.LevelTextColorHigh;
default.LevelTextColorLow = DefaultStyle.LevelTextColorLow;
default.LevelTextColorMid = DefaultStyle.LevelTextColorMid;
default.PerkBerserkerTextColor = DefaultStyle.PerkBerserkerTextColor;
default.PerkCommandoTextColor = DefaultStyle.PerkCommandoTextColor;
default.PerkDemolitionistTextColor = DefaultStyle.PerkDemolitionistTextColor;
default.PerkFieldMedicTextColor = DefaultStyle.PerkFieldMedicTextColor;
default.PerkFirebugTextColor = DefaultStyle.PerkFirebugTextColor;
default.PerkGunslingerTextColor = DefaultStyle.PerkGunslingerTextColor;
default.PerkNoneTextColor = DefaultStyle.PerkNoneTextColor;
default.PerkSharpshooterTextColor = DefaultStyle.PerkSharpshooterTextColor;
default.PerkSupportTextColor = DefaultStyle.PerkSupportTextColor;
default.PerkSurvivalistTextColor = DefaultStyle.PerkSurvivalistTextColor;
default.PerkSwatTextColor = DefaultStyle.PerkSwatTextColor;
default.StateBoxColorDead = DefaultStyle.StateBoxColorDead;
default.StateBoxColorNone = DefaultStyle.StateBoxColorNone;
default.StateBoxColorHealthHigh = DefaultStyle.StateBoxColorHealthHigh;
default.StateBoxColorHealthLow = DefaultStyle.StateBoxColorHealthLow;
default.StateBoxColorHealthMid = DefaultStyle.StateBoxColorHealthMid;
default.StateBoxColorLobby = DefaultStyle.StateBoxColorLobby;
default.StateBoxColorNotReady = DefaultStyle.StateBoxColorNotReady;
default.StateBoxColorReady = DefaultStyle.StateBoxColorReady;
default.StateBoxColorSpectator = DefaultStyle.StateBoxColorSpectator;
default.StateTextColorNone = DefaultStyle.StateTextColorNone;
default.StateTextColorHealthHigh = DefaultStyle.StateTextColorHealthHigh;
default.StateTextColorHealthLow = DefaultStyle.StateTextColorHealthLow;
default.StateTextColorHealthMid = DefaultStyle.StateTextColorHealthMid;
default.StatsOwnerBoxColor = DefaultStyle.StatsOwnerBoxColor;
default.ShapeStateHealthBoxTopPlayer = DefaultStyle.ShapeStateHealthBoxTopPlayer;
default.ShapeStateHealthBoxMidPlayer = DefaultStyle.ShapeStateHealthBoxMidPlayer;
default.ShapeStateHealthBoxBottomPlayer = DefaultStyle.ShapeStateHealthBoxBottomPlayer;
default.PingTextColorNone = DefaultStyle.PingTextColorNone;
WriteSettings(Settings());
case 2147483647:
StaticSaveConfig();
}
}
public static function YASStyle DefaultSettings()
{
local YASStyle Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASStyle Settings()
{
local YASStyle Settings;
`callstack_static("Settings");
// Box shapes
Settings.EdgeSize = default.EdgeSize;
Settings.ShapeServerNameBox = default.ShapeServerNameBox;
Settings.ShapeGameInfoBox = default.ShapeGameInfoBox;
Settings.ShapeWaveInfoBox = default.ShapeWaveInfoBox;
Settings.ShapePlayersCountBox = default.ShapePlayersCountBox;
Settings.ShapeHeaderBox = default.ShapeHeaderBox;
Settings.ShapeStateHealthBoxTopPlayer = default.ShapeStateHealthBoxTopPlayer;
Settings.ShapeStateHealthBoxMidPlayer = default.ShapeStateHealthBoxMidPlayer;
Settings.ShapeStateHealthBoxBottomPlayer = default.ShapeStateHealthBoxBottomPlayer;
Settings.ShapePlayerBoxTopPlayer = default.ShapePlayerBoxTopPlayer;
Settings.ShapePlayerBoxMidPlayer = default.ShapePlayerBoxMidPlayer;
Settings.ShapePlayerBoxBottomPlayer = default.ShapePlayerBoxBottomPlayer;
Settings.ShapeStatsBoxTopPlayer = default.ShapeStatsBoxTopPlayer;
Settings.ShapeStatsBoxMidPlayer = default.ShapeStatsBoxMidPlayer;
Settings.ShapeStatsBoxBottomPlayer = default.ShapeStatsBoxBottomPlayer;
// Server box
Settings.ServerNameBoxColor = default.ServerNameBoxColor;
Settings.ServerNameTextColor = default.ServerNameTextColor;
// Game info box
Settings.GameInfoBoxColor = default.GameInfoBoxColor;
Settings.GameInfoTextColor = default.GameInfoTextColor;
// Wave info box
Settings.WaveBoxColor = default.WaveBoxColor;
Settings.WaveTextColor = default.WaveTextColor;
// Player count box
Settings.PlayerCountBoxColor = default.PlayerCountBoxColor;
Settings.PlayerCountTextColor = default.PlayerCountTextColor;
// Header box
Settings.ListHeaderBoxColor = default.ListHeaderBoxColor;
Settings.ListHeaderTextColor = default.ListHeaderTextColor;
// State box
Settings.StateBoxColorLobby = default.StateBoxColorLobby;
Settings.StateBoxColorReady = default.StateBoxColorReady;
Settings.StateBoxColorNotReady = default.StateBoxColorNotReady;
Settings.StateBoxColorSpectator = default.StateBoxColorSpectator;
Settings.StateBoxColorDead = default.StateBoxColorDead;
Settings.StateBoxColorNone = default.StateBoxColorNone;
Settings.StateBoxColorHealthLow = default.StateBoxColorHealthLow;
Settings.StateBoxColorHealthMid = default.StateBoxColorHealthMid;
Settings.StateBoxColorHealthHigh = default.StateBoxColorHealthHigh;
// Player box
Settings.PlayerOwnerBoxColor = default.PlayerOwnerBoxColor;
Settings.PlayerBoxColor = default.PlayerBoxColor;
// Stats box
Settings.StatsOwnerBoxColor = default.StatsOwnerBoxColor;
Settings.StatsBoxColor = default.StatsBoxColor;
// State text
Settings.StateTextColorLobby = default.StateTextColorLobby;
Settings.StateTextColorReady = default.StateTextColorReady;
Settings.StateTextColorNotReady = default.StateTextColorNotReady;
Settings.StateTextColorSpectator = default.StateTextColorSpectator;
Settings.StateTextColorDead = default.StateTextColorDead;
Settings.StateTextColorNone = default.StateTextColorNone;
Settings.StateTextColorHealthLow = default.StateTextColorHealthLow;
Settings.StateTextColorHealthMid = default.StateTextColorHealthMid;
Settings.StateTextColorHealthHigh = default.StateTextColorHealthHigh;
// Rank text
Settings.RankTextColor = default.RankTextColor;
// Player text
Settings.PlayerNameTextColor = default.PlayerNameTextColor;
// Level text
Settings.LevelTextColorLow = default.LevelTextColorLow;
Settings.LevelTextColorMid = default.LevelTextColorMid;
Settings.LevelTextColorHigh = default.LevelTextColorHigh;
// Perk text
Settings.ZedTextColor = default.ZedTextColor;
Settings.PerkNoneTextColor = default.PerkNoneTextColor;
Settings.PerkBerserkerTextColor = default.PerkBerserkerTextColor;
Settings.PerkCommandoTextColor = default.PerkCommandoTextColor;
Settings.PerkSupportTextColor = default.PerkSupportTextColor;
Settings.PerkFieldMedicTextColor = default.PerkFieldMedicTextColor;
Settings.PerkDemolitionistTextColor = default.PerkDemolitionistTextColor;
Settings.PerkFirebugTextColor = default.PerkFirebugTextColor;
Settings.PerkGunslingerTextColor = default.PerkGunslingerTextColor;
Settings.PerkSharpshooterTextColor = default.PerkSharpshooterTextColor;
Settings.PerkSwatTextColor = default.PerkSwatTextColor;
Settings.PerkSurvivalistTextColor = default.PerkSurvivalistTextColor;
// Dosh text
Settings.DoshTextColorLow = default.DoshTextColorLow;
Settings.DoshTextColorMid = default.DoshTextColorMid;
Settings.DoshTextColorHigh = default.DoshTextColorHigh;
// Kills text
Settings.KillsTextColorLow = default.KillsTextColorLow;
Settings.KillsTextColorMid = default.KillsTextColorMid;
Settings.KillsTextColorHigh = default.KillsTextColorHigh;
// Assists text
Settings.AssistsTextColorLow = default.AssistsTextColorLow;
Settings.AssistsTextColorMid = default.AssistsTextColorMid;
Settings.AssistsTextColorHigh = default.AssistsTextColorHigh;
// Ping text
Settings.PingTextColorNone = default.PingTextColorNone;
Settings.PingTextColorLow = default.PingTextColorLow;
Settings.PingTextColorMid = default.PingTextColorMid;
Settings.PingTextColorHigh = default.PingTextColorHigh;
// Other settings
Settings.ShowPingBars = default.bShowPingBars;
Settings.HealthBoxSmoothColorChange = default.bHealthBoxSmoothColorChange;
Settings.HealthTextSmoothColorChange = default.bHealthTextSmoothColorChange;
Settings.LevelTextSmoothColorChange = default.bLevelTextSmoothColorChange;
Settings.DoshTextSmoothColorChange = default.bDoshTextSmoothColorChange;
Settings.KillsTextSmoothColorChange = default.bKillsTextSmoothColorChange;
Settings.AssistsTextSmoothColorChange = default.bAssistsTextSmoothColorChange;
Settings.PingTextSmoothColorChange = default.bPingTextSmoothColorChange;
return Settings;
}
public static function WriteSettings(YASStyle Settings)
{
`callstack_static("WriteSettings");
// Box shapes
default.EdgeSize = Settings.EdgeSize;
default.ShapeServerNameBox = Settings.ShapeServerNameBox;
default.ShapeGameInfoBox = Settings.ShapeGameInfoBox;
default.ShapeWaveInfoBox = Settings.ShapeWaveInfoBox;
default.ShapePlayersCountBox = Settings.ShapePlayersCountBox;
default.ShapeHeaderBox = Settings.ShapeHeaderBox;
default.ShapeStateHealthBoxTopPlayer = Settings.ShapeStateHealthBoxTopPlayer;
default.ShapeStateHealthBoxMidPlayer = Settings.ShapeStateHealthBoxMidPlayer;
default.ShapeStateHealthBoxBottomPlayer = Settings.ShapeStateHealthBoxBottomPlayer;
default.ShapePlayerBoxTopPlayer = Settings.ShapePlayerBoxTopPlayer;
default.ShapePlayerBoxMidPlayer = Settings.ShapePlayerBoxMidPlayer;
default.ShapePlayerBoxBottomPlayer = Settings.ShapePlayerBoxBottomPlayer;
default.ShapeStatsBoxTopPlayer = Settings.ShapeStatsBoxTopPlayer;
default.ShapeStatsBoxMidPlayer = Settings.ShapeStatsBoxMidPlayer;
default.ShapeStatsBoxBottomPlayer = Settings.ShapeStatsBoxBottomPlayer;
// Server box
default.ServerNameBoxColor = Settings.ServerNameBoxColor;
default.ServerNameTextColor = Settings.ServerNameTextColor;
// Game info box
default.GameInfoBoxColor = Settings.GameInfoBoxColor;
default.GameInfoTextColor = Settings.GameInfoTextColor;
// Wave info box
default.WaveBoxColor = Settings.WaveBoxColor;
default.WaveTextColor = Settings.WaveTextColor;
// Player count box
default.PlayerCountBoxColor = Settings.PlayerCountBoxColor;
default.PlayerCountTextColor = Settings.PlayerCountTextColor;
// Header box
default.ListHeaderBoxColor = Settings.ListHeaderBoxColor;
default.ListHeaderTextColor = Settings.ListHeaderTextColor;
// State box
default.StateBoxColorLobby = Settings.StateBoxColorLobby;
default.StateBoxColorReady = Settings.StateBoxColorReady;
default.StateBoxColorNotReady = Settings.StateBoxColorNotReady;
default.StateBoxColorSpectator = Settings.StateBoxColorSpectator;
default.StateBoxColorDead = Settings.StateBoxColorDead;
default.StateBoxColorNone = Settings.StateBoxColorNone;
default.StateBoxColorHealthLow = Settings.StateBoxColorHealthLow;
default.StateBoxColorHealthMid = Settings.StateBoxColorHealthMid;
default.StateBoxColorHealthHigh = Settings.StateBoxColorHealthHigh;
// Player box
default.PlayerOwnerBoxColor = Settings.PlayerOwnerBoxColor;
default.PlayerBoxColor = Settings.PlayerBoxColor;
// Stats box
default.StatsOwnerBoxColor = Settings.StatsOwnerBoxColor;
default.StatsBoxColor = Settings.StatsBoxColor;
// State text
default.StateTextColorLobby = Settings.StateTextColorLobby;
default.StateTextColorReady = Settings.StateTextColorReady;
default.StateTextColorNotReady = Settings.StateTextColorNotReady;
default.StateTextColorSpectator = Settings.StateTextColorSpectator;
default.StateTextColorDead = Settings.StateTextColorDead;
default.StateTextColorNone = Settings.StateTextColorNone;
default.StateTextColorHealthLow = Settings.StateTextColorHealthLow;
default.StateTextColorHealthMid = Settings.StateTextColorHealthMid;
default.StateTextColorHealthHigh = Settings.StateTextColorHealthHigh;
// Rank text
default.RankTextColor = Settings.RankTextColor;
// Player text
default.PlayerNameTextColor = Settings.PlayerNameTextColor;
// Level text
default.LevelTextColorLow = Settings.LevelTextColorLow;
default.LevelTextColorMid = Settings.LevelTextColorMid;
default.LevelTextColorHigh = Settings.LevelTextColorHigh;
// Perk text
default.ZedTextColor = Settings.ZedTextColor;
default.PerkNoneTextColor = Settings.PerkNoneTextColor;
default.PerkBerserkerTextColor = Settings.PerkBerserkerTextColor;
default.PerkCommandoTextColor = Settings.PerkCommandoTextColor;
default.PerkSupportTextColor = Settings.PerkSupportTextColor;
default.PerkFieldMedicTextColor = Settings.PerkFieldMedicTextColor;
default.PerkDemolitionistTextColor = Settings.PerkDemolitionistTextColor;
default.PerkFirebugTextColor = Settings.PerkFirebugTextColor;
default.PerkGunslingerTextColor = Settings.PerkGunslingerTextColor;
default.PerkSharpshooterTextColor = Settings.PerkSharpshooterTextColor;
default.PerkSwatTextColor = Settings.PerkSwatTextColor;
default.PerkSurvivalistTextColor = Settings.PerkSurvivalistTextColor;
// Dosh text
default.DoshTextColorLow = Settings.DoshTextColorLow;
default.DoshTextColorMid = Settings.DoshTextColorMid;
default.DoshTextColorHigh = Settings.DoshTextColorHigh;
// Kills text
default.KillsTextColorLow = Settings.KillsTextColorLow;
default.KillsTextColorMid = Settings.KillsTextColorMid;
default.KillsTextColorHigh = Settings.KillsTextColorHigh;
// Assists text
default.AssistsTextColorLow = Settings.AssistsTextColorLow;
default.AssistsTextColorMid = Settings.AssistsTextColorMid;
default.AssistsTextColorHigh = Settings.AssistsTextColorHigh;
// Ping text
default.PingTextColorNone = Settings.PingTextColorNone;
default.PingTextColorLow = Settings.PingTextColorLow;
default.PingTextColorMid = Settings.PingTextColorMid;
default.PingTextColorHigh = Settings.PingTextColorHigh;
// Other settings
default.bShowPingBars = Settings.ShowPingBars;
default.bHealthBoxSmoothColorChange = Settings.HealthBoxSmoothColorChange;
default.bHealthTextSmoothColorChange = Settings.HealthTextSmoothColorChange;
default.bLevelTextSmoothColorChange = Settings.LevelTextSmoothColorChange;
default.bDoshTextSmoothColorChange = Settings.DoshTextSmoothColorChange;
default.bKillsTextSmoothColorChange = Settings.KillsTextSmoothColorChange;
default.bAssistsTextSmoothColorChange = Settings.AssistsTextSmoothColorChange;
default.bPingTextSmoothColorChange = Settings.PingTextSmoothColorChange;
}
defaultProperties
{
}

View File

@ -1,12 +0,0 @@
class ScoreboardStyleClient extends ScoreboardStyle
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config bool bEnabled;
defaultProperties
{
}

View File

@ -1,58 +0,0 @@
class SettingsHealth extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config int Low;
var config int High;
public static function InitConfig(int ConfigVersion)
{
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
case 1:
WriteSettings(DefaultSettings());
case 2147483647:
StaticSaveConfig();
}
}
public static function YASSettingsHealth DefaultSettings()
{
local YASSettingsHealth Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASSettingsHealth Settings()
{
local YASSettingsHealth Settings;
`callstack_static("Settings");
Settings.Low = default.Low;
Settings.High = default.High;
return Settings;
}
public static function WriteSettings(YASSettingsHealth Settings)
{
`callstack_static("WriteSettings");
default.Low = Settings.Low;
default.High = Settings.High;
}
defaultproperties
{
}

View File

@ -1,76 +0,0 @@
class SettingsLevel extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config int Normal_Low;
var config int Normal_High;
var config int Hard_Low;
var config int Hard_High;
var config int Suicide_Low;
var config int Suicide_High;
var config int HellOnEarth_Low;
var config int HellOnEarth_High;
public static function InitConfig(int ConfigVersion)
{
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
case 1:
WriteSettings(DefaultSettings());
case 2147483647:
StaticSaveConfig();
}
}
public static function YASSettingsLevel DefaultSettings()
{
local YASSettingsLevel Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASSettingsLevel Settings()
{
local YASSettingsLevel Settings;
`callstack_static("Settings");
Settings.Low [0] = default.Normal_Low;
Settings.High[0] = default.Normal_High;
Settings.Low [1] = default.Hard_Low;
Settings.High[1] = default.Hard_High;
Settings.Low [2] = default.Suicide_Low;
Settings.High[2] = default.Suicide_High;
Settings.Low [3] = default.HellOnEarth_Low;
Settings.High[3] = default.HellOnEarth_High;
return Settings;
}
public static function WriteSettings(YASSettingsLevel Settings)
{
`callstack_static("WriteSettings");
default.Normal_Low = Settings.Low [0];
default.Normal_High = Settings.High[0];
default.Hard_Low = Settings.Low [1];
default.Hard_High = Settings.High[1];
default.Suicide_Low = Settings.Low [2];
default.Suicide_High = Settings.High[2];
default.HellOnEarth_Low = Settings.Low [3];
default.HellOnEarth_High = Settings.High[3];
}
defaultproperties
{
}

View File

@ -1,58 +0,0 @@
class SettingsPing extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config int Low;
var config int High;
public static function InitConfig(int ConfigVersion)
{
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
case 1:
WriteSettings(DefaultSettings());
case 2147483647:
StaticSaveConfig();
}
}
public static function YASSettingsPing DefaultSettings()
{
local YASSettingsPing Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASSettingsPing Settings()
{
local YASSettingsPing Settings;
`callstack_static("Settings");
Settings.Low = default.Low;
Settings.High = default.High;
return Settings;
}
public static function WriteSettings(YASSettingsPing Settings)
{
`callstack_static("WriteSettings");
default.Low = Settings.Low;
default.High = Settings.High;
}
defaultproperties
{
}

View File

@ -1,32 +0,0 @@
class SteamGroupRankRelations extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config array<RankRelation> Relation;
public static function InitConfig(int ConfigVersion)
{
local RankRelation ExampleSteamGroup;
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
// Example steam group
ExampleSteamGroup.ObjectID = "103582791465384046"; // MSK-GS SteamID64
ExampleSteamGroup.RankID = 1;
default.Relation.AddItem(ExampleSteamGroup);
case 2147483647:
StaticSaveConfig();
}
}
defaultproperties
{
}

View File

@ -1,62 +0,0 @@
class SystemAdminRank extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config string Rank;
var config ColorRGBA TextColor;
var config Fields ApplyColorToFields;
public static function InitConfig(int ConfigVersion)
{
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
WriteSettings(DefaultSettings());
case 1:
case 2147483647:
StaticSaveConfig();
}
}
public static function YASSettingsAdmin DefaultSettings()
{
local YASSettingsAdmin Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASSettingsAdmin Settings()
{
local YASSettingsAdmin Settings;
`callstack_static("Settings");
Settings.Rank = default.Rank;
Settings.TextColor = default.TextColor;
Settings.ApplyColorToFields = default.ApplyColorToFields;
return Settings;
}
public static function WriteSettings(YASSettingsAdmin Settings)
{
`callstack_static("WriteSettings");
default.Rank = Settings.Rank;
default.TextColor = Settings.TextColor;
default.ApplyColorToFields = Settings.ApplyColorToFields;
}
defaultproperties
{
}

View File

@ -1,62 +0,0 @@
class SystemPlayerRank extends Object
dependson(Types)
config(YAS);
`include(Build.uci)
`include(Logger.uci)
var config string Rank;
var config ColorRGBA TextColor;
var config Fields ApplyColorToFields;
public static function InitConfig(int ConfigVersion)
{
`callstack_static("InitConfig");
switch (ConfigVersion)
{
case 0:
WriteSettings(DefaultSettings());
case 1:
case 2147483647:
StaticSaveConfig();
}
}
public static function YASSettingsPlayer DefaultSettings()
{
local YASSettingsPlayer Settings;
`callstack_static("DefaultSettings");
return Settings;
}
public static function YASSettingsPlayer Settings()
{
local YASSettingsPlayer Settings;
`callstack_static("Settings");
Settings.Rank = default.Rank;
Settings.TextColor = default.TextColor;
Settings.ApplyColorToFields = default.ApplyColorToFields;
return Settings;
}
public static function WriteSettings(YASSettingsPlayer Settings)
{
`callstack_static("WriteSettings");
default.Rank = Settings.Rank;
default.TextColor = Settings.TextColor;
default.ApplyColorToFields = Settings.ApplyColorToFields;
}
defaultproperties
{
}

202
YAS/Classes/YAS.uc Normal file
View File

@ -0,0 +1,202 @@
class YAS extends Info
config(YAS);
const LatestVersion = 1;
//const CfgExampleConfig = class'ExampleConfig';
var private config int Version;
var private config E_LogLevel LogLevel;
var private KFGameInfo KFGI;
var private KFGameInfo_Survival KFGIS;
var private KFGameInfo_Endless KFGIE;
var private KFGameReplicationInfo KFGRI;
var private Array<YAS_RepInfo> RepInfos;
public simulated function bool SafeDestroy()
{
`Log_Trace();
return (bPendingDelete || bDeleteMe || Destroy());
}
public event PreBeginPlay()
{
`Log_Trace();
if (WorldInfo.NetMode == NM_Client)
{
`Log_Fatal("NetMode == NM_Client");
SafeDestroy();
return;
}
Super.PreBeginPlay();
PreInit();
}
public event PostBeginPlay()
{
`Log_Trace();
if (bPendingDelete || bDeleteMe) return;
Super.PostBeginPlay();
PostInit();
}
private function PreInit()
{
`Log_Trace();
if (Version == `NO_CONFIG)
{
LogLevel = LL_Info;
SaveConfig();
}
//CfgExampleConfig.static.InitConfig(Version, LatestVersion);
switch (Version)
{
case `NO_CONFIG:
`Log_Info("Config created");
case MaxInt:
`Log_Info("Config updated to version" @ LatestVersion);
break;
case LatestVersion:
`Log_Info("Config is up-to-date");
break;
default:
`Log_Warn("The config version is higher than the current version (are you using an old mutator?)");
`Log_Warn("Config version is" @ Version @ "but current version is" @ LatestVersion);
`Log_Warn("The config version will be changed to" @ LatestVersion);
break;
}
if (LatestVersion != Version)
{
Version = LatestVersion;
SaveConfig();
}
if (LogLevel == LL_WrongLevel)
{
LogLevel = LL_Info;
`Log_Warn("Wrong 'LogLevel', return to default value");
SaveConfig();
}
`Log_Base("LogLevel:" @ LogLevel);
//ExampleConfig = CfgExampleConfig.static.Load(LogLevel);
}
private function PostInit()
{
`Log_Trace();
if (WorldInfo == None || WorldInfo.Game == None)
{
SetTimer(1.0f, false, nameof(PostInit));
return;
}
KFGI = KFGameInfo(WorldInfo.Game);
if (KFGI == None)
{
`Log_Fatal("Incompatible gamemode:" @ WorldInfo.Game);
SafeDestroy();
return;
}
KFGI.HUDType = class'YAS_HUD';
if (KFGI.GameReplicationInfo == None)
{
SetTimer(1.0f, false, nameof(PostInit));
return;
}
KFGRI = KFGameReplicationInfo(KFGI.GameReplicationInfo);
if (KFGRI == None)
{
`Log_Fatal("Incompatible Replication info:" @ KFGI.GameReplicationInfo);
SafeDestroy();
return;
}
KFGIS = KFGameInfo_Survival(KFGI);
KFGIE = KFGameInfo_Endless(KFGI);
}
public function NotifyLogin(Controller C)
{
`Log_Trace();
if (!CreateRepInfo(C))
{
`Log_Error("Can't create RepInfo for:" @ C);
}
}
public function NotifyLogout(Controller C)
{
`Log_Trace();
if (!DestroyRepInfo(C))
{
`Log_Error("Can't destroy RepInfo of:" @ C);
}
}
public function bool CreateRepInfo(Controller C)
{
local YAS_RepInfo RepInfo;
`Log_Trace();
if (C == None) return false;
RepInfo = Spawn(class'YAS_RepInfo', C);
if (RepInfo == None) return false;
// Do something
RepInfos.AddItem(RepInfo);
return true;
}
public function bool DestroyRepInfo(Controller C)
{
local YAS_RepInfo RepInfo;
`Log_Trace();
if (C == None) return false;
foreach RepInfos(RepInfo)
{
if (RepInfo.Owner == C)
{
RepInfos.RemoveItem(RepInfo);
RepInfo.SafeDestroy();
return true;
}
}
return false;
}
DefaultProperties
{
}

4
YAS/Classes/YAS.upkg Normal file
View File

@ -0,0 +1,4 @@
[Flags]
AllowDownload=True
ClientOptional=False
ServerSideOnly=False

View File

@ -1,212 +1,60 @@
class YASMut extends KFMutator
dependson(Types)
config(YAS);
class YASMut extends KFMutator;
var private YAS YAS;
`include(Build.uci)
`include(Logger.uci)
const CurrentVersion = 2;
var config int ConfigVersion;
var private OnlineSubsystem Steamworks;
var private array<YASRepInfo> RepInfos;
var private array<UIDRankRelation> UIDRankRelationsPlayers;
var private array<UIDRankRelation> UIDRankRelationsSteamGroups;
var private array<UIDRankRelation> UIDRankRelationsActive;
var private YASSettings Settings;
function PostBeginPlay()
public simulated function bool SafeDestroy()
{
`callstack();
Super.PostBeginPlay();
WorldInfo.Game.HUDType = class'YASHUD';
Steamworks = class'GameEngine'.static.GetOnlineSubsystem();
InitConfig();
LoadRelations();
Settings.Style = class'ScoreboardStyle'.static.Settings();
Settings.Admin = class'SystemAdminRank'.static.Settings();
Settings.Player = class'SystemPlayerRank'.static.Settings();
Settings.Health = class'SettingsHealth'.static.Settings();
Settings.Ping = class'SettingsPing'.static.Settings();
Settings.Level = class'SettingsLevel'.static.Settings();
return (bPendingDelete || bDeleteMe || Destroy());
}
function NotifyLogin(Controller C)
public event PreBeginPlay()
{
`callstack();
Super.PreBeginPlay();
CreateRepInfo(C);
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);
}
function NotifyLogout(Controller C)
public function NotifyLogout(Controller C)
{
`callstack();
DestroyRepInfo(C);
YAS.NotifyLogout(C);
Super.NotifyLogout(C);
}
private function bool IsUID(String ID)
{
`callstack();
return (Left(ID, 2) ~= "0x");
}
private function InitConfig()
{
`callstack();
if (ConfigVersion == 0) SaveConfig(); // because I want the main settings to be at the beginning of the config :)
class'ScoreboardStyle'.static.InitConfig(ConfigVersion);
class'SystemAdminRank'.static.InitConfig(ConfigVersion);
class'SystemPlayerRank'.static.InitConfig(ConfigVersion);
class'SettingsHealth'.static.InitConfig(ConfigVersion);
class'SettingsPing'.static.InitConfig(ConfigVersion);
class'SettingsLevel'.static.InitConfig(ConfigVersion);
class'CustomRanks'.static.InitConfig(ConfigVersion);
class'PlayerRankRelations'.static.InitConfig(ConfigVersion);
class'SteamGroupRankRelations'.static.InitConfig(ConfigVersion);
switch (ConfigVersion)
{
case 0:
case 1:
case 2147483647:
`info("Config updated to version"@CurrentVersion);
break;
case CurrentVersion:
`info("Config is up-to-date");
break;
default:
`warning("The config version is higher than the current version (are you using an old mutator?)");
`warning("Config version is"@ConfigVersion@"but current version is"@CurrentVersion);
`warning("The config version will be changed to "@CurrentVersion);
break;
}
if (ConfigVersion != CurrentVersion)
{
ConfigVersion = CurrentVersion;
SaveConfig();
}
}
private function LoadRelations()
{
local RankRelation Player, SteamGroup;
local UIDRankRelation UIDInfo;
`callstack();
foreach class'PlayerRankRelations'.default.Relation(Player)
{
UIDInfo.RankID = Player.RankID;
if (IsUID(Player.ObjectID) && Steamworks.StringToUniqueNetId(Player.ObjectID, UIDInfo.UID))
{
if (UIDRankRelationsPlayers.Find('Uid', UIDInfo.UID) == INDEX_NONE)
UIDRankRelationsPlayers.AddItem(UIDInfo);
}
else if (Steamworks.Int64ToUniqueNetId(Player.ObjectID, UIDInfo.UID))
{
if (UIDRankRelationsPlayers.Find('Uid', UIDInfo.UID) == INDEX_NONE)
UIDRankRelationsPlayers.AddItem(UIDInfo);
}
else `warning("Can't add player:"@Player.ObjectID);
}
foreach class'SteamGroupRankRelations'.default.Relation(SteamGroup)
{
UIDInfo.RankID = SteamGroup.RankID;
if (IsUID(SteamGroup.ObjectID) && Steamworks.StringToUniqueNetId(SteamGroup.ObjectID, UIDInfo.UID))
{
if (UIDRankRelationsPlayers.Find('Uid', UIDInfo.UID) == INDEX_NONE)
UIDRankRelationsPlayers.AddItem(UIDInfo);
}
else if (Steamworks.Int64ToUniqueNetId(SteamGroup.ObjectID, UIDInfo.UID))
{
if (UIDRankRelationsSteamGroups.Find('Uid', UIDInfo.UID) == INDEX_NONE)
UIDRankRelationsSteamGroups.AddItem(UIDInfo);
}
else `warning("Can't add steamgroup:"@SteamGroup.ObjectID);
}
}
private function CreateRepInfo(Controller C)
{
local YASRepInfo RepInfo;
`callstack();
if (C == None) return;
RepInfo = Spawn(class'YASRepInfo', C);
RepInfo.Mut = Self;
RepInfo.Settings = Settings;
RepInfos.AddItem(RepInfo);
}
private function DestroyRepInfo(Controller C)
{
local YASRepInfo RepInfo;
`callstack();
if (C == None) return;
foreach RepInfos(RepInfo)
{
if (RepInfo.Owner == C)
{
RepInfos.RemoveItem(RepInfo);
RepInfo.Destroy();
}
}
}
public function UpdatePlayerRank(UIDRankRelation Rel)
{
local YASRepInfo RepInfo;
local int Index;
`callstack();
Index = UIDRankRelationsActive.Find('UID', Rel.UID);
if (Index != INDEX_NONE)
UIDRankRelationsActive[Index] = Rel;
else
UIDRankRelationsActive.AddItem(Rel);
foreach RepInfos(RepInfo)
RepInfo.UpdateRankRelation(Rel);
}
public function AddPlayerRank(UIDRankRelation Rel)
{
local YASRepInfo RepInfo;
`callstack();
foreach RepInfos(RepInfo)
RepInfo.AddRankRelation(Rel);
}
defaultproperties
DefaultProperties
{
}

View File

@ -1,258 +0,0 @@
class YASRepInfo extends ReplicationInfo;
`include(Build.uci)
`include(Logger.uci)
// Server vars
var public YASMut Mut;
// Client vars
var private KFScoreBoard SC;
var private OnlineSubsystemSteamworks SW;
// Fitst time replication
var public array<UIDRankRelation> SteamGroupRelations;
var private array<UIDRankRelation> RankRelations;
var public array<RankInfo> CustomRanks;
var public YASSettings Settings;
var public UIDRankRelation RankRelation; // Current player rank relation
var private int CustomRanksRepProgress, SteamGroupsRepProgress;
simulated event PostBeginPlay()
{
`callstack();
super.PostBeginPlay();
if (bDeleteMe) return;
if (Role < ROLE_Authority || WorldInfo.NetMode == NM_StandAlone)
{
GetScoreboard();
GetOnlineSubsystem();
}
}
private reliable client function GetScoreboard()
{
`callstack();
if (SC == None)
SC = YASHUD(GetALocalPlayerController().myHUD).Scoreboard;
if (SC == None)
SetTimer(0.1f, false, nameof(GetScoreboard));
else
ClearTimer(nameof(GetScoreboard));
}
private reliable client function GetOnlineSubsystem()
{
`callstack();
if (SW == None)
SW = OnlineSubsystemSteamworks(class'GameEngine'.static.GetOnlineSubsystem());
if (SW == None)
SetTimer(0.1f, false, nameof(GetOnlineSubsystem));
else
ClearTimer(nameof(GetOnlineSubsystem));
}
public function StartFirstTimeReplication()
{
`callstack();
ClientAddSettings(Settings);
SetTimer(0.01f, true, nameof(ReplicateCustomRanks));
SetTimer(0.01f, true, nameof(ReplicateSteamGroupRelations));
}
private reliable client function ClientAddSettings(YASSettings Set)
{
`callstack();
Settings = Set;
ClientApplySettings();
}
private reliable client function ClientApplySettings()
{
`callstack();
if (SC == None)
{
SetTimer(0.1f, false, nameof(ClientApplySettings));
return;
}
ClearTimer(nameof(ClientApplySettings));
if (class'ScoreboardStyleClient'.default.bEnabled)
Settings.Style = class'ScoreboardStyleClient'.static.Settings();
SC.Settings = Settings;
}
private reliable client function ClientApplyCustomRanks()
{
`callstack();
if (SC == None)
{
SetTimer(0.1f, false, nameof(ClientApplyCustomRanks));
return;
}
ClearTimer(nameof(ClientApplyCustomRanks));
SC.CustomRanks = CustomRanks;
}
private reliable client function ClientApplyRankRelations()
{
`callstack();
if (SC == None)
{
SetTimer(0.1f, false, nameof(ClientApplyRankRelations));
return;
}
ClearTimer(nameof(ClientApplyRankRelations));
SC.RankRelations = RankRelations;
}
private function ReplicateCustomRanks()
{
`callstack();
if (WorldInfo.NetMode != NM_StandAlone && CustomRanksRepProgress < CustomRanks.Length)
{
ClientAddCustomRank(CustomRanks[CustomRanksRepProgress]);
++CustomRanksRepProgress;
}
else
{
ClearTimer(nameof(ReplicateCustomRanks));
ClientApplyCustomRanks();
}
}
private reliable client function ClientAddCustomRank(RankInfo Rank)
{
`callstack();
CustomRanks.AddItem(Rank);
}
private function ReplicateSteamGroupRelations()
{
`callstack();
if (WorldInfo.NetMode != NM_StandAlone && SteamGroupsRepProgress < SteamGroupRelations.Length)
{
ClientAddSteamGroupRelation(SteamGroupRelations[SteamGroupsRepProgress]);
++SteamGroupsRepProgress;
}
else
{
ClearTimer(nameof(ReplicateSteamGroupRelations));
if (RankRelation.RankID == INDEX_NONE)
FindMyRankInSteamGroups();
}
}
private reliable client function ClientAddSteamGroupRelation(UIDRankRelation Rel)
{
`callstack();
SteamGroupRelations.AddItem(Rel);
}
private reliable client function FindMyRankInSteamGroups()
{
local UIDRankRelation SteamGroupRel;
`callstack();
foreach SteamGroupRelations(SteamGroupRel)
if (SW.CheckPlayerGroup(SteamGroupRel.UID) && (RankRelation.RankID < 0 || SteamGroupRel.RankID < RankRelation.RankID))
RankRelation.RankID = SteamGroupRel.RankID;
if (RankRelation.RankID != INDEX_NONE)
ServerApplyRank(RankRelation.RankID);
}
private reliable server function ServerApplyRank(int RankID)
{
`callstack();
RankRelation.RankID = RankID;
Mut.UpdatePlayerRank(RankRelation);
}
public function AddRankRelation(UIDRankRelation Rel)
{
`callstack();
ClientAddRankRelation(Rel);
}
private reliable client function ClientAddRankRelation(UIDRankRelation Rel)
{
`callstack();
RankRelations.AddItem(Rel);
ClientApplyRankRelations();
}
public function RemoveRankRelation(UIDRankRelation Rel)
{
`callstack();
ClientRemoveRankRelation(Rel);
}
private reliable client function ClientRemoveRankRelation(UIDRankRelation Rel)
{
`callstack();
RankRelations.RemoveItem(Rel);
ClientApplyRankRelations();
}
public function UpdateRankRelation(UIDRankRelation Rel)
{
`callstack();
ClientUpdateRankRelation(Rel);
}
private reliable client function ClientUpdateRankRelation(UIDRankRelation Rel)
{
local int Index;
`callstack();
Index = RankRelations.Find('UID', Rel.UID);
if (Index != INDEX_NONE)
RankRelations[Index] = Rel;
else
RankRelations.AddItem(Rel);
ClientApplyRankRelations();
}
defaultproperties
{
bAlwaysRelevant = false;
bOnlyRelevantToOwner = true;
Role = ROLE_Authority;
RemoteRole = ROLE_SimulatedProxy;
bSkipActorPropertyReplication = false; // This is needed, otherwise the client-to-server RPC fails
CustomRanksRepProgress = 0;
SteamGroupsRepProgress = 0;
}

View File

@ -1,16 +1,12 @@
class YASHUD extends KFGFxHudWrapper
config(YASMut);
`include(Build.uci)
`include(Logger.uci)
class YAS_HUD extends KFGFxHudWrapper;
const HUDBorderSize = 3;
var float ScaledBorderSize;
var array<KFGUI_Base> HUDWidgets;
var class<KFScoreBoard> ScoreboardClass;
var KFScoreBoard Scoreboard;
var class<YAS_ScoreBoard> ScoreboardClass;
var YAS_ScoreBoard Scoreboard;
var transient KF2GUIController GUIController;
var transient GUIStyleBase GUIStyle;
@ -58,7 +54,7 @@ function PostRender()
function LaunchHUDMenus()
{
Scoreboard = KFScoreBoard(GUIController.InitializeHUDWidget(ScoreboardClass));
Scoreboard = YAS_ScoreBoard(GUIController.InitializeHUDWidget(ScoreboardClass));
Scoreboard.SetVisibility(false);
}
@ -110,5 +106,5 @@ exec function SetShowScores(bool bNewValue)
defaultproperties
{
ScoreboardClass=class'KFScoreBoard'
ScoreboardClass=class'YAS_ScoreBoard'
}

View File

@ -0,0 +1,68 @@
class YAS_RepInfo extends ReplicationInfo;
// Server
var public YASMut Mut;
var public E_LogLevel LogLevel;
// Client
var private YAS_ScoreBoard SC;
var private OnlineSubsystemSteamworks SW;
public simulated function bool SafeDestroy()
{
`Log_Trace();
return (bPendingDelete || bDeleteMe || Destroy());
}
public simulated event PreBeginPlay()
{
if (bPendingDelete || bDeleteMe) return;
Super.PreBeginPlay();
if (Role < ROLE_Authority || WorldInfo.NetMode == NM_StandAlone)
{
GetScoreboard();
GetOnlineSubsystem();
}
}
public simulated event PostBeginPlay()
{
if (bPendingDelete || bDeleteMe) return;
Super.PostBeginPlay();
}
private reliable client function GetScoreboard() // TODO: !
{
if (SC == None)
{
SC = YAS_HUD(GetALocalPlayerController().myHUD).Scoreboard; // GetKFPC?
}
if (SC == None)
{
SetTimer(0.1f, false, nameof(GetScoreboard));
}
else
{
ClearTimer(nameof(GetScoreboard));
}
}
private reliable client function GetOnlineSubsystem()
{
// TODO: !
}
defaultproperties
{
Role = ROLE_Authority
RemoteRole = ROLE_SimulatedProxy
bAlwaysRelevant = false
bOnlyRelevantToOwner = true
bSkipActorPropertyReplication = false
}

View File

@ -1,10 +1,7 @@
class KFScoreBoard extends KFGUI_Page
dependson(Types);
class YAS_ScoreBoard extends KFGUI_Page
dependson(YAS_Types);
`include(Build.uci)
`include(Logger.uci)
const HeaderWidthRatio = 0.35f;
const HeaderWidthRatio = 0.35f;
const PlayerListWidthRatio = 0.6f;
var transient float HealthXPos, RankXPos, PlayerXPos, LevelXPos, PerkXPos, DoshXPos, KillsXPos, AssistXPos, PingXPos, ScrollXPos;
@ -27,27 +24,10 @@ var float PingBars;
// Cache
var array<String> PerkNames;
// Ranks
var array<RankInfo> CustomRanks;
var array<UIDRankRelation> RankRelations;
var YASSettings Settings;
// Localization
var localized string Players;
var localized string Spectators;
var localized string Rank;
var localized string State;
var localized string NoPerk;
var localized string Ready;
var localized string NotReady;
var localized string Unknown;
var localized string Dead;
var YAS_Settings Settings;
function InitMenu()
{
`callstack();
Super.InitMenu();
PlayersList = KFGUI_List(FindComponentID('PlayerList'));
OwnerPC = KFPlayerController(GetPlayer());
@ -153,8 +133,8 @@ function DrawMenu()
local float XPos, YPos, YL, XL, FontScalar, XPosCenter, BoxW, BoxX, BoxH, MinBoxW, DoshSize, ScrollBarWidth;
local int i, j, NumSpec, NumAlivePlayer, Width;
local float BorderSize;
local ColorRGBA ColorTmp;
local Color ColorTMP;
PC = GetPlayer();
if (KFGRI == None)
{
@ -228,10 +208,10 @@ function DrawMenu()
BoxH = YL + BorderSize;
// Top Rect (Server name)
SetDrawColor(Canvas, Settings.Style.ServerNameBoxColor);
Canvas.SetDrawColorStruct(Settings.Style.ServerNameBoxColor);
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeServerNameBox);
SetDrawColor(Canvas, Settings.Style.ServerNameTextColor);
Canvas.SetDrawColorStruct(Settings.Style.ServerNameTextColor);
S = ServerName();
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, FontScalar);
@ -240,10 +220,10 @@ function DrawMenu()
// Mid Left Rect (Info)
BoxW = Width * 0.7; // TODO ?
BoxH = YL * 2 + BorderSize * 2;
SetDrawColor(Canvas, Settings.Style.GameInfoBoxColor);
Canvas.SetDrawColorStruct(Settings.Style.GameInfoBoxColor);
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeGameInfoBox);
SetDrawColor(Canvas, Settings.Style.GameInfoTextColor);
Canvas.SetDrawColorStruct(Settings.Style.GameInfoTextColor);
S = class'KFCommon_LocalizedStrings'.static.GetFriendlyMapName(PC.WorldInfo.GetMapName(true));
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, FontScalar);
@ -253,10 +233,10 @@ function DrawMenu()
// Mid Right Rect (Wave)
BoxX = BoxX + BoxW;
BoxW = Width - BoxW;
SetDrawColor(Canvas, Settings.Style.WaveBoxColor);
Canvas.SetDrawColorStruct(Settings.Style.WaveBoxColor);
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeWaveInfoBox);
SetDrawColor(Canvas, Settings.Style.WaveTextColor);
Canvas.SetDrawColorStruct(Settings.Style.WaveTextColor);
S = class'KFGFxHUD_ScoreboardMapInfoContainer'.default.WaveString;
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, FontScalar);
DrawTextShadowHVCenter(WaveText(), BoxX, YPos + YL, BoxW, FontScalar);
@ -267,11 +247,11 @@ function DrawMenu()
BoxX = XPos;
BoxW = Width;
BoxH = YL + BorderSize;
SetDrawColor(Canvas, Settings.Style.PlayerCountBoxColor);
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountBoxColor);
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapePlayersCountBox);
SetDrawColor(Canvas, Settings.Style.PlayerCountTextColor);
S = Players$": " $ NumPlayer $ " / " $ KFGRI.MaxHumanCount $ " " $ Spectators $ ": " $ NumSpec;
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountTextColor);
S = NumPlayer $ " / " $ KFGRI.MaxHumanCount; // $ " " $ Spectators $ ": " $ NumSpec;
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, FontScalar);
@ -285,7 +265,7 @@ function DrawMenu()
XPos = (Canvas.ClipX - Width) * 0.5;
YPos += YL;
BoxH = YL + BorderSize;
SetDrawColor(Canvas, Settings.Style.ListHeaderBoxColor);
Canvas.SetDrawColorStruct(Settings.Style.ListHeaderBoxColor);
Owner.CurrentStyle.DrawRectBox( XPos - BorderSize * 2,
YPos,
Width + BorderSize * 4,
@ -339,7 +319,7 @@ function DrawMenu()
LevelXPos = PerkXPos - LevelWBox;
// Header texts
SetDrawColor(Canvas, Settings.Style.ListHeaderTextColor);
Canvas.SetDrawColorStruct(Settings.Style.ListHeaderTextColor);
DrawTextShadowHLeftVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PlayerString, XPos + PlayerXPos, YPos, FontScalar);
DrawTextShadowHLeftVCenter(class'KFGFxMenu_Inventory'.default.PerkFilterString, XPos + PerkXPos, YPos, FontScalar);
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.KillsString, XPos + KillsXPos, YPos, KillsWBox, FontScalar);
@ -347,9 +327,9 @@ function DrawMenu()
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.DoshString, XPos + DoshXPos, YPos, DoshWBox, FontScalar);
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PingString, XPos + PingXPos, YPos, PingWBox, FontScalar);
ColorTmp = Settings.Style.ListHeaderTextColor;
ColorTmp.A = 150;
SetDrawColor(Canvas, ColorTmp);
ColorTMP = Settings.Style.ListHeaderTextColor;
ColorTMP.A = 150;
Canvas.SetDrawColorStruct(ColorTmp);
DrawHealthIcon(XPos + HealthXPos, YPos, HealthWBox, BoxH);
@ -405,11 +385,6 @@ function DrawTextShadowHRightVCenter(string Str, float XPos, float YPos, float B
Owner.CurrentStyle.DrawTextShadow(Str, XPos + BoxWidth - TextWidth, YPos, 1, FontScalar);
}
function SetDrawColor(Canvas C, ColorRGBA RGBA)
{
C.SetDrawColor(RGBA.R, RGBA.G, RGBA.B, RGBA.A);
}
function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float Width, bool bFocus)
{
local string S, StrValue;
@ -420,56 +395,21 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
local bool bIsZED;
local int Ping;
local RankInfo CurrentRank;
local bool HasRank;
local int PlayerInfoIndex, PlayerRankIndex;
local float BorderSize;
local int Shape, ShapeHealth;
local ColorRGBA HealthBoxColor, HealthTextColor;
local Color HealthBoxColor, HealthTextColor;
BorderSize = Owner.HUDOwner.ScaledBorderSize;
YOffset *= 1.05;
KFPRI = KFPRIArray[Index];
HasRank = false;
PlayerInfoIndex = RankRelations.Find('UID', KFPRI.UniqueId);
if (PlayerInfoIndex != INDEX_NONE && RankRelations[PlayerInfoIndex].RankID != INDEX_NONE)
{
PlayerRankIndex = CustomRanks.Find('ID', RankRelations[PlayerInfoIndex].RankID);
if (PlayerRankIndex != INDEX_NONE)
{
HasRank = true;
CurrentRank = CustomRanks[PlayerRankIndex];
}
}
if (KFPRI.bAdmin)
{
if (!HasRank || (HasRank && !CurrentRank.OverrideAdminRank))
{
CurrentRank.Rank = Settings.Admin.Rank;
CurrentRank.TextColor = Settings.Admin.TextColor;
CurrentRank.ApplyColorToFields = Settings.Admin.ApplyColorToFields;
HasRank = true;
}
}
else // Player
{
if (!HasRank)
{
CurrentRank.Rank = Settings.Player.Rank;
CurrentRank.TextColor = Settings.Player.TextColor;
CurrentRank.ApplyColorToFields = Settings.Player.ApplyColorToFields;
HasRank = true;
}
}
if (KFGRI.bVersusGame)
{
bIsZED = KFTeamInfo_Zeds(KFPRI.Team) != None;
}
XPos = 0.f;
@ -547,7 +487,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
}
// Health box
SetDrawColor(C, HealthBoxColor);
C.SetDrawColorStruct(HealthBoxColor);
Owner.CurrentStyle.DrawRectBox(XPos,
YOffset,
HealthWBox,
@ -555,19 +495,20 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
Settings.Style.EdgeSize,
ShapeHealth);
if (CurrentRank.ApplyColorToFields.Health)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, HealthTextColor);
C.SetDrawColorStruct(HealthTextColor);
if (KFPRI.PlayerHealth > 0)
{
DrawTextShadowHVCenter(String(KFPRI.PlayerHealth), HealthXPos, TextYOffset, HealthWBox, FontScalar);
}
XPos += HealthWBox;
// PlayerBox
if (PlayerIndex == Index)
SetDrawColor(C, Settings.Style.PlayerOwnerBoxColor);
C.SetDrawColorStruct(Settings.Style.PlayerOwnerBoxColor);
else
SetDrawColor(C, Settings.Style.PlayerBoxColor);
C.SetDrawColorStruct(Settings.Style.PlayerBoxColor);
if (KFPRIArray.Length > 1 && Index == 0)
Shape = Settings.Style.ShapePlayerBoxTopPlayer;
@ -590,7 +531,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
Shape = Settings.Style.ShapeStatsBoxMidPlayer;
BoxWidth = Width - XPos;
SetDrawColor(C, Settings.Style.StatsBoxColor);
C.SetDrawColorStruct(Settings.Style.StatsBoxColor);
Owner.CurrentStyle.DrawRectBox( XPos,
YOffset,
BoxWidth,
@ -602,10 +543,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
RealPlayerWBox = PlayerWBox;
if (bIsZED)
{
if (CurrentRank.ApplyColorToFields.Perk)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.ZedTextColor);
C.SetDrawColorStruct(Settings.Style.ZedTextColor);
C.SetPos (PerkXPos, YOffset - ((Height-5) * 0.5f));
C.DrawRect (Height-5, Height-5, Texture2D'UI_Widgets.MenuBarWidget_SWF_IF');
@ -615,7 +553,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
}
else
{
if (KFPRI.CurrentPerkClass != None)
if (KFPRI.CurrentPerkclass != None)
{
PrestigeLevel = KFPRI.GetActivePerkPrestigeLevel();
Level = KFPRI.GetActivePerkLevel();
@ -642,49 +580,32 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
C.DrawTile(KFPRI.CurrentPerkClass.default.PerkIcon, PerkIconSize, PerkIconSize, 0, 0, 256, 256);
}
if (CurrentRank.ApplyColorToFields.Level)
SetDrawColor(C, CurrentRank.TextColor);
if (Level < Settings.Level.Low[KFGRI.GameDifficulty])
C.SetDrawColorStruct(Settings.Style.LevelTextColorLow);
else if (Level < Settings.Level.High[KFGRI.GameDifficulty])
C.SetDrawColorStruct(Settings.Style.LevelTextColorMid);
else
{
if (Level < Settings.Level.Low[KFGRI.GameDifficulty])
SetDrawColor(C, Settings.Style.LevelTextColorLow);
else if (Level < Settings.Level.High[KFGRI.GameDifficulty])
SetDrawColor(C, Settings.Style.LevelTextColorMid);
else
SetDrawColor(C, Settings.Style.LevelTextColorHigh);
}
C.SetDrawColorStruct(Settings.Style.LevelTextColorHigh);
S = String(Level);
DrawTextShadowHLeftVCenter(S, LevelXPos, TextYOffset, FontScalar);
if (CurrentRank.ApplyColorToFields.Level)
SetDrawColor(C, CurrentRank.TextColor);
if (CurrentRank.ApplyColorToFields.Perk)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.PerkNoneTextColor);
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
S = KFPRI.CurrentPerkClass.default.PerkName;
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
}
else
{
if (CurrentRank.ApplyColorToFields.Perk)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.PerkNoneTextColor);
S = NoPerk;
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
S = "";
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
RealPlayerWBox = PerkXPos - PlayerXPos;
}
}
// Rank
if (CurrentRank.ApplyColorToFields.Rank)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.PerkNoneTextColor);
S = CurrentRank.Rank;
DrawTextShadowHRightVCenter(S, PlayerXPos, TextYOffset, PerkIconPosX - PlayerXPos - (BorderSize * 2), FontScalar);
DrawTextShadowHRightVCenter("<Player>", PlayerXPos, TextYOffset, PerkIconPosX - PlayerXPos - (BorderSize * 2), FontScalar);
// Avatar
if (KFPRI.Avatar != None)
@ -701,10 +622,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
CheckAvatar(KFPRI, OwnerPC);
// Player
if (CurrentRank.ApplyColorToFields.Player)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.PlayerNameTextColor);
C.SetDrawColorStruct(Settings.Style.PlayerNameTextColor);
S = KFPRI.PlayerName;
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
while (XL > RealPlayerWBox)
@ -715,31 +633,22 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
DrawTextShadowHLeftVCenter(S, PlayerXPos, TextYOffset, FontScalar);
// Kill
if (CurrentRank.ApplyColorToFields.Kills)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.KillsTextColorMid); // TODO
C.SetDrawColorStruct(Settings.Style.KillsTextColorMid); // TODO
DrawTextShadowHVCenter(string (KFPRI.Kills), KillsXPos, TextYOffset, KillsWBox, FontScalar);
// Assist
if (CurrentRank.ApplyColorToFields.Assists)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.AssistsTextColorMid); // TODO
C.SetDrawColorStruct(Settings.Style.AssistsTextColorMid); // TODO
DrawTextShadowHVCenter(string (KFPRI.Assists), AssistXPos, TextYOffset, AssistWBox, FontScalar);
// Dosh
if (bIsZED)
{
SetDrawColor(C, Settings.Style.ZedTextColor);
C.SetDrawColorStruct(Settings.Style.ZedTextColor);
StrValue = "-";
}
else
{
if (CurrentRank.ApplyColorToFields.Dosh)
SetDrawColor(C, CurrentRank.TextColor);
else
SetDrawColor(C, Settings.Style.DoshTextColorMid); // TODO
C.SetDrawColorStruct(Settings.Style.DoshTextColorMid); // TODO
StrValue = GetNiceSize(int(KFPRI.Score));
}
DrawTextShadowHVCenter(StrValue, DoshXPos, TextYOffset, DoshWBox, FontScalar);
@ -747,21 +656,19 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
// Ping
if (KFPRI.bBot)
{
SetDrawColor(C, Settings.Style.PingTextColorNone);
C.SetDrawColorStruct(Settings.Style.PingTextColorNone);
S = "-";
}
else
{
Ping = int(KFPRI.Ping * `PING_SCALE);
if (CurrentRank.ApplyColorToFields.Ping)
SetDrawColor(C, CurrentRank.TextColor);
else if (Ping <= Settings.Ping.Low)
SetDrawColor(C, Settings.Style.PingTextColorLow);
if (Ping <= Settings.Ping.Low)
C.SetDrawColorStruct(Settings.Style.PingTextColorLow);
else if (Ping <= Settings.Ping.High)
SetDrawColor(C, Settings.Style.PingTextColorMid);
C.SetDrawColorStruct(Settings.Style.PingTextColorMid);
else
SetDrawColor(C, Settings.Style.PingTextColorHigh);
C.SetDrawColorStruct(Settings.Style.PingTextColorHigh);
S = string(Ping);
}

View File

@ -1,20 +1,4 @@
class Types extends Object;
`include(Build.uci)
`include(Logger.uci)
struct ColorRGBA
{
var byte R, G, B, A;
Structdefaultproperties
{
R = 250
G = 250
B = 250
A = 255
}
};
class YAS_Types extends Object;
struct Fields
{
@ -42,66 +26,7 @@ struct Fields
}
};
struct RankInfo
{
var int ID;
var string Rank;
var ColorRGBA TextColor;
var bool OverrideAdminRank;
var Fields ApplyColorToFields;
};
struct RankRelation
{
var string ObjectID;
var int RankID;
Structdefaultproperties
{
RankID = -999
}
};
struct UIDRankRelation
{
var UniqueNetId UID;
var int RankID;
Structdefaultproperties
{
RankID = -999
}
};
struct YASSettingsAdmin
{
var string Rank;
var ColorRGBA TextColor;
var Fields ApplyColorToFields;
Structdefaultproperties
{
Rank = "Admin"
TextColor = (R=250, G=0, B=0, A=255)
ApplyColorToFields = (Rank=True, Player=True, Level=False, Perk=False, Dosh=False, Kills=False, Assists=False, Health=False, Ping=False)
}
};
struct YASSettingsPlayer
{
var string Rank;
var ColorRGBA TextColor;
var Fields ApplyColorToFields;
Structdefaultproperties
{
Rank = "Player"
TextColor = (R=250, G=250, B=250, A=255)
ApplyColorToFields = (Rank=True, Player=True, Level=False, Perk=False, Dosh=False, Kills=False, Assists=False, Health=False, Ping=False)
}
};
struct YASSettingsHealth
struct YAS_SettingsHealth
{
var int Low;
var int High;
@ -113,7 +38,7 @@ struct YASSettingsHealth
}
};
struct YASSettingsPing
struct YAS_SettingsPing
{
var int Low;
var int High;
@ -125,7 +50,7 @@ struct YASSettingsPing
}
};
struct YASSettingsLevel
struct YAS_SettingsLevel
{
var int Low [4];
var int High[4];
@ -143,7 +68,7 @@ struct YASSettingsLevel
}
};
struct YASStyle
struct YAS_Style
{
// Box shapes
var int EdgeSize;
@ -163,100 +88,100 @@ struct YASStyle
var int ShapeStatsBoxBottomPlayer;
// Server box
var ColorRGBA ServerNameBoxColor;
var ColorRGBA ServerNameTextColor;
var Color ServerNameBoxColor;
var Color ServerNameTextColor;
// Game info box
var ColorRGBA GameInfoBoxColor;
var ColorRGBA GameInfoTextColor;
var Color GameInfoBoxColor;
var Color GameInfoTextColor;
// Wave info box
var ColorRGBA WaveBoxColor;
var ColorRGBA WaveTextColor;
var Color WaveBoxColor;
var Color WaveTextColor;
// Player count box
var ColorRGBA PlayerCountBoxColor;
var ColorRGBA PlayerCountTextColor;
var Color PlayerCountBoxColor;
var Color PlayerCountTextColor;
// Header box
var ColorRGBA ListHeaderBoxColor;
var ColorRGBA ListHeaderTextColor;
var Color ListHeaderBoxColor;
var Color ListHeaderTextColor;
// State box
var ColorRGBA StateBoxColorLobby;
var ColorRGBA StateBoxColorReady;
var ColorRGBA StateBoxColorNotReady;
var ColorRGBA StateBoxColorSpectator;
var ColorRGBA StateBoxColorDead;
var ColorRGBA StateBoxColorNone;
var ColorRGBA StateBoxColorHealthLow;
var ColorRGBA StateBoxColorHealthMid;
var ColorRGBA StateBoxColorHealthHigh;
var Color StateBoxColorLobby;
var Color StateBoxColorReady;
var Color StateBoxColorNotReady;
var Color StateBoxColorSpectator;
var Color StateBoxColorDead;
var Color StateBoxColorNone;
var Color StateBoxColorHealthLow;
var Color StateBoxColorHealthMid;
var Color StateBoxColorHealthHigh;
// Player box
var ColorRGBA PlayerOwnerBoxColor;
var ColorRGBA PlayerBoxColor;
var Color PlayerOwnerBoxColor;
var Color PlayerBoxColor;
// Stats box
var ColorRGBA StatsOwnerBoxColor;
var ColorRGBA StatsBoxColor;
var Color StatsOwnerBoxColor;
var Color StatsBoxColor;
// State text
var ColorRGBA StateTextColorLobby;
var ColorRGBA StateTextColorReady;
var ColorRGBA StateTextColorNotReady;
var ColorRGBA StateTextColorSpectator;
var ColorRGBA StateTextColorDead;
var ColorRGBA StateTextColorNone;
var ColorRGBA StateTextColorHealthLow;
var ColorRGBA StateTextColorHealthMid;
var ColorRGBA StateTextColorHealthHigh;
var Color StateTextColorLobby;
var Color StateTextColorReady;
var Color StateTextColorNotReady;
var Color StateTextColorSpectator;
var Color StateTextColorDead;
var Color StateTextColorNone;
var Color StateTextColorHealthLow;
var Color StateTextColorHealthMid;
var Color StateTextColorHealthHigh;
// Rank text
var ColorRGBA RankTextColor;
var Color RankTextColor;
// Player text
var ColorRGBA PlayerNameTextColor;
var Color PlayerNameTextColor;
// Level text
var ColorRGBA LevelTextColorLow;
var ColorRGBA LevelTextColorMid;
var ColorRGBA LevelTextColorHigh;
var Color LevelTextColorLow;
var Color LevelTextColorMid;
var Color LevelTextColorHigh;
// Perk text
var ColorRGBA ZedTextColor;
var ColorRGBA PerkNoneTextColor;
var ColorRGBA PerkBerserkerTextColor;
var ColorRGBA PerkCommandoTextColor;
var ColorRGBA PerkSupportTextColor;
var ColorRGBA PerkFieldMedicTextColor;
var ColorRGBA PerkDemolitionistTextColor;
var ColorRGBA PerkFirebugTextColor;
var ColorRGBA PerkGunslingerTextColor;
var ColorRGBA PerkSharpshooterTextColor;
var ColorRGBA PerkSwatTextColor;
var ColorRGBA PerkSurvivalistTextColor;
var Color ZedTextColor;
var Color PerkNoneTextColor;
var Color PerkBerserkerTextColor;
var Color PerkCommandoTextColor;
var Color PerkSupportTextColor;
var Color PerkFieldMedicTextColor;
var Color PerkDemolitionistTextColor;
var Color PerkFirebugTextColor;
var Color PerkGunslingerTextColor;
var Color PerkSharpshooterTextColor;
var Color PerkSwatTextColor;
var Color PerkSurvivalistTextColor;
// Dosh text
var ColorRGBA DoshTextColorLow;
var ColorRGBA DoshTextColorMid;
var ColorRGBA DoshTextColorHigh;
var Color DoshTextColorLow;
var Color DoshTextColorMid;
var Color DoshTextColorHigh;
// Kills text
var ColorRGBA KillsTextColorLow;
var ColorRGBA KillsTextColorMid;
var ColorRGBA KillsTextColorHigh;
var Color KillsTextColorLow;
var Color KillsTextColorMid;
var Color KillsTextColorHigh;
// Assists text
var ColorRGBA AssistsTextColorLow;
var ColorRGBA AssistsTextColorMid;
var ColorRGBA AssistsTextColorHigh;
var Color AssistsTextColorLow;
var Color AssistsTextColorMid;
var Color AssistsTextColorHigh;
// Ping text
var ColorRGBA PingTextColorNone;
var ColorRGBA PingTextColorLow;
var ColorRGBA PingTextColorMid;
var ColorRGBA PingTextColorHigh;
var Color PingTextColorNone;
var Color PingTextColorLow;
var Color PingTextColorMid;
var Color PingTextColorHigh;
// Other settings
var bool ShowPingBars;
@ -386,23 +311,14 @@ struct YASStyle
// Other settings
ShowPingBars = true
HealthBoxSmoothColorChange = true
HealthTextSmoothColorChange = false
LevelTextSmoothColorChange = false
DoshTextSmoothColorChange = false
KillsTextSmoothColorChange = false
AssistsTextSmoothColorChange = false
PingTextSmoothColorChange = false
}
};
struct YASSettings
struct YAS_Settings
{
var YASStyle Style;
var YASSettingsAdmin Admin;
var YASSettingsPlayer Player;
var YASSettingsPing Ping;
var YASSettingsLevel Level;
var YASSettingsHealth Health;
var YAS_Style Style;
var YAS_SettingsPing Ping;
var YAS_SettingsLevel Level;
var YAS_SettingsHealth Health;
};

20
YAS/Classes/_Logger.uc Normal file
View File

@ -0,0 +1,20 @@
class _Logger extends Object
abstract;
enum E_LogLevel
{
LL_WrongLevel,
LL_None,
LL_Fatal,
LL_Error,
LL_Warning,
LL_Info,
LL_Debug,
LL_Trace,
LL_All
};
defaultproperties
{
}

50
YAS/Constants.uci Normal file
View File

@ -0,0 +1,50 @@
// Constants
`define NO_CONFIG 0
// Scoreboard
`define BOX_INNERBORDER 0
`define BOX_INNERBORDER_TRANSPARENT 1
`define BOX_MEDIUM 2
`define BOX_MEDIUM_SLIGHTTRANSPARENT 3
`define BOX_MEDIUM_TRANSPARENT 4
`define BOX_LARGE 5
`define BOX_LARGE_SLIGHTTRANSPARENT 6
`define BOX_LARGE_TRANSPARENT 7
`define BOX_SMALL 8
`define BOX_SMALL_SLIGHTTRANSPARENT 9
`define BOX_SMALL_TRANSPARENT 10
`define BOX_CORNER_8 11
`define BOX_CORNER_16 12
`define BOX_CORNER_32 13
`define BOX_CORNER_64 14
`define BOX_CORNER_512 15
`define ITEMBOX_NORMAL 0
`define ITEMBOX_DISABLED 1
`define ITEMBOX_HIGHLIGHTED 2
`define CHECKMARK_NORMAL 0
`define CHECKMARK_DISABLED 1
`define CHECKMARK_HIGHLIGHTED 2
`define ARROW_DOWN 0
`define ARROW_LEFT 1
`define ARROW_RIGHT 2
`define ARROW_UP 3
`define BUTTON_NORMAL 0
`define BUTTON_DISABLED 1
`define BUTTON_HIGHLIGHTED 2
`define BUTTON_PRESSED 3
`define TAB_TOP 0
`define TAB_BOTTOM 1
`define PEN_WHITE 0
`define PEN_BLACK 1
`define PEN_GRAY 2
`define CURSOR_DEFAULT 0
`define CURSOR_SELECTION 1
`define CURSOR_RESIZEVERT 2
`define CURSOR_RESIZEHORZ 3

View File

@ -1,46 +1,3 @@
`define BOX_INNERBORDER 0
`define BOX_INNERBORDER_TRANSPARENT 1
`define BOX_MEDIUM 2
`define BOX_MEDIUM_SLIGHTTRANSPARENT 3
`define BOX_MEDIUM_TRANSPARENT 4
`define BOX_LARGE 5
`define BOX_LARGE_SLIGHTTRANSPARENT 6
`define BOX_LARGE_TRANSPARENT 7
`define BOX_SMALL 8
`define BOX_SMALL_SLIGHTTRANSPARENT 9
`define BOX_SMALL_TRANSPARENT 10
`define BOX_CORNER_8 11
`define BOX_CORNER_16 12
`define BOX_CORNER_32 13
`define BOX_CORNER_64 14
`define BOX_CORNER_512 15
`define ITEMBOX_NORMAL 0
`define ITEMBOX_DISABLED 1
`define ITEMBOX_HIGHLIGHTED 2
`define CHECKMARK_NORMAL 0
`define CHECKMARK_DISABLED 1
`define CHECKMARK_HIGHLIGHTED 2
`define ARROW_DOWN 0
`define ARROW_LEFT 1
`define ARROW_RIGHT 2
`define ARROW_UP 3
`define BUTTON_NORMAL 0
`define BUTTON_DISABLED 1
`define BUTTON_HIGHLIGHTED 2
`define BUTTON_PRESSED 3
`define TAB_TOP 0
`define TAB_BOTTOM 1
`define PEN_WHITE 0
`define PEN_BLACK 1
`define PEN_GRAY 2
`define CURSOR_DEFAULT 0
`define CURSOR_SELECTION 1
`define CURSOR_RESIZEVERT 2
`define CURSOR_RESIZEHORZ 3
// Imports
`include(Logger.uci)
`include(Constants.uci)

View File

@ -1,9 +1,15 @@
`define scelog(text, cond) `log(`text, `cond, 'YetAnotherScoreboard')
`define info(text) `scelog("[INFO]"@`text, true)
`define warning(text) `scelog("[WARNING]"@`text, true)
`define error(text) `scelog("[ERROR]"@`text, true)
`define debug(text) if (`bEnableDebug) { `scelog("[DEBUG]"@`text, `bEnableDebug); }
`define callstack() if (`bEnableCallstack) { `scelog("[CALLSTACK]"@`Location, `bEnableCallstack); }
`define callstack_static(text) if (`bEnableCallstack) { `scelog("[CALLSTACK]"@`text, `bEnableCallstack); }
// Logger
`define Log_Tag 'YAS'
`define LocationStatic "`{ClassName}::" $ GetFuncName()
`define Log_Base(msg, cond) `log(`msg `if(`cond), `cond`{endif}, `Log_Tag)
`define Log_Fatal(msg) `log("FATAL:" @ `msg, (LogLevel >= LL_Fatal), `Log_Tag)
`define Log_Error(msg) `log("ERROR:" @ `msg, (LogLevel >= LL_Error), `Log_Tag)
`define Log_Warn(msg) `log("WARN:" @ `msg, (LogLevel >= LL_Warning), `Log_Tag)
`define Log_Info(msg) `log("INFO:" @ `msg, (LogLevel >= LL_Info), `Log_Tag)
`define Log_Debug(msg) `log("DEBUG:" @ `msg, (LogLevel >= LL_Debug), `Log_Tag)
`define Log_Trace(msg) `log("TRACE:" @ `Location `if(`msg) @ `msg`{endif}, (LogLevel >= LL_Trace), `Log_Tag)
`define Log_TraceStatic(msg) `log("TRACE:" @ `LocationStatic `if(`msg) @ `msg`{endif}, (LogLevel >= LL_Trace), `Log_Tag)