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 }
public override void HandleEffectSequenceFinished(EffectSequenceID effectSeqID) { base.HandleEffectSequenceFinished(effectSeqID); if (CurrentState == FacilityState.Dead) { // OPTIMIZE avoids 'method not found' warning spam UponEffectSequenceFinished(effectSeqID); } }
void Dead_UponEffectSequenceFinished(EffectSequenceID effectSeqID) { LogEvent(); DestroyMe(); }
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)); } }
public override void HandleEffectSequenceFinished(EffectSequenceID effectID) { base.HandleEffectSequenceFinished(effectID); if (CurrentState == BaseState.Dead) { // TEMP avoids 'method not found' warning spam UponEffectSequenceFinished(effectID); } }
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 }
protected void UponEffectSequenceFinished(EffectSequenceID effectSeqID) { RelayToCurrentState(effectSeqID); }
/// <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. }
/// <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 }