Пример #1
0
        /// <summary>
        /// Display a tip to a given player
        /// </summary>
        /// <param name="tips"></param>
        private void Display(PlayerTips tips)
        {
            tips.active = true;
            Message message = tips.queue.Dequeue();

            if (!tips.player.IsConnected)
            {
                gameTips.Remove(tips);
                return;
            }

            tips.player?.SendConsoleCommand("gametip.hidegametip");
            tips.player?.SendConsoleCommand("gametip.showgametip", message.text);
            timer.Once(message.duration, () =>
            {
                tips.player?.SendConsoleCommand("gametip.hidegametip");
                if (tips.queue.Count > 0)
                {
                    Display(tips);
                }
                else
                {
                    gameTips.Remove(tips);
                }
            });
        }
Пример #2
0
        /// <summary>
        /// Broadcast a game tip to all players online
        /// </summary>
        /// <param name="message"></param>
        /// <param name="duration"></param>
        /// <param name="mandatory"></param>
        void BroadcastGameTip(string message, float duration = 5f, bool mandatory = false)
        {
            if (string.IsNullOrEmpty(message))
            {
                return;
            }

            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                if (!mandatory && data.blacklist.Contains(player.userID))
                {
                    continue;
                }

                PlayerTips playerTips;
                if ((playerTips = gameTips.Find(x => x.player == player)) != null)
                {
                    playerTips.queue.Enqueue(new Message()
                    {
                        text = message, duration = duration
                    });
                }
                else
                {
                    gameTips.Add(playerTips = new PlayerTips()
                    {
                        player = player
                    });
                    playerTips.queue.Enqueue(new Message()
                    {
                        text = message, duration = duration
                    });
                }

                if (!playerTips.active)
                {
                    Display(playerTips);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Create a new game tip
        /// </summary>
        /// <param name="player"></param>
        /// <param name="message"></param>
        /// <param name="duration"></param>
        /// <param name="mandatory"></param>
        void ShowGameTip(BasePlayer player, string message, float duration = 5f, bool mandatory = false)
        {
            if (player == null || string.IsNullOrEmpty(message))
            {
                return;
            }
            if (!mandatory && data.blacklist.Contains(player.userID))
            {
                return;
            }

            PlayerTips tip;

            if ((tip = gameTips.Find(x => x.player == player)) != null)
            {
                tip.queue.Enqueue(new Message()
                {
                    text = message, duration = duration
                });
            }
            else
            {
                gameTips.Add(tip = new PlayerTips()
                {
                    player = player
                });
                tip.queue.Enqueue(new Message()
                {
                    text = message, duration = duration
                });
            }

            if (!tip.active)
            {
                Display(tip);
            }
        }