public override bool OnTileCollide(Vector2 old) { // if (!freeze) if (projState == C4State.Airborne) { // freeze = true; projState = C4State.Frozen; positionToFreeze = new Vector2(projectile.position.X, projectile.position.Y); projectile.position.X = positionToFreeze.X; projectile.position.Y = positionToFreeze.Y; projectile.velocity.X = 0; projectile.velocity.Y = 0; //projectile.rotation = 0; } return(false); }
public override void PostAI() { switch (projState) { case C4State.Airborne: if (projectile.owner == Main.myPlayer && c4Owner == null) { c4Owner = Main.player[projectile.owner].GetModPlayer <ExtraExplosivesPlayer>(); } break; case C4State.Frozen: projectile.position = positionToFreeze; projectile.velocity = Vector2.Zero; if (indicatorSoundInstance == null) { indicatorSoundInstance = Main.PlaySound(indicatorSound, (int)projectile.Center.X, (int)projectile.Center.Y); } else if (indicatorSoundInstance.State != SoundState.Playing) // else if needed to avoid a NullReferenceException { indicatorSoundInstance.Play(); } if (c4Owner != null && c4Owner.detonate) { projState = C4State.Primed; projectile.ai[1] = 55; Main.PlaySound(primedSound, (int)projectile.position.X, (int)projectile.position.Y); } break; case C4State.Primed: projectile.ai[1]--; if (projectile.ai[1] < 1) { projState = C4State.Exploding; } break; case C4State.Exploding: projectile.Kill(); break; } }
private void StateTransition(C4State state) { switch (state) { case C4State.Wire: displayText.text = "cut wires"; break; case C4State.Numpad: displayText.text = "? ? ? ?"; break; } this.c4State = state; }