first version
This commit is contained in:
147
DPL/Classes/DPL.uc
Normal file
147
DPL/Classes/DPL.uc
Normal file
@ -0,0 +1,147 @@
|
||||
class DPL extends Info
|
||||
config(DPL);
|
||||
|
||||
const LatestVersion = 1;
|
||||
|
||||
const CfgLifespan = class'Lifespan';
|
||||
|
||||
enum E_PickupType
|
||||
{
|
||||
PT_NotPickup,
|
||||
PT_Weapon,
|
||||
PT_Dosh
|
||||
};
|
||||
|
||||
var private config int Version;
|
||||
var private config E_LogLevel LogLevel;
|
||||
|
||||
public simulated function bool SafeDestroy()
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
return (bPendingDelete || bDeleteMe || Destroy());
|
||||
}
|
||||
|
||||
public event PreBeginPlay()
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
if (WorldInfo.NetMode == NM_Client)
|
||||
{
|
||||
`Log_Fatal("NetMode:" @ WorldInfo.NetMode);
|
||||
SafeDestroy();
|
||||
return;
|
||||
}
|
||||
|
||||
Super.PreBeginPlay();
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
private function Init()
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
if (Version == `NO_CONFIG)
|
||||
{
|
||||
LogLevel = LL_Info;
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
CfgLifespan.static.InitConfig(Version, LatestVersion, LogLevel);
|
||||
|
||||
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);
|
||||
|
||||
CfgLifespan.static.Load(LogLevel);
|
||||
|
||||
`Log_Info("Initialized");
|
||||
}
|
||||
|
||||
public function ModifyLifespan(Actor A)
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
switch (PickupType(A))
|
||||
{
|
||||
case PT_Dosh:
|
||||
if (CfgLifespan.default.Dosh > 0)
|
||||
{
|
||||
`Log_Debug("Modify dosh lifespan:" @ int(A.Lifespan) @ "->" @ CfgLifespan.default.Dosh);
|
||||
A.Lifespan = float(CfgLifespan.default.Dosh);
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Debug("Skip modify dosh lifespan");
|
||||
}
|
||||
break;
|
||||
|
||||
case PT_Weapon:
|
||||
if (CfgLifespan.default.Weap > 0)
|
||||
{
|
||||
`Log_Debug("Modify weapon lifespan:" @ int(A.Lifespan) @ "->" @ CfgLifespan.default.Weap);
|
||||
A.Lifespan = float(CfgLifespan.default.Weap);
|
||||
}
|
||||
else
|
||||
{
|
||||
`Log_Debug("Skip modify weapon lifespan");
|
||||
}
|
||||
break;
|
||||
|
||||
case PT_NotPickup:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function E_PickupType PickupType(Actor A)
|
||||
{
|
||||
`Log_Trace();
|
||||
|
||||
if (KFDroppedPickup_Cash(A) != None)
|
||||
{
|
||||
return PT_Dosh;
|
||||
}
|
||||
else if (KFDroppedPickup(A) != None)
|
||||
{
|
||||
return PT_Weapon;
|
||||
}
|
||||
|
||||
return PT_NotPickup;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
4
DPL/Classes/DPL.upkg
Normal file
4
DPL/Classes/DPL.upkg
Normal file
@ -0,0 +1,4 @@
|
||||
[Flags]
|
||||
AllowDownload=False
|
||||
ClientOptional=False
|
||||
ServerSideOnly=True
|
59
DPL/Classes/DPLMut.uc
Normal file
59
DPL/Classes/DPLMut.uc
Normal file
@ -0,0 +1,59 @@
|
||||
class DPLMut extends KFMutator;
|
||||
|
||||
var private DPL DPL;
|
||||
|
||||
public simulated function bool SafeDestroy()
|
||||
{
|
||||
return (bPendingDelete || bDeleteMe || Destroy());
|
||||
}
|
||||
|
||||
public event PreBeginPlay()
|
||||
{
|
||||
Super.PreBeginPlay();
|
||||
|
||||
if (WorldInfo.NetMode == NM_Client) return;
|
||||
|
||||
foreach WorldInfo.DynamicActors(class'DPL', DPL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (DPL == None)
|
||||
{
|
||||
DPL = WorldInfo.Spawn(class'DPL');
|
||||
}
|
||||
|
||||
if (DPL == None)
|
||||
{
|
||||
`Log_Base("FATAL: Can't Spawn 'DPL'");
|
||||
SafeDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
public function AddMutator(Mutator Mut)
|
||||
{
|
||||
if (Mut == Self) return;
|
||||
|
||||
if (Mut.Class == Class)
|
||||
Mut.Destroy();
|
||||
else
|
||||
Super.AddMutator(Mut);
|
||||
}
|
||||
|
||||
public function bool CheckRelevance(Actor A)
|
||||
{
|
||||
local bool Relevance;
|
||||
|
||||
Relevance = Super.CheckRelevance(A);
|
||||
if (Relevance)
|
||||
{
|
||||
DPL.ModifyLifespan(A);
|
||||
}
|
||||
|
||||
return Relevance;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
42
DPL/Classes/Lifespan.uc
Normal file
42
DPL/Classes/Lifespan.uc
Normal file
@ -0,0 +1,42 @@
|
||||
class Lifespan extends Object
|
||||
config(DPL)
|
||||
abstract;
|
||||
|
||||
var public config int Weap;
|
||||
var public config int Dosh;
|
||||
|
||||
public static function InitConfig(int Version, int LatestVersion, E_LogLevel LogLevel)
|
||||
{
|
||||
`Log_TraceStatic();
|
||||
|
||||
switch (Version)
|
||||
{
|
||||
case `NO_CONFIG:
|
||||
ApplyDefault(LogLevel);
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (LatestVersion != Version)
|
||||
{
|
||||
StaticSaveConfig();
|
||||
}
|
||||
}
|
||||
|
||||
public static function Load(E_LogLevel LogLevel)
|
||||
{
|
||||
`Log_TraceStatic();
|
||||
}
|
||||
|
||||
protected static function ApplyDefault(E_LogLevel LogLevel)
|
||||
{
|
||||
`Log_TraceStatic();
|
||||
|
||||
default.Weap = int(class'KFDroppedPickup'.default.Lifespan);
|
||||
default.Dosh = int(class'KFDroppedPickup_Cash'.default.Lifespan);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
20
DPL/Classes/_Logger.uc
Normal file
20
DPL/Classes/_Logger.uc
Normal 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
|
||||
{
|
||||
|
||||
}
|
Reference in New Issue
Block a user