Core.Object | +--Engine.Actor | +--Engine.Effects | +--XIII.CWndBase | +--XIII.CWndOnTrigger
float
AnimationDuration
CWndDuration,
CWndFOV
int
CWndSizeX
CWndSizeY
Actor
Cam
HudCartoonWindow
LastCWnd
OnoPosX
OnoPosY
OnoSize
OnoSizeY
Texture
OnoTexture
array
OverlayMsg
Tar
bool
bAnimatedInRealtime
bSeeXIII
iA,
iB
iPhase
Color
myColor
vScrPosX,
vScrPosY
vector
vTarOffset
simulated
Tick(float DeltaT)
//_____________________________________________________________________________ // real time update of CWnd material
00001 //----------------------------------------------------------- 00002 // 00003 //----------------------------------------------------------- 00004 class CWndOnTrigger extends CWndBase; 00005 00006 var bool bSeeXIII; 00007 00008 var int iPhase; 00009 var float CWndDuration, CWndFOV; 00010 var actor Cam; 00011 var actor Tar; 00012 var vector vTarOffset; 00013 var int vScrPosX, vScrPosY; 00014 var int CWndSizeX; 00015 var int CWndSizeY; 00016 var int iA, iB; 00017 00018 // SE XBOX Specific (to be used in SPCWndOnTriggerclass) 00019 var bool bAnimatedInRealtime; 00020 var float AnimationDuration; 00021 // SE XBOX END 00022 00023 var texture OnoTexture; 00024 var int OnoPosX; 00025 var int OnoPosY; 00026 var int OnoSize; 00027 var int OnoSizeY; 00028 00029 var array<string> OverlayMsg; // message to display in overlay 00030 var HudCartoonWindow LastCWnd; 00031 00032 var Color myColor; 00033 00034 //_____________________________________________________________________________ 00035 event PostBeginPlay() 00036 { 00037 if ( bDBCWnd ) 00038 Log(self@"CWndOnTrigger PostBeginPlay RealTime="$bAnimatedInRealtime); 00039 Super.PostBeginPlay(); 00040 /* 00041 if ( bAnimatedInRealtime ) 00042 Enable('Tick'); 00043 else 00044 Disable('Tick'); 00045 */ 00046 } 00047 00048 //_____________________________________________________________________________ 00049 // real time update of CWnd material 00050 simulated function Tick(float DeltaT) 00051 { 00052 if ( XIIIPawn(Tar) != none ) 00053 { // cancel realtime computing if target has died to avoid him disappear if XIII grab him 00054 if ((Pawn(Tar).bIsDead || XIIIPawn(Tar).IsDead()) && !Pawn(Tar).IsAnimating()) 00055 bAnimatedInRealtime = false; 00056 else if ( Pawn(Tar).bHidden ) 00057 bAnimatedInRealtime = false; 00058 // Change filter color if target pawn died 00059 if ( Pawn(Tar).bIsDead ) 00060 FilterColor = class'Canvas'.Static.MakeColor(255,0,0,128); 00061 } 00062 00063 if ( !bAnimatedInRealtime ) 00064 { 00065 if ( bDBCWnd ) 00066 Log(self@"CWndOnTrigger Tick Disabling Tick"); 00067 Disable('Tick'); 00068 return; 00069 } 00070 00071 00072 // if ( bDBCWnd ) 00073 // Log(self@"CWndOnTrigger Tick"); 00074 HideUnwanted(); 00075 MyHudForFX.PlayerOwner.Pawn.bOwnerNoSee = !bSeeXIII; 00076 00077 switch (iPhase) 00078 { 00079 Case 1: 00080 MyHudForFX.CWndMat.Update( iA, iB, CWndSizeX, CWndSizeY, cam.location, rotator(Tar.location+vTarOffset-cam.location), CWndFOV, FilterColor,HighLight,FilterTexture ); 00081 break; 00082 } 00083 RestoreUnwanted(); 00084 } 00085 00086 //_____________________________________________________________________________ 00087 event Timer() 00088 { 00089 if (iPhase==0) 00090 MyHudForFX.EraseLowPriorityCartoonWindows(); 00091 iPhase ++; 00092 if ( bDBCWnd ) 00093 Log(self@"CWndOnTrigger Timer "$IPhase); 00094 HideUnwanted(); 00095 MyHudForFX.PlayerOwner.Pawn.bOwnerNoSee = !bSeeXIII; 00096 00097 switch (iPhase) 00098 { 00099 Case 1: 00100 MyHudForFX.CWndMat.AllocRect( CWndSizeX, CWndSizeY, iA,iB ); 00101 if ( bDBCWnd ) 00102 Log("Displaying window coords="$iA@""$iB@" for image"$CWndSizeX$"x"$CWndSizeY); 00103 00104 if ( (iA >= 0) && (iB >= 0) ) 00105 { 00106 MyHudForFX.CWndMat.Update( iA, iB, CWndSizeX, CWndSizeY, Cam.location, rotator(Tar.location+vTarOffset-Cam.location), CWndFOV, FilterColor,HighLight,FilterTexture ); 00107 LastCWnd = MyHudForFX.HudWnd; 00108 if ( LastCWnd != none ) // memorize last CWnd to include OverLayMsg to the new one 00109 { 00110 while ( LastCWnd.NextHudWnd != none ) 00111 { 00112 LastCWnd = LastCWnd.NextHudWnd; 00113 } 00114 } 00115 AddWnd(vScrPosX, vScrPosY, CWndSizeX, CWndSizeY, MyHudForFX.CWndMat, iA, iB, CWndSizeX, CWndSizeY, CWndDuration, false); 00116 00117 if ( LastCWnd == none ) // Add OverLayMsg 00118 MyHudForFX.HudWnd.OverlayMsg = OverlayMsg; 00119 else 00120 LastCWnd.NextHudWnd.OverlayMsg = OverlayMsg; 00121 00122 if ( OnoTexture != none ) 00123 { 00124 CWndBorderColor = class'canvas'.static.MakeColor(0,0,0,0); 00125 AddWnd(OnoPosX, OnoPosY, OnoSize, OnoSizeY, OnoTexture, 0, 0, OnoTexture.USize, OnoTexture.VSize, CWndDuration, false); 00126 CWndBorderColor = default.CWndBorderColor; 00127 } 00128 if ( CWndSoundType > 0 ) 00129 Owner.PlaySound(hCWndSound, CWndSoundType); 00130 00131 if (bAnimatedInRealtime) 00132 SetTimer(AnimationDuration, false); 00133 else 00134 SetTimer(0.1, false); 00135 } 00136 else 00137 { 00138 bAnimatedInRealtime = false; 00139 LOG(" Cancel CWND Creation for Cam="$Cam@"Tar="$Tar); 00140 SetTimer(0.1, false); 00141 } 00142 break; 00143 Case 2: 00144 Destroy(); 00145 break; 00146 } 00147 RestoreUnwanted(); 00148 } 00149 00150 00151 defaultproperties 00152 { 00153 }