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);
|
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)
|
final function DrawTileStretched(Texture Tex, float X, float Y, float XS, float YS)
|
||||||
{
|
{
|
||||||
local float mW, mH, MidX, MidY, SmallTileW, SmallTileH, fX, fY;
|
local float mW, mH, MidX, MidY, SmallTileW, SmallTileH, fX, fY;
|
||||||
|
@ -6,13 +6,14 @@ const LatestVersion = 1;
|
|||||||
const CfgRanks = class'Ranks';
|
const CfgRanks = class'Ranks';
|
||||||
const CfgRankRelations = class'RankRelations';
|
const CfgRankRelations = class'RankRelations';
|
||||||
|
|
||||||
|
const UpdateInterval = 1.0f;
|
||||||
|
|
||||||
const MatchUID = "0x";
|
const MatchUID = "0x";
|
||||||
const MatchPlayerSteamID64 = "76561";
|
const MatchPlayerSteamID64 = "76561";
|
||||||
const MatchGroupSteamID64 = "10358279";
|
const MatchGroupSteamID64 = "10358279";
|
||||||
|
|
||||||
var private config int Version;
|
var private config int Version;
|
||||||
var private config E_LogLevel LogLevel;
|
var private config E_LogLevel LogLevel;
|
||||||
var private config int UpdateInterval;
|
|
||||||
|
|
||||||
var private KFGameInfo KFGI;
|
var private KFGameInfo KFGI;
|
||||||
var private KFGameInfo_Survival KFGIS;
|
var private KFGameInfo_Survival KFGIS;
|
||||||
@ -22,7 +23,7 @@ var private KFOnlineGameSettings KFOGS;
|
|||||||
|
|
||||||
var private OnlineSubsystemSteamworks OSS;
|
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> PlayerRelations;
|
||||||
var private Array<CachedRankRelation> GroupRelations;
|
var private Array<CachedRankRelation> GroupRelations;
|
||||||
@ -68,7 +69,6 @@ private function PreInit()
|
|||||||
if (Version == `NO_CONFIG)
|
if (Version == `NO_CONFIG)
|
||||||
{
|
{
|
||||||
LogLevel = LL_Info;
|
LogLevel = LL_Info;
|
||||||
UpdateInterval = 1;
|
|
||||||
SaveConfig();
|
SaveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,73 +123,19 @@ private function PreInit()
|
|||||||
private function InitRanks() // TODO: Ref
|
private function InitRanks() // TODO: Ref
|
||||||
{
|
{
|
||||||
local Array<RankRelation> Relations;
|
local Array<RankRelation> Relations;
|
||||||
local Array<Rank> Ranks;
|
|
||||||
local RankRelation Relation;
|
local RankRelation Relation;
|
||||||
local Rank Rank;
|
|
||||||
local CachedRankRelation CachedRankRelation;
|
|
||||||
|
|
||||||
Ranks = CfgRanks.default.Ranks;
|
|
||||||
Relations = CfgRankRelations.default.Relations;
|
Relations = CfgRankRelations.default.Relations;
|
||||||
|
|
||||||
foreach Relations(Relation)
|
foreach Relations(Relation)
|
||||||
{
|
{
|
||||||
if (IsUID(Relation.ObjectID) || IsPlayerSteamID64(Relation.ObjectID))
|
if (IsUID(Relation.ObjectID) || IsPlayerSteamID64(Relation.ObjectID))
|
||||||
{
|
{
|
||||||
if (AnyToUID(Relation.ObjectID, CachedRankRelation.UID))
|
AddRelation(Relation, PlayerRelations);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (IsGroupSteamID64(Relation.ObjectID))
|
else if (IsGroupSteamID64(Relation.ObjectID))
|
||||||
{
|
{
|
||||||
if (AnyToUID(Relation.ObjectID, CachedRankRelation.UID))
|
AddRelation(Relation, GroupRelations);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
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)
|
private static function bool IsUID(String ID)
|
||||||
{
|
{
|
||||||
return (Left(ID, Len(MatchUID)) ~= MatchUID);
|
return (Left(ID, Len(MatchUID)) ~= MatchUID);
|
||||||
@ -277,12 +258,20 @@ private function PostInit()
|
|||||||
|
|
||||||
private function UpdateTimer()
|
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)
|
public function NotifyLogin(Controller C)
|
||||||
{
|
{
|
||||||
local YAS_OwnerRepInfo RepInfo;
|
local YAS_RepInfo RepInfo;
|
||||||
|
|
||||||
`Log_Trace();
|
`Log_Trace();
|
||||||
|
|
||||||
@ -298,7 +287,7 @@ public function NotifyLogin(Controller C)
|
|||||||
|
|
||||||
public function NotifyLogout(Controller C)
|
public function NotifyLogout(Controller C)
|
||||||
{
|
{
|
||||||
local YAS_OwnerRepInfo RepInfo;
|
local YAS_RepInfo RepInfo;
|
||||||
|
|
||||||
`Log_Trace();
|
`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;
|
local YAS_RankRepInfo RankRepInfo;
|
||||||
|
|
||||||
`Log_Trace();
|
`Log_Trace();
|
||||||
|
|
||||||
OwnerRepInfo = Spawn(class'YAS_OwnerRepInfo', C);
|
OwnerRepInfo = Spawn(class'YAS_RepInfo', C);
|
||||||
RankRepInfo = Spawn(class'YAS_RankRepInfo', C);
|
RankRepInfo = Spawn(class'YAS_RankRepInfo', C);
|
||||||
|
|
||||||
if (OwnerRepInfo != None && RankRepInfo != None)
|
if (OwnerRepInfo != None && RankRepInfo != None)
|
||||||
@ -334,9 +323,9 @@ public function YAS_OwnerRepInfo CreateRepInfo(Controller C)
|
|||||||
return OwnerRepInfo;
|
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;
|
if (C == None) return None;
|
||||||
|
|
||||||
@ -351,7 +340,7 @@ private function YAS_OwnerRepInfo FindRepInfo(Controller C)
|
|||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function bool DestroyRepInfo(YAS_OwnerRepInfo RepInfo)
|
public function bool DestroyRepInfo(YAS_RepInfo RepInfo)
|
||||||
{
|
{
|
||||||
`Log_Trace();
|
`Log_Trace();
|
||||||
|
|
||||||
@ -364,7 +353,7 @@ public function bool DestroyRepInfo(YAS_OwnerRepInfo RepInfo)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function InitRank(YAS_OwnerRepInfo RepInfo)
|
private function InitRank(YAS_RepInfo RepInfo)
|
||||||
{
|
{
|
||||||
local CachedRankRelation Rel;
|
local CachedRankRelation Rel;
|
||||||
local String JoinedGroupIDs;
|
local String JoinedGroupIDs;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
class YAS_OwnerRepInfo extends ReplicationInfo;
|
class YAS_RepInfo extends ReplicationInfo;
|
||||||
|
|
||||||
var public YAS YAS;
|
var public YAS YAS;
|
||||||
|
|
||||||
@ -39,6 +39,8 @@ public simulated event ReplicatedEvent(name VarName)
|
|||||||
{
|
{
|
||||||
`Log_Trace();
|
`Log_Trace();
|
||||||
|
|
||||||
|
`Log_Base("ReplicatedEvent:" @ VarName);
|
||||||
|
|
||||||
switch (VarName)
|
switch (VarName)
|
||||||
{
|
{
|
||||||
case 'LogLevel':
|
case 'LogLevel':
|
@ -4,6 +4,18 @@ class YAS_ScoreBoard extends KFGUI_Page
|
|||||||
const HeaderWidthRatio = 0.30f;
|
const HeaderWidthRatio = 0.30f;
|
||||||
const PlayerListWidthRatio = 0.6f;
|
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 public E_LogLevel LogLevel;
|
||||||
|
|
||||||
var transient float HealthXPos, RankXPos, PlayerXPos, LevelXPos, PerkXPos, DoshXPos, KillsXPos, AssistXPos, PingXPos, ScrollXPos;
|
var transient float HealthXPos, RankXPos, PlayerXPos, LevelXPos, PerkXPos, DoshXPos, KillsXPos, AssistXPos, PingXPos, ScrollXPos;
|
||||||
@ -23,8 +35,7 @@ var KFPlayerController OwnerPC;
|
|||||||
var Color PingColor;
|
var Color PingColor;
|
||||||
var float PingBars;
|
var float PingBars;
|
||||||
|
|
||||||
var localized String Players;
|
var localized String Players, Spectators;
|
||||||
var localized String Spectators;
|
|
||||||
|
|
||||||
// Cache
|
// Cache
|
||||||
var public Array<YAS_RankRepInfo> RepInfos;
|
var public Array<YAS_RankRepInfo> RepInfos;
|
||||||
@ -274,22 +285,36 @@ function DrawMenu()
|
|||||||
|
|
||||||
Canvas.SetDrawColorStruct(Settings.Style.ServerNameTextColor);
|
Canvas.SetDrawColorStruct(Settings.Style.ServerNameTextColor);
|
||||||
S = (DynamicServerName == "" ? KFGRI.ServerName : DynamicServerName);
|
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;
|
YPos += BoxH;
|
||||||
|
|
||||||
// Mid Left Rect (Info)
|
// Mid Left Rect (Info)
|
||||||
BoxW = Width * 0.7; // TODO ?
|
BoxW = Width * 0.7;
|
||||||
BoxH = YL * 2 + BorderSize * 2;
|
BoxH = YL * 2 + BorderSize * 2;
|
||||||
Canvas.SetDrawColorStruct(Settings.Style.GameInfoBoxColor);
|
Canvas.SetDrawColorStruct(Settings.Style.GameInfoBoxColor);
|
||||||
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeGameInfoBox);
|
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapeGameInfoBox);
|
||||||
|
|
||||||
Canvas.SetDrawColorStruct(Settings.Style.GameInfoTextColor);
|
Canvas.SetDrawColorStruct(Settings.Style.GameInfoTextColor);
|
||||||
S = class'KFCommon_LocalizedStrings'.static.GetFriendlyMapName(PC.WorldInfo.GetMapName(true));
|
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);
|
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)
|
// Mid Right Rect (Wave)
|
||||||
BoxX = BoxX + BoxW;
|
BoxX = BoxX + BoxW;
|
||||||
@ -299,8 +324,8 @@ function DrawMenu()
|
|||||||
|
|
||||||
Canvas.SetDrawColorStruct(Settings.Style.WaveTextColor);
|
Canvas.SetDrawColorStruct(Settings.Style.WaveTextColor);
|
||||||
S = class'KFGFxHUD_ScoreboardMapInfoContainer'.default.WaveString;
|
S = class'KFGFxHUD_ScoreboardMapInfoContainer'.default.WaveString;
|
||||||
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, FontScalar);
|
DrawTextShadowHVCenter(S, BoxX, YPos, BoxW, BoxH / 2, FontScalar);
|
||||||
DrawTextShadowHVCenter(WaveText(), BoxX, YPos + YL, BoxW, FontScalar);
|
DrawTextShadowHVCenter(WaveText(), BoxX, YPos + BoxH / 2, BoxW, BoxH / 2, FontScalar);
|
||||||
|
|
||||||
YPos += BoxH;
|
YPos += BoxH;
|
||||||
|
|
||||||
@ -311,13 +336,22 @@ function DrawMenu()
|
|||||||
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountBoxColor);
|
Canvas.SetDrawColorStruct(Settings.Style.PlayerCountBoxColor);
|
||||||
Owner.CurrentStyle.DrawRectBox(BoxX, YPos, BoxW, BoxH, Settings.Style.EdgeSize, Settings.Style.ShapePlayersCountBox);
|
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);
|
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);
|
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);
|
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;
|
YPos += BoxH;
|
||||||
|
|
||||||
@ -376,12 +410,12 @@ function DrawMenu()
|
|||||||
|
|
||||||
// Header texts
|
// Header texts
|
||||||
Canvas.SetDrawColorStruct(Settings.Style.ListHeaderTextColor);
|
Canvas.SetDrawColorStruct(Settings.Style.ListHeaderTextColor);
|
||||||
DrawTextShadowHLeftVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PlayerString, XPos + PlayerXPos, YPos, FontScalar);
|
DrawTextShadowHLeftVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PlayerString, XPos + PlayerXPos, YPos, BoxH, FontScalar);
|
||||||
DrawTextShadowHLeftVCenter(class'KFGFxMenu_Inventory'.default.PerkFilterString, XPos + PerkXPos, YPos, FontScalar);
|
DrawTextShadowHLeftVCenter(class'KFGFxMenu_Inventory'.default.PerkFilterString, XPos + PerkXPos, YPos, BoxH, FontScalar);
|
||||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.KillsString, XPos + KillsXPos, YPos, KillsWBox, FontScalar);
|
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.KillsString, XPos + KillsXPos, YPos, KillsWBox, BoxH, FontScalar);
|
||||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.AssistsString, XPos + AssistXPos, YPos, AssistWBox, FontScalar);
|
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.AssistsString, XPos + AssistXPos, YPos, AssistWBox, BoxH, FontScalar);
|
||||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.DoshString, XPos + DoshXPos, YPos, DoshWBox, FontScalar);
|
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.DoshString, XPos + DoshXPos, YPos, DoshWBox, BoxH, FontScalar);
|
||||||
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PingString, XPos + PingXPos, YPos, PingWBox, FontScalar);
|
DrawTextShadowHVCenter(class'KFGFxHUD_ScoreboardWidget'.default.PingString, XPos + PingXPos, YPos, PingWBox, BoxH, FontScalar);
|
||||||
|
|
||||||
ColorTMP = Settings.Style.ListHeaderTextColor;
|
ColorTMP = Settings.Style.ListHeaderTextColor;
|
||||||
ColorTMP.A = 150;
|
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);
|
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)
|
function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float Width, bool bFocus)
|
||||||
{
|
{
|
||||||
local string S, StrValue;
|
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 float XPos, BoxWidth, RealPlayerWBox;
|
||||||
local KFPlayerReplicationInfo KFPRI;
|
local KFPlayerReplicationInfo KFPRI;
|
||||||
local byte Level, PrestigeLevel;
|
local byte Level, PrestigeLevel;
|
||||||
@ -456,7 +465,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
|
|
||||||
local int Shape, ShapeHealth;
|
local int Shape, ShapeHealth;
|
||||||
|
|
||||||
local Color HealthBoxColor, HealthTextColor;
|
local Color HealthBoxColor;
|
||||||
|
|
||||||
BorderSize = Owner.HUDOwner.ScaledBorderSize;
|
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);
|
C.Font = Owner.CurrentStyle.PickFont(FontScalar);
|
||||||
|
|
||||||
Canvas.TextSize("ABC", XL, YL, FontScalar, FontScalar);
|
Canvas.TextSize("ABC", XL, YL, FontScalar, FontScalar);
|
||||||
TextYOffset = YOffset + (Height * 0.5f) - (YL * 0.5f);
|
|
||||||
|
|
||||||
if (KFPRIArray.Length > 1 && Index == 0)
|
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)
|
if (!KFPRI.bReadyToPlay && KFGRI.bMatchHasBegun)
|
||||||
{
|
{
|
||||||
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||||
HealthTextColor = Settings.Style.StateTextColorLobby;
|
|
||||||
}
|
}
|
||||||
else if (!KFGRI.bMatchHasBegun)
|
else if (!KFGRI.bMatchHasBegun)
|
||||||
{
|
{
|
||||||
if (KFPRI.bReadyToPlay)
|
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||||
{
|
|
||||||
HealthBoxColor = Settings.Style.StateBoxColorReady;
|
|
||||||
HealthTextColor = Settings.Style.StateBoxColorReady;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
HealthBoxColor = Settings.Style.StateBoxColorNotReady;
|
|
||||||
HealthTextColor = Settings.Style.StateBoxColorNotReady;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (bIsZED && KFTeamInfo_Zeds(GetPlayer().PlayerReplicationInfo.Team) == None)
|
else if (bIsZED && KFTeamInfo_Zeds(GetPlayer().PlayerReplicationInfo.Team) == None)
|
||||||
{
|
{
|
||||||
HealthBoxColor = Settings.Style.StateTextColorNone;
|
HealthBoxColor = Settings.Style.StateBoxColorLobby;
|
||||||
HealthTextColor = Settings.Style.StateTextColorNone;
|
|
||||||
}
|
}
|
||||||
else if (KFPRI.PlayerHealth <= 0 || KFPRI.PlayerHealthPercent <= 0)
|
else if (KFPRI.PlayerHealth <= 0 || KFPRI.PlayerHealthPercent <= 0)
|
||||||
{
|
{
|
||||||
if (KFPRI.bOnlySpectator)
|
HealthBoxColor = Settings.Style.StateBoxColorDead;
|
||||||
{
|
|
||||||
HealthBoxColor = Settings.Style.StateTextColorSpectator;
|
|
||||||
HealthTextColor = Settings.Style.StateTextColorSpectator;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HealthBoxColor = Settings.Style.StateTextColorDead;
|
HealthBoxColor = HealthColorByPercent(ByteToFloat(KFPRI.PlayerHealthPercent));
|
||||||
HealthTextColor = Settings.Style.StateTextColorDead;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Health box
|
// Health box
|
||||||
@ -554,11 +528,11 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
Settings.Style.EdgeSize,
|
Settings.Style.EdgeSize,
|
||||||
ShapeHealth);
|
ShapeHealth);
|
||||||
|
|
||||||
C.SetDrawColorStruct(HealthTextColor);
|
C.SetDrawColorStruct(Settings.Style.StateTextColorHealthHigh);
|
||||||
|
|
||||||
if (KFPRI.PlayerHealth > 0)
|
if (KFPRI.PlayerHealth > 0)
|
||||||
{
|
{
|
||||||
DrawTextShadowHVCenter(String(KFPRI.PlayerHealth), HealthXPos, TextYOffset, HealthWBox, FontScalar);
|
DrawTextShadowHVCenter(String(KFPRI.PlayerHealth), HealthXPos, YOffset, HealthWBox, Height, FontScalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
XPos += HealthWBox;
|
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');
|
C.DrawRect (Height-5, Height-5, Texture2D'UI_Widgets.MenuBarWidget_SWF_IF');
|
||||||
|
|
||||||
S = class'KFCommon_LocalizedStrings'.default.ZedString;
|
S = class'KFCommon_LocalizedStrings'.default.ZedString;
|
||||||
DrawTextShadowHLeftVCenter(S, PerkXPos + Height, TextYOffset, FontScalar);
|
DrawTextShadowHLeftVCenter(S, PerkXPos + Height, YOffset, Height, FontScalar);
|
||||||
RealPlayerWBox = PerkXPos + Height - PlayerXPos;
|
RealPlayerWBox = PerkXPos + Height - PlayerXPos;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -648,17 +622,17 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
C.SetDrawColorStruct(Settings.Style.LevelTextColorHigh);
|
C.SetDrawColorStruct(Settings.Style.LevelTextColorHigh);
|
||||||
|
|
||||||
S = String(Level);
|
S = String(Level);
|
||||||
DrawTextShadowHLeftVCenter(S, LevelXPos, TextYOffset, FontScalar);
|
DrawTextShadowHLeftVCenter(S, LevelXPos, YOffset, Height, FontScalar);
|
||||||
|
|
||||||
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
||||||
S = KFPRI.CurrentPerkClass.default.PerkName;
|
S = KFPRI.CurrentPerkClass.default.PerkName;
|
||||||
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
|
DrawTextShadowHLeftVCenter(S, PerkXPos, YOffset, Height, FontScalar);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
C.SetDrawColorStruct(Settings.Style.PerkNoneTextColor);
|
||||||
S = "";
|
S = "";
|
||||||
DrawTextShadowHLeftVCenter(S, PerkXPos, TextYOffset, FontScalar);
|
DrawTextShadowHLeftVCenter(S, PerkXPos, YOffset, Height, FontScalar);
|
||||||
RealPlayerWBox = PerkXPos - PlayerXPos;
|
RealPlayerWBox = PerkXPos - PlayerXPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -667,7 +641,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
if (Rank.RankName != "")
|
if (Rank.RankName != "")
|
||||||
{
|
{
|
||||||
C.SetDrawColorStruct(Rank.RankColor);
|
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
|
// Avatar
|
||||||
@ -693,15 +667,15 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
S = Left(S, Len(S)-1);
|
S = Left(S, Len(S)-1);
|
||||||
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
|
Canvas.TextSize(S, XL, YL, FontScalar, FontScalar);
|
||||||
}
|
}
|
||||||
DrawTextShadowHLeftVCenter(S, PlayerXPos, TextYOffset, FontScalar);
|
DrawTextShadowHLeftVCenter(S, PlayerXPos, YOffset, Height, FontScalar);
|
||||||
|
|
||||||
// Kill
|
// Kill
|
||||||
C.SetDrawColorStruct(Settings.Style.KillsTextColorMid); // TODO
|
C.SetDrawColorStruct(Settings.Style.KillsTextColorMid);
|
||||||
DrawTextShadowHVCenter(string (KFPRI.Kills), KillsXPos, TextYOffset, KillsWBox, FontScalar);
|
DrawTextShadowHVCenter(string (KFPRI.Kills), KillsXPos, YOffset, KillsWBox, Height, FontScalar);
|
||||||
|
|
||||||
// Assist
|
// Assist
|
||||||
C.SetDrawColorStruct(Settings.Style.AssistsTextColorMid); // TODO
|
C.SetDrawColorStruct(Settings.Style.AssistsTextColorMid);
|
||||||
DrawTextShadowHVCenter(string (KFPRI.Assists), AssistXPos, TextYOffset, AssistWBox, FontScalar);
|
DrawTextShadowHVCenter(string (KFPRI.Assists), AssistXPos, YOffset, AssistWBox, Height, FontScalar);
|
||||||
|
|
||||||
// Dosh
|
// Dosh
|
||||||
if (bIsZED)
|
if (bIsZED)
|
||||||
@ -711,10 +685,10 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
C.SetDrawColorStruct(Settings.Style.DoshTextColorMid); // TODO
|
C.SetDrawColorStruct(Settings.Style.DoshTextColorMid);
|
||||||
StrValue = GetNiceSize(int(KFPRI.Score));
|
StrValue = GetNiceSize(int(KFPRI.Score));
|
||||||
}
|
}
|
||||||
DrawTextShadowHVCenter(StrValue, DoshXPos, TextYOffset, DoshWBox, FontScalar);
|
DrawTextShadowHVCenter(StrValue, DoshXPos, YOffset, DoshWBox, Height, FontScalar);
|
||||||
|
|
||||||
// Ping
|
// Ping
|
||||||
if (KFPRI.bBot)
|
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);
|
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);
|
C.SetDrawColor(250, 250, 250, 255);
|
||||||
if (Settings.Style.ShowPingBars)
|
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));
|
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);
|
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
|
defaultproperties
|
||||||
{
|
{
|
||||||
bEnableInputs=true
|
bEnableInputs=true
|
||||||
|
Loading…
Reference in New Issue
Block a user