public void Update(float deltaTime) { if (Player == null || !ShowCharacterInformation) { ammoLabel.Visible = false; healthLabel.Visible = false; hitmarker.Visible = false; crosshair.Visible = false; if (Player == null) { return; } } else { ammoLabel.Visible = true; healthLabel.Visible = true; hitmarker.Visible = true; crosshair.Visible = true; } ItemManager itemManager = Player.ItemManager; if (itemManager.SelectedItem != null) { if (itemManager.SelectedItem.Type.HasFlag(ItemType.Weapon)) { ammoLabel.Visible = ShowCharacterInformation; Weapon wep = (Weapon)itemManager.SelectedItem; if (wep.Type.HasFlag(ItemType.Gun)) { Gun gun = (Gun)wep; if (!gun.IsReloading) { int storedAmmo = GlobalNetwork.IsConnected ? gun.ServerStoredAmmo : gun.StoredAmmo; int mag = GlobalNetwork.IsConnected ? gun.ServerMag : gun.CurrentMag; ammoLabel.Text = string.Format("{0}/{1} | {2}", mag, gun.GunConfig.MagazineSize, storedAmmo); } else { int storedAmmo = GlobalNetwork.IsConnected ? gun.ServerStoredAmmo : gun.StoredAmmo; ammoLabel.Text = string.Format("R/{0} | {1}", gun.GunConfig.MagazineSize, storedAmmo); } } else if (wep.Type.HasFlag(ItemType.Grenade)) { ammoLabel.Text = string.Format("Gx{0}", Player.NumGrenades); } else if (wep.Type.HasFlag(ItemType.Spade)) { ammoLabel.Text = string.Format("Bx{0}", Player.NumBlocks); } else if (wep.Type.HasFlag(ItemType.MelonLauncher)) { ammoLabel.Text = string.Format("Mx{0}", Player.NumMelons); } else { ammoLabel.Text = string.Format("--/-- | x--"); } } else if (itemManager.SelectedItem.Type.HasFlag(ItemType.BlockItem)) { BlockItem bitem = (BlockItem)itemManager.SelectedItem; string text = string.Format("Bx{0}", Player.NumBlocks); ammoLabel.Text = text; ammoLabel.Visible = ShowCharacterInformation; } else { ammoLabel.Visible = false; } } else { ammoLabel.Visible = false; } healthLabel.Text = string.Format("Health: {0}", (int)Math.Max(Math.Ceiling(Player.Health), 0)); for (int i = feed.Count - 1; i >= 0; i--) { FeedItem item = feed[i]; item.TimeLeft -= deltaTime; if (item.TimeLeft < 0) { feed.RemoveAt(i); area.RemoveTopLevel(item); for (int k = 0; k < feed.Count; k++) { feed[k].ShiftY(-25); } } } foreach (Vector3 vec in Player.HitFeedbackPositions) { hitIndications.Add(new HitIndication(vec)); } Player.HitFeedbackPositions.Clear(); Camera camera = Camera.Active; Matrix4 mat = camera.ViewMatrix; for (int i = hitIndications.Count - 1; i >= 0; i--) { HitIndication indication = hitIndications[i]; indication.TimeLeft -= deltaTime; if (indication.TimeLeft <= 0) { hitIndications.RemoveAt(i); } } if (Player.HitPlayer) { Player.HitPlayer = false; hitmarkerTime = HITMARKER_LIFETIME; } hitmarker.Visible = hitmarkerTime > 0; if (hitmarkerTime > 0) { hitmarkerTime -= deltaTime; } //if (Input.GetControlDown("ToggleGameIcons") && (Player == null || Player.AllowUserInput)) // showGameItems = !showGameItems; if (gamemode != null) { CTFGamemode ctf = gamemode as CTFGamemode; if (ctf != null) { if (Player != null && ctf.OurPlayerHasIntel && !hasIntel) { intelInHand.Image.Color = world.GetTeamColor(Player.Team == Team.A ? Team.B : Team.A); hasIntel = true; intelInHand.Position.Y.Offset = 100; intelPickedUpNotification.TextColor.A = 255; intelPickedUpNotification.TextShadowColor = new Color(0, 0, 0, 156); intelInHand.Visible = true; intelPickedUpNotification.Visible = true; intelPickupBeforeFadeTime = INTEL_NOTIFICATION_BEFORE_FADE_DELAY; intelPickupAfterFadeTime = INTEL_NOTIFICATION_AFTER_FADE_DELAY; showingIntelAnimation = true; } else if ((Player == null || !ctf.OurPlayerHasIntel) && hasIntel) { hasIntel = false; intelInHand.Visible = false; intelPickedUpNotification.Visible = false; intelInHand.Position.Y.Offset = 100; } else if (hasIntel && showingIntelAnimation) { if (intelPickupBeforeFadeTime > 0) { intelPickupBeforeFadeTime -= deltaTime; } else { if (intelPickupAfterFadeTime > 0) { intelPickupAfterFadeTime -= deltaTime; float i = intelPickupAfterFadeTime / INTEL_NOTIFICATION_AFTER_FADE_DELAY; intelPickedUpNotification.TextColor.A = (byte)(i * 255); intelPickedUpNotification.TextShadowColor = new Color(intelPickedUpNotification.TextShadowColor.Value, ((byte)MathHelper.Clamp(i * 255 - 128, 0, 255))); intelInHand.Position.Y.Offset = 25 + (75 * i); } else { intelPickedUpNotification.Visible = false; intelInHand.Position.Y.Offset = 25; showingIntelAnimation = false; } } } } } }