anniversarymusicsource.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. enum EAnniversaryMusicStates
  2. {
  3. INVALID,
  4. LIGHT,
  5. INTENSE
  6. }
  7. class AnniversaryMusicSource : Building
  8. {
  9. private const string SOUND_INTENSE = "AnniversaryMusic_Intense_SoundSet";
  10. private const string SOUND_LIGHT = "AnniversaryMusic_Light_SoundSet";
  11. #ifndef SERVER
  12. protected EffectSound m_LightAmbientSound;
  13. protected EffectSound m_IntenseAmbientSound;
  14. #endif
  15. protected int m_MusicState;
  16. protected int m_MusicStateLocal;
  17. void AnniversaryMusicSource()
  18. {
  19. m_MusicState = EAnniversaryMusicStates.INVALID;
  20. m_MusicStateLocal = EAnniversaryMusicStates.INVALID;
  21. RegisterNetSyncVariableInt("m_MusicState", 0, EnumTools.GetEnumSize(EAnniversaryMusicStates));
  22. }
  23. override void EEDelete(EntityAI parent)
  24. {
  25. super.EEDelete(parent);
  26. #ifndef SERVER
  27. if (m_LightAmbientSound)
  28. SEffectManager.DestroyEffect(m_LightAmbientSound);
  29. if (m_IntenseAmbientSound)
  30. SEffectManager.DestroyEffect(m_IntenseAmbientSound);
  31. #endif
  32. }
  33. override void OnVariablesSynchronized()
  34. {
  35. super.OnVariablesSynchronized();
  36. if (m_MusicState != m_MusicStateLocal)
  37. {
  38. m_MusicStateLocal = m_MusicState;
  39. #ifndef SERVER
  40. UpdateMusic();
  41. #endif
  42. }
  43. }
  44. void UpdateMusic()
  45. {
  46. #ifndef SERVER
  47. if (!m_IntenseAmbientSound)
  48. m_IntenseAmbientSound = SEffectManager.CreateSound(SOUND_INTENSE, GetPosition(), 0.5, 0.5, false);
  49. if (!m_LightAmbientSound)
  50. m_LightAmbientSound = SEffectManager.CreateSound(SOUND_LIGHT, GetPosition(), 0.5, 0.5, true);
  51. #endif
  52. switch (m_MusicState)
  53. {
  54. case EAnniversaryMusicStates.LIGHT:
  55. PlayLight();
  56. break;
  57. case EAnniversaryMusicStates.INTENSE:
  58. PlayIntense();
  59. break;
  60. default:
  61. StopAllMusic();
  62. break;
  63. }
  64. }
  65. //just sync
  66. void SetIntenseServer()
  67. {
  68. m_MusicState = EAnniversaryMusicStates.INTENSE;
  69. SetSynchDirty();
  70. }
  71. //just sync
  72. void SetLightServer()
  73. {
  74. m_MusicState = EAnniversaryMusicStates.LIGHT;
  75. SetSynchDirty();
  76. }
  77. //just sync
  78. void SetInvalidServer()
  79. {
  80. m_MusicState = EAnniversaryMusicStates.INVALID;
  81. SetSynchDirty();
  82. }
  83. void PlayIntense()
  84. {
  85. #ifndef SERVER
  86. m_LightAmbientSound.SoundStop();
  87. m_IntenseAmbientSound.SoundPlay();
  88. #endif
  89. }
  90. void PlayLight()
  91. {
  92. #ifndef SERVER
  93. m_IntenseAmbientSound.SoundStop();
  94. m_LightAmbientSound.SoundPlay();
  95. #endif
  96. }
  97. void StopAllMusic()
  98. {
  99. #ifndef SERVER
  100. m_IntenseAmbientSound.SoundStop();
  101. m_LightAmbientSound.SoundStop();
  102. #endif
  103. }
  104. }