feverblurstate.c 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. class FeverBlurSymptom extends SymptomBase
  2. {
  3. Material m_MatGauss;
  4. float m_BlurDuration;
  5. float m_BlurStrength;
  6. float m_EffectTime;
  7. float m_EffectStartTime;
  8. float m_Time;
  9. protected PPERequester_FeverEffects m_Requester;
  10. const float BLUR_STRENGTH_MIN = 0.15;
  11. const float BLUR_STRENGTH_MAX = 0.25;
  12. const int BLUR_DURATION_TIME_MIN = 1.5;
  13. const int BLUR_DURATION_TIME_MAX = 2.5;
  14. const int MIN_TIME_BETWEEN_EFFECTS = 25.0;
  15. const int MAX_TIME_BETWEEN_EFFECTS = 35.0;
  16. //this is just for the Symptom parameters set-up and is called even if the Symptom doesn't execute, don't put any gameplay code in here
  17. override void OnInit()
  18. {
  19. m_SymptomType = SymptomTypes.SECONDARY;
  20. m_Priority = 0;
  21. m_ID = SymptomIDs.SYMPTOM_FEVERBLUR;
  22. m_DestroyOnAnimFinish = true;
  23. m_IsPersistent = false;
  24. m_SyncToClient = true;
  25. if ( !GetGame().IsDedicatedServer() )
  26. {
  27. Class.CastTo(m_Requester,PPERequesterBank.GetRequester(PPERequester_FeverEffects));
  28. }
  29. }
  30. //!gets called every frame
  31. override void OnUpdateServer(PlayerBase player, float deltatime)
  32. {
  33. //int i = 1 + 1;
  34. }
  35. override void OnUpdateClient(PlayerBase player, float deltatime)
  36. {
  37. m_Time += deltatime;
  38. if ( m_EffectStartTime <= 0 )
  39. {
  40. m_EffectStartTime = Math.RandomFloatInclusive(MIN_TIME_BETWEEN_EFFECTS, MAX_TIME_BETWEEN_EFFECTS);
  41. m_BlurDuration = Math.RandomFloatInclusive(BLUR_DURATION_TIME_MIN, BLUR_DURATION_TIME_MAX);
  42. m_BlurStrength = Math.RandomFloat(BLUR_STRENGTH_MIN, BLUR_STRENGTH_MAX);
  43. //PrintString("m_BlurDuration=" +m_BlurDuration.ToString());
  44. }
  45. if ( m_EffectStartTime > 0 && m_Time > m_EffectStartTime )
  46. {
  47. m_EffectTime += deltatime / m_BlurDuration;
  48. float cos_value = Math.Sin(m_EffectTime * Math.PI);
  49. float val = cos_value * m_BlurStrength;
  50. //Print(val);
  51. m_Requester.SetFeverIntensity(val);
  52. //PrintString("cos=" +cos_value.ToString());
  53. if ( m_EffectTime >= 1 )
  54. {
  55. m_EffectTime = 0;
  56. m_EffectStartTime = -1;
  57. m_Time = 0;
  58. }
  59. }
  60. }
  61. //!gets called once on an Symptom which is being activated
  62. override void OnGetActivatedServer(PlayerBase player)
  63. {
  64. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
  65. }
  66. override void OnGetActivatedClient(PlayerBase player)
  67. {
  68. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetActivated", m_Player.ToString());
  69. }
  70. override void OnGetDeactivatedServer(PlayerBase player)
  71. {
  72. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
  73. }
  74. //!only gets called once on an active Symptom that is being deactivated
  75. override void OnGetDeactivatedClient(PlayerBase player)
  76. {
  77. m_Requester.Stop();
  78. if (LogManager.IsSymptomLogEnable()) Debug.SymptomLog("n/a", this.ToString(), "n/a", "OnGetDeactivated", m_Player.ToString());
  79. }
  80. }