public void Trigger() { if (onLinkClicked == null) { if (Href.StartsWith("hotkey://")) { api.Input.GetHotKeyByCode(Href.Substring("hotkey://".Length))?.Handler?.Invoke(null); } else { string[] parts = Href.Split(new string[] { "://" }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length > 0 && api.LinkProtocols != null && api.LinkProtocols.ContainsKey(parts[0])) { api.LinkProtocols[parts[0]].Invoke(this); return; } if (parts.Length > 0) { if (parts[0].StartsWith("http") || parts[0].StartsWith("https")) { api.Gui.OpenLink(Href); } } } } else { onLinkClicked.Invoke(this); } }
/// <summary> /// Handles the mouse button press while the mouse is on this button. /// </summary> /// <param name="api">The client API</param> /// <param name="args">The mouse event arguments.</param> public override void OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) { base.OnMouseDownOnElement(api, args); On = !On; handler?.Invoke(On); api.Gui.PlaySound("toggleswitch"); }
public override void OnMouseDown(MouseEvent args) { foreach (var val in BoundsPerLine) { if (val.PointInside(args.X, args.Y)) { onStackClicked?.Invoke(slot.Itemstack); } } }
/// <summary> /// Fades out the current track. /// </summary> /// <param name="seconds">The duration of the fade out in seconds.</param> /// <param name="onFadedOut">What to have happen after the track has faded out.</param> public virtual void FadeOut(float seconds, Common.Action onFadedOut = null) { loading = false; if (Sound != null && IsActive) { Sound.FadeOut(seconds, (sound) => { sound.Dispose(); Sound = null; onFadedOut?.Invoke(); }); return; } }
/// <summary> /// Fades out the current track. /// </summary> /// <param name="seconds">The duration of the fade out in seconds.</param> /// <param name="onFadedOut">What to have happen after the track has faded out.</param> public void FadeOut(float seconds, Common.Action onFadedOut = null) { loading = false; if (Sound != null && IsActive) { Sound.FadeOut(seconds, (sound) => { sound.Dispose(); Sound = null; onFadedOut?.Invoke(); }); // Half cool down when interupted SetCooldown(0.5f); return; } // Full cooldown when stopped normally SetCooldown(1f); }
public override void OnMouseDown(MouseEvent args) { GridRecipe recipe = GridRecipes[curItemIndex]; foreach (var val in BoundsPerLine) { if (val.PointInside(args.X, args.Y)) { int x = (int)((args.X - val.X) / (size + 3)); int y = (int)((args.Y - val.Y) / (size + 3)); CraftingRecipeIngredient ingred = recipe.GetElementInGrid(y, x, recipe.resolvedIngredients, recipe.Width); if (ingred == null) { return; } onStackClicked?.Invoke(ingred.ResolvedItemstack); } } }
/// <summary> /// Fade out the track to end. /// </summary> /// <param name="seconds">Seconds to fade out across.</param> /// <param name="onFadedOut">Delegate to have happen once the fade-out is done.</param> public void FadeOut(float seconds, Common.Action onFadedOut = null) { bool wasInterupted = false; foreach (MusicTrackPart part in Parts) { if (part.IsPlaying) { part.Sound.FadeOut(seconds, (sound) => { sound.Dispose(); part.Sound = null; onFadedOut?.Invoke(); }); wasInterupted = true; } } // When naturally stopped, give the player a break from the cave sounds (3-10 minutes) if (!wasInterupted) { cooldownUntilMs = capi.World.ElapsedMilliseconds + (long)(1000 * (3 * 60 + rand.NextDouble() * 7 * 60)); } }
public override void OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) { base.OnMouseDownOnElement(api, args); OnClick?.Invoke(); }