public IState OnStateUpdate() { if (owner.Exploding) { owner.locations = owner.GetAdjacentLocation(owner.Transform.Position); owner.GetComponent <AnimationRenderer>().Enabled = false; for (int i = 0; i < owner.locations.Count; i++) { owner.explosionList[i].Transform.Position = owner.locations[i]; owner.explosionList[i].Active = true; } if (oneTimeSpawn) { foreach (Explosion item in owner.explosionList) { Spawn(item); } oneTimeSpawn = false; } owner.Exploding = false; } if (timer.IsActive) { timer.Update(false); } if (!timer.IsActive) { #region Explosions recycle for (int i = 0; i < owner.explosionList.Count; i++) { owner.explosionList[i].Active = false; owner.explosionList[i].Reset(); } #endregion owner.Active = false; GlobalFactory <Bomb> .Recycle(typeof(Bomb), owner); // Pool<Bomb>.RecycleInstance // ( // owner, x => // { // x.Active = false; // } // ); OnStateExit(); Next.OnStateEnter(); return(Next); } return(this); }
private static void SetupObjectPools() { Pool <Bomb> .Register(() => new Bomb(), 100); Pool <Explosion> .Register(() => new Explosion(), 100); //Pool<AI>.Register(() => new AI(), 100); GlobalFactory <Bomb> .RegisterPool(typeof(Bomb), () => new Bomb()); //powerups //Pool<PowerUp>.Register(() => new PowerUp(), 50); }
public IState OnStateUpdate() { if (Input.IsKeyDown(KeyCode.Space) && !timer.IsActive) { Bomb bomb = GlobalFactory <Bomb> .Get(typeof(Bomb)); bomb.Active = true; bomb.GetComponent <AnimationRenderer>().Enabled = true; bomb.Transform.Position = new Vector2((int)(owner.Transform.Position.X + 0.5f), (int)(owner.Transform.Position.Y + 0.5f)); //AudioManager.PlayClip(AudioType.SOUND_DROP); if (owner.CurrentExplosion == 0) { bomb.IsBig = false; } else { bomb.IsBig = true; } if (firstTimeSpawn) { GameObject.Spawn(bomb); Console.WriteLine("first spawn time of bomb"); firstTimeSpawn = false; } timer.Start(true); } //Maybe no restart if (timer.IsActive) { timer.Update(true); } return(this); }
private void ChooseBomb() { if (!IsBig) { for (int i = 0; i < littleExplosion; i++) { Explosion toAdd = GlobalFactory <Explosion> .Get(typeof(Explosion)); toAdd.Active = false; explosionList.Add(toAdd); } } else { for (int i = 0; i < bigExplosion; i++) { Explosion toAdd = GlobalFactory <Explosion> .Get(typeof(Explosion)); toAdd.Active = false; explosionList.Add(toAdd); } } }