wip
This commit is contained in:
parent
cf6b9cf6c8
commit
40d8ce4f71
@ -1354,6 +1354,14 @@ final function DrawArrowBox(int Direction, float X, float Y, float Width, float
|
||||
DrawTileStretched(DirectionMat, X,Y, Width, Height);
|
||||
}
|
||||
|
||||
function DrawTexture(Texture2D Tex, float X, float Y, float W, float H, Color TexColor)
|
||||
{
|
||||
Canvas.SetPos(X, Y);
|
||||
|
||||
Canvas.SetDrawColorStruct(TexColor);
|
||||
Canvas.DrawTile(Tex, W, H, 0, 0, Tex.SizeX, Tex.SizeY);
|
||||
}
|
||||
|
||||
final function DrawTileStretched(Texture Tex, float X, float Y, float XS, float YS)
|
||||
{
|
||||
local float mW, mH, MidX, MidY, SmallTileW, SmallTileH, fX, fY;
|
||||
|
@ -6,13 +6,14 @@ const LatestVersion = 1;
|
||||
const CfgRanks = class'Ranks';
|
||||
const CfgRankRelations = class'RankRelations';
|
||||
|
||||
const UpdateInterval = 1.0f;
|
||||
|
||||
const MatchUID = "0x";
|
||||
const MatchPlayerSteamID64 = "76561";
|
||||
const MatchGroupSteamID64 = "10358279";
|
||||
|
||||
var private config int Version;
|
||||
var private config E_LogLevel LogLevel;
|
||||
var private config int UpdateInterval;
|
||||
|
||||
var private KFGameInfo KFGI;
|
||||
var private KFGameInfo_Survival KFGIS;
|
||||
@ -22,7 +23,7 @@ var private KFOnlineGameSettings KFOGS;
|
||||
|
||||
var private OnlineSubsystemSteamworks OSS;
|
||||
|
||||
var private Array<YAS_OwnerRepInfo> RepInfos;
|
||||
var private Array<YAS_RepInfo> RepInfos;
|
||||
|
||||
var private Array<CachedRankRelation> PlayerRelations;
|
||||
var private Array<CachedRankRelation> GroupRelations;
|
||||
@ -68,7 +69,6 @@ private function PreInit()
|
||||
if (Version == `NO_CONFIG)
|
||||
{
|
||||
LogLevel = LL_Info;
|
||||
UpdateInterval = 1;
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
@ -123,73 +123,19 @@ private function PreInit()
|
||||
private function InitRanks() // TODO: Ref
|
||||
{
|
||||
local Array<RankRelation> Relations;
|
||||
local Array<Rank> Ranks;
|
||||
local RankRelation Relation;
|
||||
local Rank Rank;
|
||||
local CachedRankRelation CachedRankRelation;
|
||||
|
||||
Ranks = CfgRanks.default.Ranks;
|
||||
Relations = CfgRankRelations.default.Relations;
|
||||
|
||||
foreach Relations(Relation)
|
||||
{
|
||||
if (IsUID(Relation.ObjectID) || IsPlayerSteamID64(Relation.ObjectID))
|
||||
{
|
||||
if (AnyToUID(Relation.ObjectID, CachedRankRelation.UID))
|
||||
{
|
||||
CachedRankRelation.RawID = Relation.ObjectID;
|
||||
|
||||
foreach Ranks(Rank)
|
||||
{
|
||||
if (Rank.RankID == Relation.RankID)
|
||||
{
|
||||
CachedRankRelation.Rank = Rank;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CachedRankRelation.Rank.RankID > 0)
|
||||
{
|
||||
PlayerRelations.AddItem(CachedRankRelation);
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Rank with ID" @ Relation.RankID @ "not found");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Can't convert to UniqueNetID:" @ Relation.ObjectID);
|
||||
}
|
||||
AddRelation(Relation, PlayerRelations);
|
||||
}
|
||||
else if (IsGroupSteamID64(Relation.ObjectID))
|
||||
{
|
||||
if (AnyToUID(Relation.ObjectID, CachedRankRelation.UID))
|
||||
{
|
||||
CachedRankRelation.RawID = Relation.ObjectID;
|
||||
|
||||
foreach Ranks(Rank)
|
||||
{
|
||||
if (Rank.RankID == Relation.RankID)
|
||||
{
|
||||
CachedRankRelation.Rank = Rank;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CachedRankRelation.Rank.RankID > 0)
|
||||
{
|
||||
GroupRelations.AddItem(CachedRankRelation);
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Rank with ID" @ Relation.RankID @ "not found");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Can't convert to UniqueNetID:" @ Relation.ObjectID);
|
||||
}
|
||||
AddRelation(Relation, GroupRelations);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -198,6 +144,41 @@ private function InitRanks() // TODO: Ref
|
||||
}
|
||||
}
|
||||
|
||||
private function AddRelation(RankRelation Relation, out Array<CachedRankRelation> OutArray)
|
||||
{
|
||||
local CachedRankRelation CachedRankRelation;
|
||||
local Array<Rank> Ranks;
|
||||
local Rank Rank;
|
||||
|
||||
if (AnyToUID(Relation.ObjectID, CachedRankRelation.UID))
|
||||
{
|
||||
CachedRankRelation.RawID = Relation.ObjectID;
|
||||
|
||||
Ranks = CfgRanks.default.Ranks;
|
||||
foreach Ranks(Rank)
|
||||
{
|
||||
if (Rank.RankID == Relation.RankID)
|
||||
{
|
||||
CachedRankRelation.Rank = Rank;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CachedRankRelation.Rank.RankID > 0)
|
||||
{
|
||||
OutArray.AddItem(CachedRankRelation);
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Rank with ID" @ Relation.RankID @ "not found");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Warn("Can't convert to UniqueNetID:" @ Relation.ObjectID);
|
||||
}
|
||||
}
|
||||
|
||||
private static function bool IsUID(String ID)
|
||||
{
|
||||
return (Left(ID, Len(MatchUID)) ~= MatchUID);
|
||||
@ -277,12 +258,20 @@ private function PostInit()
|
||||
|
||||
private function UpdateTimer()
|
||||
{
|
||||
// TODO: Server params monitor
|
||||
local YAS_RepInfo RepInfo;
|
||||
|
||||
foreach RepInfos(RepInfo)
|
||||
{
|
||||
RepInfo.DynamicServerName = KFOGS.OwningPlayerName;
|
||||
RepInfo.UsesStats = KFOGS.bUsesStats;
|
||||
RepInfo.Custom = KFOGS.bCustom;
|
||||
RepInfo.PasswordRequired = KFOGS.bRequiresPassword;
|
||||
}
|
||||
}
|
||||
|
||||
public function NotifyLogin(Controller C)
|
||||
{
|
||||
local YAS_OwnerRepInfo RepInfo;
|
||||
local YAS_RepInfo RepInfo;
|
||||
|
||||
`Log_Trace();
|
||||
|
||||
@ -298,7 +287,7 @@ public function NotifyLogin(Controller C)
|
||||
|
||||
public function NotifyLogout(Controller C)
|
||||
{
|
||||
local YAS_OwnerRepInfo RepInfo;
|
||||
local YAS_RepInfo RepInfo;
|
||||
|
||||
`Log_Trace();
|
||||
|
||||
@ -310,14 +299,14 @@ public function NotifyLogout(Controller C)
|
||||
}
|
||||
}
|
||||
|
||||
public function YAS_OwnerRepInfo CreateRepInfo(Controller C)
|
||||
public function YAS_RepInfo CreateRepInfo(Controller C)
|
||||
{
|
||||
local YAS_OwnerRepInfo OwnerRepInfo;
|
||||
local YAS_RepInfo OwnerRepInfo;
|
||||
local YAS_RankRepInfo RankRepInfo;
|
||||
|
||||
`Log_Trace();
|
||||
|
||||
OwnerRepInfo = Spawn(class'YAS_OwnerRepInfo', C);
|
||||
OwnerRepInfo = Spawn(class'YAS_RepInfo', C);
|
||||
RankRepInfo = Spawn(class'YAS_RankRepInfo', C);
|
||||
|
||||
if (OwnerRepInfo != None && RankRepInfo != None)
|
||||
@ -334,9 +323,9 @@ public function YAS_OwnerRepInfo CreateRepInfo(Controller C)
|
||||
return OwnerRepInfo;
|
||||
}
|
||||
|
||||
private function YAS_OwnerRepInfo FindRepInfo(Controller C)
|
||||
private function YAS_RepInfo FindRepInfo(Controller C)
|
||||
{
|
||||
local YAS_OwnerRepInfo RepInfo;
|
||||
local YAS_RepInfo RepInfo;
|
||||
|
||||
if (C == None) return None;
|
||||
|
||||
@ -351,7 +340,7 @@ private function YAS_OwnerRepInfo FindRepInfo(Controller C)
|
||||
return None;
|
||||
}
|
||||
|
||||
public function bool DestroyRepInfo(YAS_OwnerRepInfo RepInfo)
|
||||
public function bool DestroyRepInfo(YAS_RepInfo RepInfo)
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
@ -364,7 +353,7 @@ public function bool DestroyRepInfo(YAS_OwnerRepInfo RepInfo)
|
||||
return true;
|
||||
}
|
||||
|
||||
private function InitRank(YAS_OwnerRepInfo RepInfo)
|
||||
private function InitRank(YAS_RepInfo RepInfo)
|
||||
{
|
||||
local CachedRankRelation Rel;
|
||||
local String JoinedGroupIDs;
|
||||
|
@ -1,4 +1,4 @@
|
||||
class YAS_OwnerRepInfo extends ReplicationInfo;
|
||||
class YAS_RepInfo extends ReplicationInfo;
|
||||
|
||||
var public YAS YAS;
|
||||
|
||||
@ -39,6 +39,8 @@ public simulated event ReplicatedEvent(name VarName)
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
`Log_Base("ReplicatedEvent:" @ VarName);
|
||||
|
||||
switch (VarName)
|
||||
{
|
||||
case 'LogLevel':
|
@ -4,6 +4,18 @@ class YAS_ScoreBoard extends KFGUI_Page
|
||||
const HeaderWidthRatio = 0.30f;
|
||||
const PlayerListWidthRatio = 0.6f;
|
||||
|
||||
/*
|
||||
const IconRanked = Texture2D'YAS.IconRanked';
|
||||
const IconCustom = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I26';
|
||||
const IconUnranked = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I28';
|
||||
const IconPassword = Texture2D'UI_Menus.ServerBrowserMenu_SWF_I20';
|
||||
const IconDosh = Texture2D'UI_HUD.InGameHUD_SWF_I13A';
|
||||
const IconPlayer = Texture2D'UI_HUD.InGameHUD_ZED_SWF_I1F5';
|
||||
const IconClock = Texture2D'UI_HUD.InGameHUD_SWF_I17D';
|
||||
const IconSkull = Texture2D'UI_Shared.AssetLib_I32';
|
||||
const IconHealth = Texture2D'UI_VoiceComms_TEX.UI_VoiceCommand_Icon_Heal';
|
||||
*/
|
||||
|
||||
var public E_LogLevel LogLevel;
|
||||
|
||||
var transient float HealthXPos, RankXPos, PlayerXPos, LevelXPos, PerkXPos, DoshXPos, KillsXPos, AssistXPos, PingXPos, ScrollXPos;
|
||||
@ -23,8 +35,7 @@ var KFPlayerController OwnerPC;
|
||||
var Color PingColor;
|
||||
var float PingBars;
|
||||
|
||||
var localized String Players;
|
||||
var localized String Spectators;
|
||||
var localized String Players, Spectators;
|
||||
|
||||
// Cache
|
||||
var public Array<YAS_RankRepInfo> RepInfos;
|
||||
@ -274,22 +285,36 @@ function DrawMenu()
|
||||
|
||||
Canvas.SetDrawColorStruct(Settings.Style.ServerNameTextColor);
|
||||
S = (DynamicServerName == "" ? KFGRI.ServerName : DynamicServerName);
|
||||
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, FontScalar);
|
||||
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, BoxH, FontScalar);
|
||||
|
||||
// icons
|
||||
/*
|
||||
IconIndent = BoxH * 0.1;
|
||||
if (PasswordRequired)
|
||||
{
|
||||
Owner.CurrentStyle.DrawTexture(IconPassword,
|
||||
BoxX + IconIndent,
|
||||
YPos + IconIndent,
|
||||
BoxH - IconIndent*2,
|
||||
BoxH - IconIndent*2,
|
||||
MakeColor(250,250,250,250));
|
||||
}
|
||||
*/
|
||||
|
||||
YPos += BoxH;
|
||||
|
||||
// Mid Left Rect (Info)
|
||||
BoxW = Width * 0.7; // TODO ?
|
||||
BoxW = Width * 0.7;
|
||||
BoxH = YL * 2 + BorderSize * 2;
|
||||
Canvas.SetDrawColorStruct(Settings.Style.GameInfoBoxColor);
|
||||
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeGameInfoBox);
|
||||
|
||||
Canvas.SetDrawColorStruct(Settings.Style.GameInfoTextColor);
|
||||
S = class'KFCommon_LocalizedStrings'.static.GetFriendlyMapName(PC.WorldInfo.GetMapName(true));
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, BoxH/2, FontScalar);
|
||||
|
||||
S = KFGRI.GameClass.default.GameName $ " - " $ class'KFCommon_LocalizedStrings'.Static.GetDifficultyString(KFGRI.GameDifficulty);
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos + YL, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos + BoxH/2, BoxH/2, FontScalar);
|
||||
|
||||
// Mid Right Rect (Wave)
|
||||
BoxX = BoxX + BoxW;
|
||||
@ -299,8 +324,8 @@ function DrawMenu()
|
||||
|
||||
Canvas.SetDrawColorStruct(Settings.Style.WaveTextColor);
|
||||
S = class'KFGFxHUD_ScoreboardMapInfoContainer'.default.WaveString;
|
||||
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, FontScalar);
|
||||
DrawTextShadowHVCenter(WaveText(), BoxX, YPos + YL, BoxW, FontScalar);
|
||||
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, BoxH / 2, FontScalar);
|
||||
DrawTextShadowHVCenter(WaveText(), BoxX, YPos + BoxH / 2, BoxW, BoxH / 2, FontScalar);
|
||||
|
||||
YPos += BoxH;
|
||||
|
||||
@ -311,13 +336,22 @@ function DrawMenu()
|
||||
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountBoxColor);
|
||||
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapePlayersCountBox);
|
||||
|
||||
/*
|
||||
Owner.CurrentStyle.DrawTexture(IconPlayer,
|
||||
BoxX + Settings.Style.EdgeSize + IconIndent,
|
||||
YPos + IconIndent,
|
||||
BoxH - IconIndent*2,
|
||||
BoxH - IconIndent*2,
|
||||
MakeColor(250,250,250,250));
|
||||
*/
|
||||
|
||||
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountTextColor);
|
||||
S = Players $ ":" @ NumPlayer @ "/" @ KFGRI.MaxHumanCount $ " " $ Spectators $ ":" @ NumSpec;
|
||||
S = Players $ ":" @ NumPlayer @ "/" @ KFGRI.MaxHumanCount $ " " $ Spectators $ ": " $ NumSpec; ;
|
||||
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, BoxX + Settings.Style.EdgeSize, YPos, BoxH, FontScalar);
|
||||
|
||||
S = Owner.CurrentStyle.GetTimeString(KFGRI.ElapsedTime);
|
||||
DrawTextShadowHVCenter(S, XPos + Width * 0.7, YPos, Width * 0.3, FontScalar); // TODO: ?
|
||||
DrawTextShadowHVCenter(S, XPos + Width * 0.7, YPos, Width * 0.3, BoxH, FontScalar); // TODO: ?
|
||||
|
||||
YPos += BoxH;
|
||||
|
||||
@ -376,12 +410,12 @@ function DrawMenu()
|
||||
|
||||
// Header texts
|
||||
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);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.AssistsString, XPos + AssistXPos, YPos, AssistWBox, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.DoshString, XPos + DoshXPos, YPos, DoshWBox, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PingString, XPos + PingXPos, YPos, PingWBox, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PlayerString, XPos + PlayerXPos, YPos, BoxH, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(class'KFGFxMenu_Inventory'.default.PerkFilterString, XPos + PerkXPos, YPos, BoxH, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.KillsString, XPos + KillsXPos, YPos, KillsWBox, BoxH, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.AssistsString, XPos + AssistXPos, YPos, AssistWBox, BoxH, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.DoshString, XPos + DoshXPos, YPos, DoshWBox, BoxH, FontScalar);
|
||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PingString, XPos + PingXPos, YPos, PingWBox, BoxH, FontScalar);
|
||||
|
||||
ColorTMP = Settings.Style.ListHeaderTextColor;
|
||||
ColorTMP.A = 150;
|
||||
@ -416,35 +450,10 @@ function DrawHealthIcon(float X, float Y, float W, float H)
|
||||
Owner.CurrentStyle.DrawRectBox(XPos, YPos, Part, Part, 4, 100);
|
||||
}
|
||||
|
||||
function DrawTextShadowHVCenter(string Str, float XPos, float YPos, float BoxWidth, float FontScalar)
|
||||
{
|
||||
local float TextWidth;
|
||||
local float TextHeight;
|
||||
|
||||
Canvas.TextSize(Str, TextWidth, TextHeight, FontScalar, FontScalar);
|
||||
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos + (BoxWidth - TextWidth)/2 , YPos, 1, FontScalar);
|
||||
}
|
||||
|
||||
function DrawTextShadowHLeftVCenter(string Str, float XPos, float YPos, float FontScalar)
|
||||
{
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos, YPos, 1, FontScalar);
|
||||
}
|
||||
|
||||
function DrawTextShadowHRightVCenter(string Str, float XPos, float YPos, float BoxWidth, float FontScalar)
|
||||
{
|
||||
local float TextWidth;
|
||||
local float TextHeight;
|
||||
|
||||
Canvas.TextSize(Str, TextWidth, TextHeight, FontScalar, FontScalar);
|
||||
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos + BoxWidth - TextWidth, YPos, 1, FontScalar);
|
||||
}
|
||||
|
||||
function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float Width, bool bFocus)
|
||||
{
|
||||
local string S, StrValue;
|
||||
local float FontScalar, TextYOffset, XL, YL, PerkIconPosX, PerkIconPosY, PerkIconSize, PrestigeIconScale;
|
||||
local float FontScalar, XL, YL, PerkIconPosX, PerkIconPosY, PerkIconSize, PrestigeIconScale;
|
||||
local float XPos, BoxWidth, RealPlayerWBox;
|
||||
local KFPlayerReplicationInfo KFPRI;
|
||||
local byte Level, PrestigeLevel;
|
||||
@ -456,7 +465,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
|
||||
local int Shape, ShapeHealth;
|
||||
|
||||
local Color HealthBoxColor, HealthTextColor;
|
||||
local Color HealthBoxColor;
|
||||
|
||||
BorderSize = Owner.HUDOwner.ScaledBorderSize;
|
||||
|
||||
@ -475,7 +484,6 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
C.Font = Owner.CurrentStyle.PickFont(FontScalar);
|
||||
|
||||
Canvas.TextSize("ABC", XL, YL, FontScalar, FontScalar);
|
||||
TextYOffset = YOffset + (Height * 0.5f) - (YL * 0.5f);
|
||||
|
||||
if (KFPRIArray.Length > 1 && Index == 0)
|
||||
{
|
||||
@ -493,56 +501,22 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
if (!KFPRI.bReadyToPlay && KFGRI.bMatchHasBegun)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||
HealthTextColor = Settings.Style.StateTextColorLobby;
|
||||
}
|
||||
else if (!KFGRI.bMatchHasBegun)
|
||||
{
|
||||
if (KFPRI.bReadyToPlay)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorReady;
|
||||
HealthTextColor = Settings.Style.StateBoxColorReady;
|
||||
}
|
||||
else
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorNotReady;
|
||||
HealthTextColor = Settings.Style.StateBoxColorNotReady;
|
||||
}
|
||||
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||
}
|
||||
else if (bIsZED && KFTeamInfo_Zeds(GetPlayer().PlayerReplicationInfo.Team) == None)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateTextColorNone;
|
||||
HealthTextColor = Settings.Style.StateTextColorNone;
|
||||
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||
}
|
||||
else if (KFPRI.PlayerHealth <= 0 || KFPRI.PlayerHealthPercent <= 0)
|
||||
{
|
||||
if (KFPRI.bOnlySpectator)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateTextColorSpectator;
|
||||
HealthTextColor = Settings.Style.StateTextColorSpectator;
|
||||
}
|
||||
else
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateTextColorDead;
|
||||
HealthTextColor = Settings.Style.StateTextColorDead;
|
||||
}
|
||||
HealthBoxColor = Settings.Style.StateBoxColorDead;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ByteToFloat(KFPRI.PlayerHealthPercent) >= float(Settings.Health.High) / 100.0)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorHealthHigh;
|
||||
HealthTextColor = Settings.Style.StateTextColorHealthHigh;
|
||||
}
|
||||
else if (ByteToFloat(KFPRI.PlayerHealthPercent) >= float(Settings.Health.Low) / 100.0)
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorHealthMid;
|
||||
HealthTextColor = Settings.Style.StateTextColorHealthMid;
|
||||
}
|
||||
else
|
||||
{
|
||||
HealthBoxColor = Settings.Style.StateBoxColorHealthLow;
|
||||
HealthTextColor = Settings.Style.StateTextColorHealthLow;
|
||||
}
|
||||
HealthBoxColor = HealthColorByPercent(ByteToFloat(KFPRI.PlayerHealthPercent));
|
||||
}
|
||||
|
||||
// Health box
|
||||
@ -554,11 +528,11 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
Settings.Style.EdgeSize,
|
||||
ShapeHealth);
|
||||
|
||||
C.SetDrawColorStruct(HealthTextColor);
|
||||
C.SetDrawColorStruct(Settings.Style.StateTextColorHealthHigh);
|
||||
|
||||
if (KFPRI.PlayerHealth > 0)
|
||||
{
|
||||
DrawTextShadowHVCenter(String(KFPRI.PlayerHealth), HealthXPos, TextYOffset, HealthWBox, FontScalar);
|
||||
DrawTextShadowHVCenter(String(KFPRI.PlayerHealth), HealthXPos, YOffset, HealthWBox, Height, FontScalar);
|
||||
}
|
||||
|
||||
XPos += HealthWBox;
|
||||
@ -607,7 +581,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
C.DrawRect (Height-5, Height-5, Texture2D'UI_Widgets.MenuBarWidget_SWF_IF');
|
||||
|
||||
S = class'KFCommon_LocalizedStrings'.default.ZedString;
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos + Height, TextYOffset, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos + Height, YOffset, Height, FontScalar);
|
||||
RealPlayerWBox = PerkXPos + Height - PlayerXPos;
|
||||
}
|
||||
else
|
||||
@ -648,17 +622,17 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
C.SetDrawColorStruct(Settings.Style.LevelTextColorHigh);
|
||||
|
||||
S = String(Level);
|
||||
DrawTextShadowHLeftVCenter(S, LevelXPos, TextYOffset, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, LevelXPos, YOffset, Height, FontScalar);
|
||||
|
||||
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
||||
S = KFPRI.CurrentPerkClass.default.PerkName;
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos, YOffset, Height, FontScalar);
|
||||
}
|
||||
else
|
||||
{
|
||||
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
||||
S = "";
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, PerkXPos, YOffset, Height, FontScalar);
|
||||
RealPlayerWBox = PerkXPos - PlayerXPos;
|
||||
}
|
||||
}
|
||||
@ -667,7 +641,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
if (Rank.RankName != "")
|
||||
{
|
||||
C.SetDrawColorStruct(Rank.RankColor);
|
||||
DrawTextShadowHRightVCenter(Rank.RankName, PlayerXPos, TextYOffset, PerkIconPosX - PlayerXPos - (BorderSize * 4), FontScalar);
|
||||
DrawTextShadowHRightVCenter(Rank.RankName, PlayerXPos, YOffset, PerkIconPosX - PlayerXPos - (BorderSize * 4), Height, FontScalar);
|
||||
}
|
||||
|
||||
// Avatar
|
||||
@ -693,15 +667,15 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
S = Left(S, Len(S)-1);
|
||||
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
|
||||
}
|
||||
DrawTextShadowHLeftVCenter(S, PlayerXPos, TextYOffset, FontScalar);
|
||||
DrawTextShadowHLeftVCenter(S, PlayerXPos, YOffset, Height, FontScalar);
|
||||
|
||||
// Kill
|
||||
C.SetDrawColorStruct(Settings.Style.KillsTextColorMid); // TODO
|
||||
DrawTextShadowHVCenter(string (KFPRI.Kills), KillsXPos, TextYOffset, KillsWBox, FontScalar);
|
||||
C.SetDrawColorStruct(Settings.Style.KillsTextColorMid);
|
||||
DrawTextShadowHVCenter(string (KFPRI.Kills), KillsXPos, YOffset, KillsWBox, Height, FontScalar);
|
||||
|
||||
// Assist
|
||||
C.SetDrawColorStruct(Settings.Style.AssistsTextColorMid); // TODO
|
||||
DrawTextShadowHVCenter(string (KFPRI.Assists), AssistXPos, TextYOffset, AssistWBox, FontScalar);
|
||||
C.SetDrawColorStruct(Settings.Style.AssistsTextColorMid);
|
||||
DrawTextShadowHVCenter(string (KFPRI.Assists), AssistXPos, YOffset, AssistWBox, Height, FontScalar);
|
||||
|
||||
// Dosh
|
||||
if (bIsZED)
|
||||
@ -711,10 +685,10 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
}
|
||||
else
|
||||
{
|
||||
C.SetDrawColorStruct(Settings.Style.DoshTextColorMid); // TODO
|
||||
C.SetDrawColorStruct(Settings.Style.DoshTextColorMid);
|
||||
StrValue = GetNiceSize(int(KFPRI.Score));
|
||||
}
|
||||
DrawTextShadowHVCenter(StrValue, DoshXPos, TextYOffset, DoshWBox, FontScalar);
|
||||
DrawTextShadowHVCenter(StrValue, DoshXPos, YOffset, DoshWBox, Height, FontScalar);
|
||||
|
||||
// Ping
|
||||
if (KFPRI.bBot)
|
||||
@ -737,7 +711,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
||||
}
|
||||
|
||||
C.TextSize(S, XL, YL, FontScalar, FontScalar);
|
||||
DrawTextShadowHVCenter(S, PingXPos, TextYOffset, Settings.Style.ShowPingBars ? PingWBox/2 : PingWBox, FontScalar);
|
||||
DrawTextShadowHVCenter(S, PingXPos, YOffset, Settings.Style.ShowPingBars ? PingWBox/2 : PingWBox, Height, FontScalar);
|
||||
C.SetDrawColor(250, 250, 250, 255);
|
||||
if (Settings.Style.ShowPingBars)
|
||||
DrawPingBars(C, YOffset + (Height/2) - ((Height*0.5)/2), Width - (Height*0.5) - (BorderSize*2), Height*0.5, Height*0.5, float(Ping));
|
||||
@ -801,6 +775,84 @@ function ScrollMouseWheel(bool bUp)
|
||||
PlayersList.ScrollMouseWheel(bUp);
|
||||
}
|
||||
|
||||
function Color HealthColorByPercent(float FloatPercent)
|
||||
{
|
||||
local Color CRED, CYLW, CGRN, RV;
|
||||
|
||||
CRED = MakeColor(200, 0, 0, 150);
|
||||
CYLW = MakeColor(200, 200, 0, 150);
|
||||
CGRN = MakeColor(0, 200, 0, 150);
|
||||
|
||||
if (FloatPercent >= 0.9f)
|
||||
{
|
||||
RV = CGRN;
|
||||
}
|
||||
else if (FloatPercent >= 0.5f)
|
||||
{
|
||||
RV = PickDynamicColor(CYLW, CGRN, (FloatPercent - 0.5f) / (0.9f - 0.5f));
|
||||
}
|
||||
else if (FloatPercent >= 0.1f)
|
||||
{
|
||||
RV = PickDynamicColor(CRED, CYLW, (FloatPercent - 0.1f) / (0.5f - 0.1f));
|
||||
}
|
||||
else
|
||||
{
|
||||
RV = CRED;
|
||||
}
|
||||
|
||||
return RV;
|
||||
}
|
||||
|
||||
function Color PickDynamicColor(Color LowerColor, Color UpperColor, float FloatPercent)
|
||||
{
|
||||
return MakeColor((
|
||||
LowerColor.R < UpperColor.R ?
|
||||
LowerColor.R + ((UpperColor.R - LowerColor.R) * FloatPercent) :
|
||||
LowerColor.R - ((LowerColor.R - UpperColor.R) * FloatPercent)),
|
||||
(
|
||||
LowerColor.G < UpperColor.G ?
|
||||
LowerColor.G + ((UpperColor.G - LowerColor.G) * FloatPercent) :
|
||||
LowerColor.G - ((LowerColor.G - UpperColor.G) * FloatPercent)),
|
||||
(
|
||||
LowerColor.B < UpperColor.B ?
|
||||
LowerColor.B + ((UpperColor.B - LowerColor.B) * FloatPercent) :
|
||||
LowerColor.B - ((LowerColor.B - UpperColor.B) * FloatPercent)),
|
||||
(
|
||||
LowerColor.A < UpperColor.A ?
|
||||
LowerColor.A + ((UpperColor.A - LowerColor.A) * FloatPercent) :
|
||||
LowerColor.A - ((LowerColor.A - UpperColor.A) * FloatPercent)));
|
||||
}
|
||||
|
||||
function DrawTextShadowHVCenter(string Str, float XPos, float YPos, float BoxWidth, float BoxHeight, float FontScalar)
|
||||
{
|
||||
local float TextWidth;
|
||||
local float TextHeight;
|
||||
|
||||
Canvas.TextSize(Str, TextWidth, TextHeight, FontScalar, FontScalar);
|
||||
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos + (BoxWidth - TextWidth)/2 , YPos + (BoxHeight - TextHeight)/2, 1, FontScalar);
|
||||
}
|
||||
|
||||
function DrawTextShadowHLeftVCenter(string Str, float XPos, float YPos, float BoxHeight, float FontScalar)
|
||||
{
|
||||
local float TextWidth;
|
||||
local float TextHeight;
|
||||
|
||||
Canvas.TextSize(Str, TextWidth, TextHeight, FontScalar, FontScalar);
|
||||
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos, YPos + (BoxHeight - TextHeight)/2, 1, FontScalar);
|
||||
}
|
||||
|
||||
function DrawTextShadowHRightVCenter(string Str, float XPos, float YPos, float BoxWidth, float BoxHeight, float FontScalar)
|
||||
{
|
||||
local float TextWidth;
|
||||
local float TextHeight;
|
||||
|
||||
Canvas.TextSize(Str, TextWidth, TextHeight, FontScalar, FontScalar);
|
||||
|
||||
Owner.CurrentStyle.DrawTextShadow(Str, XPos + BoxWidth - TextWidth, YPos + (BoxHeight - TextHeight)/2, 1, FontScalar);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bEnableInputs=true
|
||||
|
Loading…
Reference in New Issue
Block a user