protected override void OnUpdate(GameTime gameTime) { if (Player.HealthManager.Health != Health) { var hearts = Player.HealthManager.Health * (10d / Player.HealthManager.MaxHealth); var ceil = (int)Math.Ceiling(hearts); for (int i = 0; i < Hearts.Length; i++) { HeartValue value = HeartValue.Full; if (i < ceil) { value = HeartValue.Full; } else if (i == ceil - 1) { value = HeartValue.Half; } else { value = HeartValue.None; } Hearts[i].Set(value); } } base.OnUpdate(gameTime); }
protected override void OnUpdate(GameTime gameTime) { if (Player.Hunger != Hunger) { Hunger = Player.Hunger; var hearts = Player.Hunger * (10d / Player.MaxHunger); bool isRounded = (hearts % 1 == 0); var ceil = isRounded ? (int)hearts : (int)Math.Ceiling(hearts); for (int i = 0; i < Hungers.Length; i++) { HeartValue value = HeartValue.Full; if ((i + 1) <= ceil) { value = HeartValue.Full; if (!isRounded && (i + 1) == ceil) { value = HeartValue.Half; } } else { value = HeartValue.None; } Hungers[^ (i + 1)].Set(value);
public void Set(HeartValue value) { Texture.IsVisible = true; switch (value) { case HeartValue.Full: Texture.Texture = GuiRenderer.GetTexture(GuiTextures.HealthHeart); break; case HeartValue.Half: Texture.Texture = GuiRenderer.GetTexture(GuiTextures.HealthHalfHeart); break; case HeartValue.None: Texture.IsVisible = false; break; } }