public void Update(long ms) { float seconds = ms / 1500f; secondTimer += seconds; while (secondTimer >= 1f) { secondTimer -= 1f; } if (keyboardInfoProvider.KeyPressCallback == null) { keyboardInfoProvider.KeyPressCallback = OnKeyPressed; } // Don't update hero selection if one of them is walking to or from the campfire var canSelect = heroRenderInfo.All(x => x.Value.Stance == eHeroStance.Idle || x.Value.Stance == eHeroStance.IdleSelected || x.Value.Stance == eHeroStance.Selected); foreach (var hero in Enum.GetValues(typeof(eHero)).Cast <eHero>()) { UpdateHeroSelectionHover(hero, ms, canSelect); } if (selectedHero.HasValue && heroRenderInfo.All(x => x.Value.Stance == eHeroStance.Idle)) { selectedHero = null; } exitButton.Update(); okButton.Update(); characterNameTextBox.Update(ms); }