Terraria 1.4.0.5 Source Code
This commit is contained in:
commit
05205f009e
1059 changed files with 563450 additions and 0 deletions
122
GameContent/PlayerEyeHelper.cs
Normal file
122
GameContent/PlayerEyeHelper.cs
Normal file
|
@ -0,0 +1,122 @@
|
|||
// Decompiled with JetBrains decompiler
|
||||
// Type: Terraria.GameContent.PlayerEyeHelper
|
||||
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
||||
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
||||
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
||||
|
||||
namespace Terraria.GameContent
|
||||
{
|
||||
public struct PlayerEyeHelper
|
||||
{
|
||||
private PlayerEyeHelper.EyeState _state;
|
||||
private int _timeInState;
|
||||
private const int TimeToActDamaged = 20;
|
||||
|
||||
public int EyeFrameToShow { get; private set; }
|
||||
|
||||
public void Update(Player player)
|
||||
{
|
||||
this.SetStateByPlayerInfo(player);
|
||||
this.UpdateEyeFrameToShow(player);
|
||||
++this._timeInState;
|
||||
}
|
||||
|
||||
private void UpdateEyeFrameToShow(Player player)
|
||||
{
|
||||
PlayerEyeHelper.EyeFrame eyeFrame1 = PlayerEyeHelper.EyeFrame.EyeOpen;
|
||||
switch (this._state)
|
||||
{
|
||||
case PlayerEyeHelper.EyeState.NormalBlinking:
|
||||
int num = this._timeInState % 240 - 234;
|
||||
eyeFrame1 = num < 4 ? (num < 2 ? (num < 0 ? PlayerEyeHelper.EyeFrame.EyeOpen : PlayerEyeHelper.EyeFrame.EyeHalfClosed) : PlayerEyeHelper.EyeFrame.EyeClosed) : PlayerEyeHelper.EyeFrame.EyeHalfClosed;
|
||||
break;
|
||||
case PlayerEyeHelper.EyeState.InStorm:
|
||||
eyeFrame1 = this._timeInState % 120 - 114 < 0 ? PlayerEyeHelper.EyeFrame.EyeHalfClosed : PlayerEyeHelper.EyeFrame.EyeClosed;
|
||||
break;
|
||||
case PlayerEyeHelper.EyeState.InBed:
|
||||
PlayerEyeHelper.EyeFrame eyeFrame2 = this.DoesPlayerCountAsModeratelyDamaged(player) ? PlayerEyeHelper.EyeFrame.EyeHalfClosed : PlayerEyeHelper.EyeFrame.EyeOpen;
|
||||
this._timeInState = player.sleeping.timeSleeping;
|
||||
eyeFrame1 = this._timeInState >= 60 ? (this._timeInState >= 120 ? PlayerEyeHelper.EyeFrame.EyeClosed : PlayerEyeHelper.EyeFrame.EyeHalfClosed) : eyeFrame2;
|
||||
break;
|
||||
case PlayerEyeHelper.EyeState.JustTookDamage:
|
||||
eyeFrame1 = PlayerEyeHelper.EyeFrame.EyeClosed;
|
||||
break;
|
||||
case PlayerEyeHelper.EyeState.IsModeratelyDamaged:
|
||||
case PlayerEyeHelper.EyeState.IsTipsy:
|
||||
case PlayerEyeHelper.EyeState.IsPoisoned:
|
||||
eyeFrame1 = this._timeInState % 120 - 100 < 0 ? PlayerEyeHelper.EyeFrame.EyeHalfClosed : PlayerEyeHelper.EyeFrame.EyeClosed;
|
||||
break;
|
||||
case PlayerEyeHelper.EyeState.IsBlind:
|
||||
eyeFrame1 = PlayerEyeHelper.EyeFrame.EyeClosed;
|
||||
break;
|
||||
}
|
||||
this.EyeFrameToShow = (int) eyeFrame1;
|
||||
}
|
||||
|
||||
private void SetStateByPlayerInfo(Player player)
|
||||
{
|
||||
if (player.blackout || player.blind)
|
||||
{
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.IsBlind);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this._state == PlayerEyeHelper.EyeState.JustTookDamage && this._timeInState < 20)
|
||||
return;
|
||||
if (player.sleeping.isSleeping)
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.InBed, player.itemAnimation > 0);
|
||||
else if (this.DoesPlayerCountAsModeratelyDamaged(player))
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.IsModeratelyDamaged);
|
||||
else if (player.tipsy)
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.IsTipsy);
|
||||
else if (player.poisoned || player.venom)
|
||||
{
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.IsPoisoned);
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flag = player.ZoneSandstorm || player.ZoneSnow && Main.IsItRaining;
|
||||
if (player.behindBackWall)
|
||||
flag = false;
|
||||
if (flag)
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.InStorm);
|
||||
else
|
||||
this.SwitchToState(PlayerEyeHelper.EyeState.NormalBlinking);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchToState(
|
||||
PlayerEyeHelper.EyeState newState,
|
||||
bool resetStateTimerEvenIfAlreadyInState = false)
|
||||
{
|
||||
if (this._state == newState && !resetStateTimerEvenIfAlreadyInState)
|
||||
return;
|
||||
this._state = newState;
|
||||
this._timeInState = 0;
|
||||
}
|
||||
|
||||
private bool DoesPlayerCountAsModeratelyDamaged(Player player) => (double) player.statLife <= (double) player.statLifeMax2 * 0.25;
|
||||
|
||||
public void BlinkBecausePlayerGotHurt() => this.SwitchToState(PlayerEyeHelper.EyeState.JustTookDamage, true);
|
||||
|
||||
private enum EyeFrame
|
||||
{
|
||||
EyeOpen,
|
||||
EyeHalfClosed,
|
||||
EyeClosed,
|
||||
}
|
||||
|
||||
private enum EyeState
|
||||
{
|
||||
NormalBlinking,
|
||||
InStorm,
|
||||
InBed,
|
||||
JustTookDamage,
|
||||
IsModeratelyDamaged,
|
||||
IsBlind,
|
||||
IsTipsy,
|
||||
IsPoisoned,
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue