protected override void OnUpdate(float delta) { _waveState?.Update(delta); try { _asteroids.ForEach(asteroid => asteroid.Collision(_ship)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } try { _medics.ForEach(medic => { medic.Collision(_ship); medic.Update(delta); }); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } try { _bullets.ForEach(bullet => { _asteroids.ForEach(asteroid => asteroid.Collision(bullet)); bullet.Update(delta); }); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } _asteroids.RemoveAll(asteroid => asteroid.IsDead); _bullets.RemoveAll(bullet => bullet.IsDead); _medics.RemoveAll(medic => medic.IsDead); }
public override void Update(float totalSeconds) { base.Update(totalSeconds); try { _asteroids.ForEach(asteroid => asteroid.Collision(_ship)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } try { _medics.ForEach(medic => { medic.Collision(_ship); medic.Update(totalSeconds); }); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } try { _bullets.ForEach(bullet => { _asteroids.ForEach(asteroid => asteroid.Collision(bullet)); bullet.Update(totalSeconds); }); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } _asteroids.RemoveAll(asteroid => asteroid.IsDead); _bullets.RemoveAll(bullet => bullet.IsDead); _medics.RemoveAll(medic => medic.IsDead); }
public override void Draw(Graphics graphics, ThreadList <IDrawable> drawList, Action <Graphics> onDraw) { drawList.RemoveAll(DeleteIfDead); try { drawList.ForEach(drawable => drawable.Draw(graphics)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } onDraw(graphics); }
public override void Update(float delta, ThreadList <IUpdatable> updateList, Action <float> onUpdate) { updateList.RemoveAll(DeleteIfDead); try { updateList.ForEach(updatable => updatable.Update(delta)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } onUpdate(delta); }
// Перебераем весь список, но оставляем пользователю возможность // переопределить метод и обновлять данные как ему надо public virtual void Update(float totalSeconds) { if (!_loaded) { return; } _toUpdate.RemoveAll(DeleteIfDead); try { _toUpdate.ForEach(updatable => updatable.Update(totalSeconds)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } }
// Перебераем весь список, но оставляем пользователю возможность // переопределить метод и рисовать как ему надо public virtual void Draw(Graphics graphics) { if (!_loaded) { return; } // Пока не знаю как правильно блокировать вне потока // поэтому изменение вместо коллекции отправляю массив из этой коллекции _toDraw.RemoveAll(DeleteIfDead); try { _toDraw.ForEach(drawable => drawable.Draw(graphics)); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); } }