public bool Execute(ArraySegment <string> arguments, ICommandSender sender, out string response) { if (sender.CheckPermission("images.ibc") && arguments.Array != null && arguments.Array.Length > 1 && (arguments.Array[1].Trim().ToLower() == "reset" || arguments.Array[1].Trim().ToLower() == "none")) { foreach (var player in Player.List) { player.ClearBroadcasts(); } response = "Reset broadcasts."; return(true); } HandleCommandObject obj = Util.HandleCommand(arguments, sender, out response, true, "ibroadcast", "images.ibc"); if (obj == null) { return(true); } Timing.KillCoroutines(Images.Singleton.BroadcastHandle); Images.Singleton.BroadcastHandle = Timing.RunCoroutine(ShowBroadcast(obj)); Images.Singleton.Coroutines.Add(Images.Singleton.BroadcastHandle); response = "Creating image and displaying broadcast."; return(true); }
private IEnumerator <float> ShowHint(HandleCommandObject obj) { List <string> frames = new List <string>(); var startTime = DateTime.UtcNow; var handle = new CoroutineHandle(); try { handle = Util.LocationToText(obj.image["location"], text => { if (DateTime.UtcNow - startTime > TimeSpan.FromSeconds(obj.duration)) { return; } var newText = text.Replace("\\n", "\n"); frames.Add(newText); foreach (var player in Player.List) { player.ShowHint(newText, 2f); } }, obj.image["name"].Trim().ToLower(), obj.image["isURL"] == "true", obj.scale, false, .4f, obj.compress); Images.Singleton.Coroutines.Add(handle); } catch (Exception e) { Log.Error(e); } yield return(Timing.WaitUntilDone(handle)); var cur = 0; if (frames.Count <= 1) { if (frames.Count == 1) { foreach (var player in Player.List) { player.ShowHint(frames[0], obj.duration - 2f); } } yield break; } while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(obj.duration)) { foreach (var player in Player.List) { player.ShowHint(frames[cur % frames.Count], 2f); } yield return(Timing.WaitForSeconds(.4f)); cur++; } }
private IEnumerator <float> ShowBroadcast(HandleCommandObject obj) { yield return(Timing.WaitForSeconds(0.1f)); try { var handle = Util.LocationToText(obj.image["location"], text => { foreach (var player in Player.List) { player.Broadcast((ushort)obj.duration, text); } }, obj.image["name"].Trim().ToLower(), obj.image["isURL"] == "true", obj.scale, true, obj.fps); Images.Singleton.Coroutines.Add(handle); } catch (Exception e) { Log.Error(e); } }
private IEnumerator <float> ShowIntercom(HandleCommandObject obj) { var frames = new List <string>(); var handle = new CoroutineHandle(); try { handle = Util.LocationToText(obj.image["location"], text => { Images.Singleton.IntercomText = text.Replace("\\n", "\n"); ReferenceHub.HostHub.GetComponent <Intercom>().CustomContent = Images.Singleton.IntercomText; frames.Add(Images.Singleton.IntercomText); }, obj.image["name"].Trim().ToLower(), obj.image["isURL"] == "true", obj.scale, true, 1 / obj.fps); Images.Singleton.Coroutines.Add(handle); } catch (Exception e) { Log.Error(e); } yield return(Timing.WaitUntilDone(handle)); var cur = 0; if (frames.Count <= 1) { yield break; } while (true) { Images.Singleton.IntercomText = frames[cur % frames.Count]; ReferenceHub.HostHub.GetComponent <Intercom>().CustomContent = Images.Singleton.IntercomText; yield return(Timing.WaitForSeconds(1 / obj.fps)); cur++; } }
public bool Execute(ArraySegment <string> arguments, ICommandSender sender, out string response) { if (sender.CheckPermission("images.iintercom") && arguments.Array != null && arguments.Array.Length > 1 && (arguments.Array[1].Trim().ToLower() == "reset" || arguments.Array[1].Trim().ToLower() == "none")) { ReferenceHub.HostHub.GetComponent <Intercom>().CustomContent = ""; Images.Singleton.IntercomText = null; response = "Reset intercom."; return(true); } HandleCommandObject obj = Util.HandleCommand(arguments, sender, out response, false, "iintercom", "images.iintercom"); if (obj == null) { return(true); } Timing.KillCoroutines(Images.Singleton.IntercomHandle); Images.Singleton.IntercomHandle = Timing.RunCoroutine(ShowIntercom(obj)); Images.Singleton.Coroutines.Add(Images.Singleton.IntercomHandle); response = "Successfully set intercom text."; return(true); }