rott/kf_sources/KFStoryGame/Classes/ObjCondition_Timed.uc
2026-07-14 20:27:09 +07:00

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)
}