81 lines
2.1 KiB
Ucode
81 lines
2.1 KiB
Ucode
/*
|
|
--------------------------------------------------------------
|
|
Condition_Timed
|
|
--------------------------------------------------------------
|
|
|
|
A Condition which is marked complete after a specified amount of
|
|
time expires.
|
|
|
|
Author : Alex Quick
|
|
|
|
--------------------------------------------------------------
|
|
*/
|
|
|
|
class ObjCondition_Timed extends KF_ObjectiveCondition
|
|
editinlinenew;
|
|
|
|
var bool bTraderTime;
|
|
|
|
var () float Duration;
|
|
|
|
var float RemainingSeconds;
|
|
|
|
var float StartTime;
|
|
|
|
function AdjustToDifficulty(float Difficulty)
|
|
{
|
|
Duration /= FMax(Difficulty-2,1);
|
|
}
|
|
|
|
function Reset()
|
|
{
|
|
Super.Reset();
|
|
StartTime = 0.f;
|
|
RemainingSeconds = Duration;
|
|
}
|
|
|
|
function ConditionActivated(pawn ActivatingPlayer)
|
|
{
|
|
Super.ConditionActivated(ActivatingPlayer);
|
|
// log("======================"@self@"was just activated by : "@ActivatingPlayer,'Story_Debug');
|
|
RemainingSeconds = Duration ;
|
|
StartTime = GetObjOwner().Level.TimeSeconds ;
|
|
}
|
|
|
|
/* returns the percentage of completion for this condition */
|
|
function float GetCompletionPct()
|
|
{
|
|
return FClamp(1.f- (RemainingSeconds / Duration),0.f,1.f);
|
|
}
|
|
|
|
function ConditionTick(float DeltaTime)
|
|
{
|
|
local float NewTimeRemaining;
|
|
|
|
if(RemainingSeconds > 0)
|
|
{
|
|
NewTimeRemaining = FMax(Duration - int(GetObjOwner().Level.TimeSeconds - StartTime),0) ;
|
|
RemainingSeconds = NewTimeRemaining;
|
|
}
|
|
|
|
Super.ConditionTick(DeltaTime);
|
|
}
|
|
|
|
function string GetDataString()
|
|
{
|
|
if(HUD_Screen.Screen_CountStyle == Count_Down)
|
|
{
|
|
return FormatTime(RemainingSeconds) ;
|
|
}
|
|
else
|
|
{
|
|
return FormatTime(GetObjOwner().Level.TimeSeconds - StartTime) ;
|
|
}
|
|
}
|
|
|
|
DefaultProperties
|
|
{
|
|
Duration = 60.f
|
|
HUD_Screen=(Screen_Hint="Time Left :",Screen_ProgressStyle=HDS_TextOnly,Screen_CountStyle=Count_Down)
|
|
}
|