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); } } }
public ScreenshotSource(IntPtr hWnd) { _screener = new Screener(hWnd); _screenshotItem = new UpdatableItem <BImage>(BImageExtentions.CopyThreadSafty); Task.Factory.StartNew(ScreenshotProc); }
/// <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(); } }