PCv1
This commit is contained in:
parent
c1e9a436c4
commit
c36fcb61bc
@ -7,6 +7,14 @@ const CfgRemoveItems = class'RemoveItems';
|
|||||||
const CfgAddItems = class'AddItems';
|
const CfgAddItems = class'AddItems';
|
||||||
const Helper = class'Helper';
|
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 int Version;
|
||||||
var private config E_LogLevel LogLevel;
|
var private config E_LogLevel LogLevel;
|
||||||
var private config bool UnlockDLC;
|
var private config bool UnlockDLC;
|
||||||
@ -22,6 +30,8 @@ var private Array<CTI_RepInfo> RepInfos;
|
|||||||
|
|
||||||
var private bool ReadyToSync;
|
var private bool ReadyToSync;
|
||||||
|
|
||||||
|
var private Array<S_PreloadContent> PreloadContent;
|
||||||
|
|
||||||
public simulated function bool SafeDestroy()
|
public simulated function bool SafeDestroy()
|
||||||
{
|
{
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
@ -185,7 +195,7 @@ private function PostInit()
|
|||||||
|
|
||||||
if (bPreloadContent)
|
if (bPreloadContent)
|
||||||
{
|
{
|
||||||
Helper.static.PreloadContent(AddItems);
|
InitPreload(AddItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadyToSync = true;
|
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)
|
public function NotifyLogin(Controller C)
|
||||||
{
|
{
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
|
@ -15,14 +15,13 @@ var private int Recieved;
|
|||||||
var private int SyncSize;
|
var private int SyncSize;
|
||||||
|
|
||||||
var private KFPlayerController KFPC;
|
var private KFPlayerController KFPC;
|
||||||
var private KFPawn KFP;
|
|
||||||
var private KFInventoryManager KFIM;
|
|
||||||
|
|
||||||
var private KFGFxWidget_PartyInGame PartyInGameWidget;
|
var private KFGFxWidget_PartyInGame PartyInGameWidget;
|
||||||
var private GFxObject Notification;
|
var private GFxObject Notification;
|
||||||
|
|
||||||
var private class<Weapon> PreloadWeaponClass;
|
var private String NotificationHeaderText;
|
||||||
var private float PreloadWeaponTime;
|
var private String NotificationLeftText;
|
||||||
|
var private String NotificationRightText;
|
||||||
|
var private int NotificationPercent;
|
||||||
|
|
||||||
replication
|
replication
|
||||||
{
|
{
|
||||||
@ -97,7 +96,7 @@ private simulated function bool CheckPartyInGameWidget()
|
|||||||
return (PartyInGameWidget != None);
|
return (PartyInGameWidget != None);
|
||||||
}
|
}
|
||||||
|
|
||||||
private unreliable client function HideReadyButton()
|
private simulated function HideReadyButton()
|
||||||
{
|
{
|
||||||
`Log_Trace(`Location);
|
`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);
|
`Log_Trace(`Location);
|
||||||
|
|
||||||
@ -147,8 +146,11 @@ private reliable client function ClientSync(class<KFWeaponDefinition> WeapDef, o
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HideReadyButton();
|
if (!IsTimerActive(nameof(KeepNotification)))
|
||||||
|
{
|
||||||
|
SetTimer(0.1f, true, nameof(KeepNotification));
|
||||||
|
}
|
||||||
|
|
||||||
if (Remove)
|
if (Remove)
|
||||||
{
|
{
|
||||||
RemoveItems.AddItem(WeapDef);
|
RemoveItems.AddItem(WeapDef);
|
||||||
@ -156,29 +158,38 @@ private reliable client function ClientSync(class<KFWeaponDefinition> WeapDef, o
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
AddItems.AddItem(WeapDef);
|
AddItems.AddItem(WeapDef);
|
||||||
if (PreloadContent)
|
|
||||||
{
|
|
||||||
Helper.static.PreloadWeapon(WeapDef);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Recieved = RemoveItems.Length + AddItems.Length;
|
Recieved = RemoveItems.Length + AddItems.Length;
|
||||||
|
|
||||||
UpdateNotification(
|
NotificationLeftText = Remove ? "-" : "+" @ Repl(String(WeapDef), "KFWeapDef_", "");
|
||||||
"Sync trader items, please wait...",
|
NotificationRightText = Recieved @ "/" @ SyncSize;
|
||||||
Remove ? "-" : "+" @ Repl(String(WeapDef), "KFWeapDef_", ""),
|
if (SyncSize != 0)
|
||||||
Recieved @ "/" @ SyncSize,
|
{
|
||||||
(float(Recieved) / float(SyncSize)) * 100);
|
NotificationPercent = (float(Recieved) / float(SyncSize)) * 100;
|
||||||
|
}
|
||||||
|
|
||||||
ServerSync();
|
ServerSync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private simulated function KeepNotification()
|
||||||
|
{
|
||||||
|
HideReadyButton();
|
||||||
|
UpdateNotification(
|
||||||
|
NotificationHeaderText,
|
||||||
|
NotificationLeftText,
|
||||||
|
NotificationRightText,
|
||||||
|
NotificationPercent);
|
||||||
|
}
|
||||||
|
|
||||||
private simulated reliable client function ClientSyncFinished()
|
private simulated reliable client function ClientSyncFinished()
|
||||||
{
|
{
|
||||||
local KFGameReplicationInfo KFGRI;
|
local KFGameReplicationInfo KFGRI;
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
|
|
||||||
|
ClearTimer(nameof(KeepNotification));
|
||||||
|
|
||||||
if (WorldInfo.GRI == None)
|
if (WorldInfo.GRI == None)
|
||||||
{
|
{
|
||||||
SetTimer(1.0f, false, nameof(ClientSyncFinished));
|
SetTimer(1.0f, false, nameof(ClientSyncFinished));
|
||||||
@ -224,6 +235,7 @@ public reliable server function ServerSync()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (PreloadContent) CTI.StartPreload(AddItems[Recieved]);
|
||||||
ClientSync(AddItems[Recieved++ - RemoveItems.Length], false);
|
ClientSync(AddItems[Recieved++ - RemoveItems.Length], false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -237,4 +249,7 @@ defaultproperties
|
|||||||
|
|
||||||
PendingSync = false
|
PendingSync = false
|
||||||
Recieved = 0
|
Recieved = 0
|
||||||
|
|
||||||
|
NotificationHeaderText = "Sync trader items, please wait..."
|
||||||
|
NotificationPercent = 0
|
||||||
}
|
}
|
||||||
|
@ -52,30 +52,6 @@ public static simulated function ModifyTrader(
|
|||||||
KFGRI.TraderItems = TraderItems;
|
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
|
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…
x
Reference in New Issue
Block a user