public virtual void UpdateItems(GameTime gameTime) { for (int i = Inventory.Count - 1; i >= 0; i--) { Item Item = Inventory[i]; if (Item is IUsableUpdatableItem UsableUpdatableItem) { if (UsableUpdatableItem.IsCurrentlyInUse) { UsableUpdatableItem.Update(gameTime, this); } else if (UsableUpdatableItem.HasRecentUsageJustFinished) { UsableUpdatableItem.RemainingUsages--; UsableUpdatableItem.HasRecentUsageJustFinished = false; ItemsCurrentlyInUse.Remove(UsableUpdatableItem); if (UsableUpdatableItem.RemainingUsages == 0) { DeleteItem((Item)UsableUpdatableItem); } } continue; } if (Item is IUpdatableItem UpdatableItem) { UpdatableItem.Update(gameTime, this); } } }
private void ScreenshotProc() { while (!_disposed) { if (_waitersCount == 0) { _requestScreenshot.WaitOne(); _requestScreenshot.Reset(); } using (var tracker = new TimeTracker()) { var s = _screener.Execute(); ScreenshotTime = tracker.ElapsedSec; _screenshotItem.Update(new BImage(s)); } } }
/// <summary> /// Lisää ja poistaa jonossa olevat elementit sekä kutsuu niiden /// Update-metodia. /// </summary> /// <param name="time"></param> public void Update(Time time) { bool changed = UpdateChanges(); foreach (var item in items) { if (item is Destroyable DestroyableItem && DestroyableItem.IsDestroyed) { Remove(item); } if (item is Updatable UpdatableItem && UpdatableItem.IsUpdated) { UpdatableItem.Update(time); } } changed |= UpdateChanges(); if (changed) { OnChanged(); } }