public override void StartEffect(EffectSequenceID effectSeqID) {
            //D.Log("{0}.{1}.StartEffect({2}) called.", _effectsClient.DebugName, typeof(MortalEffectsManager).Name, effectSeqID.GetValueName());
            if (effectSeqID == EffectSequenceID.Dying) {
                // separate explosionSFXGo from ItemGo so destruction of ItemGo does not destroy explosionSFX before it is completed
                GameObject explosionSFXGo = _generalFactory.MakeAutoDestruct3DAudioSFXInstance("ExplosionSFX", _effectsClient.Position);
                References.SFXManager.PlaySFX(explosionSFXGo, SfxGroupID.Explosions);

                _explosionEffect = _myPoolMgr.Spawn(EffectID.Explosion, _effectsClient.Position);
                _explosionEffect.effectFinishedOneShot += (source, args) => {
                    _effectsClient.HandleEffectSequenceFinished(effectSeqID);
                };
                _explosionEffect.Play(_effectsClient.Radius);
                return;
            }
            base.StartEffect(effectSeqID); // currently just calls HandleEffectFinished
        }
示例#2
0
 public override void HandleEffectSequenceFinished(EffectSequenceID effectSeqID) {
     base.HandleEffectSequenceFinished(effectSeqID);
     if (CurrentState == FacilityState.Dead) {   // OPTIMIZE avoids 'method not found' warning spam
         UponEffectSequenceFinished(effectSeqID);
     }
 }
示例#3
0
 void Dead_UponEffectSequenceFinished(EffectSequenceID effectSeqID) {
     LogEvent();
     DestroyMe();
 }
示例#4
0
 public override void HandleEffectSequenceFinished(EffectSequenceID effectID) {
     // complete override reqd to call OnEffectFinished in the right sequence
     switch (effectID) {
         case EffectSequenceID.Dying:
             _parentPlanet.RemoveMoon(this);  // remove from planet list just before planet checks whether this is last moon
             OnEffectSeqFinished(effectID); // if the planet is causing the moons death, event causes planet to check whether this is the last moon
             if (!_isParentPlanetDying) {
                 // if the planet dying is the cause of this moons death, than the planet will destroy all the game objects
                 DestroyMe();
             }
             break;
         case EffectSequenceID.Hit:
             OnEffectSeqFinished(effectID);
             break;
         case EffectSequenceID.None:
         default:
             throw new NotImplementedException(ErrorMessages.UnanticipatedSwitchValue.Inject(CurrentState));
     }
 }
示例#5
0
 public override void HandleEffectSequenceFinished(EffectSequenceID effectID) {
     base.HandleEffectSequenceFinished(effectID);
     if (CurrentState == BaseState.Dead) {   // TEMP avoids 'method not found' warning spam
         UponEffectSequenceFinished(effectID);
     }
 }
示例#6
0
 protected void Dead_UponEffectSequenceFinished(EffectSequenceID effectSeqID) {
     LogEvent();
     D.AssertEqual(EffectSequenceID.Dying, effectSeqID);
     DestroyMe(onCompletion: () => DestroyApplicableParents(5F));  // HACK long wait so last element can play death effect
 }
示例#7
0
 protected void UponEffectSequenceFinished(EffectSequenceID effectSeqID) { RelayToCurrentState(effectSeqID); }
示例#8
0
 /// <summary>
 /// Stops the effect(s) associated with <c>effectID</c>. 
 /// </summary>
 /// <param name="effectSeqID">The effect identifier.</param>
 public virtual void StopEffect(EffectSequenceID effectSeqID) {
     //TODO This default version does nothing.
 }
示例#9
0
 /// <summary>
 /// Starts the effect(s) associated with <c>effectID</c>. This default
 /// version does nothing except complete the handshake by replying
 /// to the client with OnEffectFinished().
 /// </summary>
 /// <param name="effectSeqID">The effect identifier.</param>
 public virtual void StartEffect(EffectSequenceID effectSeqID) {
     //D.Log("{0}.{1}.StartEffect({2}) called.", _effectsClient.DebugName, typeof(EffectsManager).Name, effectSeqID.GetValueName());
     _effectsClient.HandleEffectSequenceFinished(effectSeqID);
 }
 public override void StartEffect(EffectSequenceID effectSeqID) {
     if (effectSeqID == EffectSequenceID.Dying) {
         // no effects for now 
     }
     base.StartEffect(effectSeqID); // currently just calls HandleEffectFinished
 }