示例#1
0
        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);
        }
示例#2
0
        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++;
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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++;
            }
        }
示例#5
0
        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);
        }