PCv1
This commit is contained in:
parent
c1e9a436c4
commit
c36fcb61bc
@ -7,6 +7,14 @@ const CfgRemoveItems = class'RemoveItems';
|
||||
const CfgAddItems = class'AddItems';
|
||||
const Helper = class'Helper';
|
||||
|
||||
struct S_PreloadContent
|
||||
{
|
||||
var class<KFWeaponDefinition> KFWD;
|
||||
var class<KFWeapon> KFWC;
|
||||
var KFWeapon KFW;
|
||||
var KFW_Access KFWA;
|
||||
};
|
||||
|
||||
var private config int Version;
|
||||
var private config E_LogLevel LogLevel;
|
||||
var private config bool UnlockDLC;
|
||||
@ -22,6 +30,8 @@ var private Array<CTI_RepInfo> RepInfos;
|
||||
|
||||
var private bool ReadyToSync;
|
||||
|
||||
var private Array<S_PreloadContent> PreloadContent;
|
||||
|
||||
public simulated function bool SafeDestroy()
|
||||
{
|
||||
`Log_Trace(`Location);
|
||||
@ -185,7 +195,7 @@ private function PostInit()
|
||||
|
||||
if (bPreloadContent)
|
||||
{
|
||||
Helper.static.PreloadContent(AddItems);
|
||||
InitPreload(AddItems);
|
||||
}
|
||||
|
||||
ReadyToSync = true;
|
||||
@ -199,6 +209,51 @@ private function PostInit()
|
||||
}
|
||||
}
|
||||
|
||||
private function InitPreload(Array<class<KFWeaponDefinition> > Content)
|
||||
{
|
||||
local S_PreloadContent SPC;
|
||||
|
||||
foreach Content(SPC.KFWD)
|
||||
{
|
||||
SPC.KFWC = class<KFWeapon> (DynamicLoadObject(SPC.KFWD.default.WeaponClassPath, class'Class'));
|
||||
if (SPC.KFWC != None)
|
||||
{
|
||||
SPC.KFW = KFGI.Spawn(SPC.KFWC);
|
||||
if (SPC.KFW == None)
|
||||
{
|
||||
`Log_Warn("Spawn failed:" @ SPC.KFWD.default.WeaponClassPath);
|
||||
continue;
|
||||
}
|
||||
|
||||
SPC.KFWA = new (SPC.KFW) class'KFW_Access';
|
||||
if (SPC.KFWA == None)
|
||||
{
|
||||
`Log_Warn("Spawn failed:" @ SPC.KFWD.default.WeaponClassPath @ "KFW_Access");
|
||||
continue;
|
||||
}
|
||||
|
||||
PreloadContent.AddItem(SPC);
|
||||
}
|
||||
}
|
||||
|
||||
`Log_Debug("PreloadContent:" @ PreloadContent.Length);
|
||||
}
|
||||
|
||||
public function StartPreload(class<KFWeaponDefinition> KFWeapDef)
|
||||
{
|
||||
local S_PreloadContent SPC;
|
||||
|
||||
foreach PreloadContent(SPC)
|
||||
{
|
||||
if (SPC.KFWD == KFWeapDef)
|
||||
{
|
||||
SPC.KFWA.KFW_StartLoadWeaponContent();
|
||||
`Log_Debug("Preload:" @ SPC.KFW);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function NotifyLogin(Controller C)
|
||||
{
|
||||
`Log_Trace(`Location);
|
||||
|
@ -15,14 +15,13 @@ var private int Recieved;
|
||||
var private int SyncSize;
|
||||
|
||||
var private KFPlayerController KFPC;
|
||||
var private KFPawn KFP;
|
||||
var private KFInventoryManager KFIM;
|
||||
|
||||
var private KFGFxWidget_PartyInGame PartyInGameWidget;
|
||||
var private GFxObject Notification;
|
||||
|
||||
var private class<Weapon> PreloadWeaponClass;
|
||||
var private float PreloadWeaponTime;
|
||||
var private String NotificationHeaderText;
|
||||
var private String NotificationLeftText;
|
||||
var private String NotificationRightText;
|
||||
var private int NotificationPercent;
|
||||
|
||||
replication
|
||||
{
|
||||
@ -97,7 +96,7 @@ private simulated function bool CheckPartyInGameWidget()
|
||||
return (PartyInGameWidget != None);
|
||||
}
|
||||
|
||||
private unreliable client function HideReadyButton()
|
||||
private simulated function HideReadyButton()
|
||||
{
|
||||
`Log_Trace(`Location);
|
||||
|
||||
@ -120,7 +119,7 @@ private simulated function ShowReadyButton()
|
||||
}
|
||||
}
|
||||
|
||||
private unreliable client function UpdateNotification(String Title, String Downloading, String Remainig, int Percent)
|
||||
private simulated function UpdateNotification(String Title, String Downloading, String Remainig, int Percent)
|
||||
{
|
||||
`Log_Trace(`Location);
|
||||
|
||||
@ -147,7 +146,10 @@ private reliable client function ClientSync(class<KFWeaponDefinition> WeapDef, o
|
||||
return;
|
||||
}
|
||||
|
||||
HideReadyButton();
|
||||
if (!IsTimerActive(nameof(KeepNotification)))
|
||||
{
|
||||
SetTimer(0.1f, true, nameof(KeepNotification));
|
||||
}
|
||||
|
||||
if (Remove)
|
||||
{
|
||||
@ -156,29 +158,38 @@ private reliable client function ClientSync(class<KFWeaponDefinition> WeapDef, o
|
||||
else
|
||||
{
|
||||
AddItems.AddItem(WeapDef);
|
||||
if (PreloadContent)
|
||||
{
|
||||
Helper.static.PreloadWeapon(WeapDef);
|
||||
}
|
||||
}
|
||||
|
||||
Recieved = RemoveItems.Length + AddItems.Length;
|
||||
|
||||
UpdateNotification(
|
||||
"Sync trader items, please wait...",
|
||||
Remove ? "-" : "+" @ Repl(String(WeapDef), "KFWeapDef_", ""),
|
||||
Recieved @ "/" @ SyncSize,
|
||||
(float(Recieved) / float(SyncSize)) * 100);
|
||||
NotificationLeftText = Remove ? "-" : "+" @ Repl(String(WeapDef), "KFWeapDef_", "");
|
||||
NotificationRightText = Recieved @ "/" @ SyncSize;
|
||||
if (SyncSize != 0)
|
||||
{
|
||||
NotificationPercent = (float(Recieved) / float(SyncSize)) * 100;
|
||||
}
|
||||
|
||||
ServerSync();
|
||||
}
|
||||
|
||||
private simulated function KeepNotification()
|
||||
{
|
||||
HideReadyButton();
|
||||
UpdateNotification(
|
||||
NotificationHeaderText,
|
||||
NotificationLeftText,
|
||||
NotificationRightText,
|
||||
NotificationPercent);
|
||||
}
|
||||
|
||||
private simulated reliable client function ClientSyncFinished()
|
||||
{
|
||||
local KFGameReplicationInfo KFGRI;
|
||||
|
||||
`Log_Trace(`Location);
|
||||
|
||||
ClearTimer(nameof(KeepNotification));
|
||||
|
||||
if (WorldInfo.GRI == None)
|
||||
{
|
||||
SetTimer(1.0f, false, nameof(ClientSyncFinished));
|
||||
@ -224,6 +235,7 @@ public reliable server function ServerSync()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PreloadContent) CTI.StartPreload(AddItems[Recieved]);
|
||||
ClientSync(AddItems[Recieved++ - RemoveItems.Length], false);
|
||||
}
|
||||
}
|
||||
@ -237,4 +249,7 @@ defaultproperties
|
||||
|
||||
PendingSync = false
|
||||
Recieved = 0
|
||||
|
||||
NotificationHeaderText = "Sync trader items, please wait..."
|
||||
NotificationPercent = 0
|
||||
}
|
||||
|
@ -52,30 +52,6 @@ public static simulated function ModifyTrader(
|
||||
KFGRI.TraderItems = TraderItems;
|
||||
}
|
||||
|
||||
public static simulated function PreloadContent(Array<class<KFWeaponDefinition> > WeapDefs)
|
||||
{
|
||||
local class<KFWeaponDefinition> WeapDef;
|
||||
|
||||
foreach WeapDefs(WeapDef)
|
||||
{
|
||||
PreloadWeapon(WeapDef);
|
||||
}
|
||||
}
|
||||
|
||||
public static simulated function PreloadWeapon(class<KFWeaponDefinition> WeapDef)
|
||||
{
|
||||
local class<KFWeapon> KFW;
|
||||
|
||||
KFW = class<KFWeapon> (DynamicLoadObject(WeapDef.default.WeaponClassPath, class'Class'));
|
||||
if (KFW != None)
|
||||
{
|
||||
// This doesn't seem to have any effect right now
|
||||
// But I still leave it for the future
|
||||
// in the hope that someday we can preload weapon models using this function
|
||||
class'KFWeapon'.static.TriggerAsyncContentLoad(KFW);
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
|
12
CTI/Classes/KFW_Access.uc
Normal file
12
CTI/Classes/KFW_Access.uc
Normal file
@ -0,0 +1,12 @@
|
||||
class KFW_Access extends Object
|
||||
within KFWeapon;
|
||||
|
||||
public function KFW_StartLoadWeaponContent()
|
||||
{
|
||||
StartLoadWeaponContent();
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user