Exemplo n.º 1
0
        public static void OpenAllLootboxes(string username)
        {
            string message = $"@{username} you open all your lootboxes and discover: ";

            LootboxComponent lootboxComponent = Current.Game.GetComponent <LootboxComponent>();

            int lootboxQuantity = lootboxComponent.HowManyLootboxesDoesViewerHave(username);

            int coinReward = 0;

            for (int i = 0; i < lootboxQuantity; i++)
            {
                coinReward += Verse.Rand.Range(Lootbox_Settings.RandomCoinRange.min, Lootbox_Settings.RandomCoinRange.max);
            }

            message += coinReward + " coins";

            Viewer viewer = Viewers.GetViewer(username);

            viewer.GiveViewerCoins(coinReward);

            lootboxComponent.ViewersLootboxes[viewer.username] = 0;

            Toolkit.client.SendMessage(message, true);
        }
Exemplo n.º 2
0
        public override void ParseMessage(ITwitchMessage twitchMessage)
        {
            // If it is a whisper, do not update viewer details
            if (twitchMessage.ChatMessage == null)
            {
                return;
            }

            Viewer             viewer    = Viewers.GetViewer(twitchMessage.Username);
            GameComponentPawns component = Current.Game.GetComponent <GameComponentPawns>();

            ToolkitSettings.ViewerColorCodes[twitchMessage.Username.ToLower()] = twitchMessage.ChatMessage.ColorHex;

            if (component.HasUserBeenNamed(twitchMessage.Username))
            {
                component.PawnAssignedToUser(twitchMessage.Username).story.hairColor = twitchMessage.ChatMessage.Color;
            }

            if (twitchMessage.ChatMessage.IsModerator && !viewer.mod)
            {
                viewer.SetAsModerator();
            }

            if (twitchMessage.ChatMessage.IsSubscriber && !viewer.IsSub)
            {
                viewer.subscriber = true;
            }

            if (twitchMessage.ChatMessage.IsVip && !viewer.IsVIP)
            {
                viewer.vip = true;
            }
        }
        public override void ParseCommand(IRCMessage msg)
        {
            Viewer viewer = Viewers.GetViewer(msg.User);

            if (IsViewerOwedLootboxesToday(viewer.username.ToLower()))
            {
                Log.Warning("Awarding boxes");
                AwardViewerDailyLootboxes(viewer.username.ToLower());
            }

            if (msg.Message.StartsWith("!openlootbox") && Commands.AllowCommand(msg.Channel))
            {
                if (HowManyLootboxesDoesViewerHave(viewer.username) > 0)
                {
                    Lootbox.OpenLootbox(viewer.username.ToLower());
                }
                else
                {
                    Toolkit.client.SendMessage($"@{viewer.username} you do not have any lootboxes.", true);
                }
            }

            if (msg.Message.StartsWith("!lootboxes") && Commands.AllowCommand(msg.Channel))
            {
                int amount = HowManyLootboxesDoesViewerHave(viewer.username);

                string pluralBoxes = amount > 1 ? "es" : "";

                string instructions = amount > 1 ? " Use !openlootbox" + (ToolkitSettings.UseSeparateChatRoom ? " in the separate chat room." : "") : "";

                Toolkit.client.SendMessage($"@{viewer.username} you currently have {amount} lootbox{pluralBoxes}.{instructions}", true);
            }

            if (msg.Message.StartsWith("!givelootbox") && (Viewer.IsModerator(viewer.username) || viewer.username.ToLower() == ToolkitSettings.Channel.ToLower()))
            {
                string[] command = msg.Message.Split(' ');

                if (command.Length < 2)
                {
                    return;
                }

                int amount = 1;

                if (command.Length > 2)
                {
                    int.TryParse(command[2], out amount);
                }

                string pluralBoxes = amount > 1 ? "es" : "";

                command[1] = command[1].Replace("@", "");

                Viewer giftee = Viewers.GetViewer(command[1]);

                GiveViewerLootbox(giftee.username, amount);

                Toolkit.client.SendMessage($"@{giftee.username} you have received {amount} lootbox{pluralBoxes} from {viewer.username}.", Commands.SendToChatroom(msg.Channel));
            }
        }
Exemplo n.º 4
0
        public override void RunCommand([NotNull] ITwitchMessage twitchMessage)
        {
            var worker = ArgWorker.CreateInstance(CommandFilter.Parse(twitchMessage.Message).Skip(1));

            if (!worker.TryGetNextAsInt(out int amount, 1))
            {
                return;
            }

            List <string> viewers = Viewers.ParseViewersFromJsonAndFindActiveViewers();

            if (viewers == null || viewers.Count <= 0)
            {
                return;
            }

            var count = 0;

            foreach (string username in viewers)
            {
                Viewers.GetViewer(username).GiveViewerCoins(amount);
                count++;
            }

            twitchMessage.Reply("TKUtils.GiveAll".LocalizeKeyed(amount.ToString("N0"), count.ToString("N0")));
        }
Exemplo n.º 5
0
        public override void RunCommand(ITwitchMessage twitchMessage)
        {
            Viewer viewer = Viewers.GetViewer(twitchMessage.Username);

            GameComponentPawns pawnComponent = Current.Game.GetComponent <GameComponentPawns>();

            if (pawnComponent.HasUserBeenNamed(twitchMessage.Username) || pawnComponent.UserInViewerQueue(twitchMessage.Username))
            {
                return;
            }

            if (ToolkitSettings.ChargeViewersForQueue)
            {
                if (viewer.GetViewerCoins() < ToolkitSettings.CostToJoinQueue)
                {
                    TwitchWrapper.SendChatMessage($"@{twitchMessage.Username} you do not have enough coins to purchase a ticket, it costs {ToolkitSettings.CostToJoinQueue} and you have {viewer.GetViewerCoins()}.");
                    return;
                }

                viewer.TakeViewerCoins(ToolkitSettings.CostToJoinQueue);
            }

            pawnComponent.AddViewerToViewerQueue(twitchMessage.Username);
            TwitchWrapper.SendChatMessage($"@{twitchMessage.Username} you have purchased a ticket and are in the queue!");
        }
Exemplo n.º 6
0
        void OnPrivMsg(IRCMessage message)
        {
            Store_Logger.LogString(message.Message);
            Store_Logger.LogString($"connected: {Toolkit.client.client.Connected} - {DateTime.Now.ToShortTimeString()}");

            //if (activeChatWindow != null && !message.Message.StartsWith("!") && message.User != ToolkitSettings.Username)
            //{
            //    if ((_voteActive && !int.TryParse(message.Message[0].ToString(), out int result)) || !_voteActive)
            //    {
            //        activeChatWindow.AddMessage(
            //            message.Message,
            //            message.User,
            //            (message.Parameters.ContainsKey("color")) ? message.Parameters["color"].Remove(0, 1) : Viewer.GetViewerColorCode(message.User)
            //        );
            //    }

            //}

            Store_Logger.LogString("Checking command");

            if (Helper.ModActive)
            {
                Commands.CheckCommand(message);
            }

            Store_Logger.LogString("Checking if is vote");

            if (VoteHandler.voteActive && int.TryParse(message.Message[0].ToString(), out int voteKey))
            {
                VoteHandler.currentVote.RecordVote(Viewers.GetViewer(message.User).id, voteKey - 1);
            }
        }
Exemplo n.º 7
0
        private void ProcessCoinReward()
        {
            int currentMinute = GetCurrentMinute();

            if (currentMinute > 0 && currentMinute % 5 == 0 && _lastRefreshMinute != currentMinute)
            {
                Viewers.RefreshViewers();
                _lastRefreshMinute = currentMinute;
                TkUtils.Logger.Debug($"Refreshed viewers @ {DateTime.Now:T}");
            }

            if (currentMinute <= _lastMinute || currentMinute < 1)
            {
                return;
            }

            _rewardPeriodTracker += 1;
            _lastMinute           = currentMinute;

            if (_rewardPeriodTracker < ToolkitSettings.CoinInterval)
            {
                return;
            }

            Task.Run(() => Viewers.AwardViewersCoins());
            _rewardPeriodTracker = 0;
            TkUtils.Logger.Debug($"Awarded viewers coins @ {DateTime.Now:T}");
        }
Exemplo n.º 8
0
        void OnPrivMsg(TwitchIRCMessage message)
        {
            //if (activeChatWindow != null && !message.Message.StartsWith("!") && message.User != ToolkitSettings.Username)
            //{
            //    if ((_voteActive && !int.TryParse(message.Message[0].ToString(), out int result)) || !_voteActive)
            //    {
            //        activeChatWindow.AddMessage(
            //            message.Message,
            //            message.User,
            //            (message.Parameters.ContainsKey("color")) ? message.Parameters["color"].Remove(0, 1) : Viewer.GetViewerColorCode(message.User)
            //        );
            //    }

            //}

            message.Viewer = TwitchViewer.GetTwitchViewer(message.User);

            if (message.Viewer == null)
            {
                Helper.Log(message.User.CapitalizeFirst() + " tried to run a command but is not registed.");
                return;
            }

            if (Helper.ModActive)
            {
                CommandsHandler.CheckCommand(message);
            }

            if (VoteHandler.voteActive && int.TryParse(message.Message[0].ToString(), out int voteKey))
            {
                VoteHandler.currentVote.RecordVote(Viewers.GetViewer(message.User).id, voteKey - 1);
            }
        }
Exemplo n.º 9
0
        public override void RunCommand(IRCMessage message)
        {
            try
            {
                string[] command = message.Message.Split(' ');

                if (command.Length < 3)
                {
                    return;
                }

                string target = command[1].Replace("@", "");
                int    amount;
                bool   isNumeric = int.TryParse(command[2], out amount);
                if (isNumeric)
                {
                    Viewer targeted = Viewers.GetViewer(target);
                    targeted.SetViewerKarma(amount);
                    Toolkit.client.SendMessage($"@{message.User}" + Helper.ReplacePlaceholder("TwitchToolkitSetKarma".Translate(), viewer: targeted.username, karma: amount.ToString()), CommandsHandler.SendToChatroom(message));
                }
            }
            catch (InvalidCastException e)
            {
                Helper.Log("Invalid Check User Command " + e.Message);
            }
        }
Exemplo n.º 10
0
 public void Leave()
 {
     if (Viewers.Contains(StateAgent.CurrentViewer))
     {
         Viewers.Remove(StateAgent.CurrentViewer);
     }
 }
Exemplo n.º 11
0
        private void CheckUniqueAccounts()
        {
            var accounts = new List <Account>();

            accounts.AddRange(Players.Select(acc => acc.SelectedAccount));
            accounts.AddRange(Viewers.Select(acc => acc.SelectedAccount));
            if (Showman != null)
            {
                accounts.Add(Showman.SelectedAccount);
            }

            for (int i = 0; i < accounts.Count; i++)
            {
                if (accounts[i] == null || accounts[i].Name == Constants.FreePlace)
                {
                    continue;
                }

                for (int j = i + 1; j < accounts.Count; j++)
                {
                    if (accounts[i] == accounts[j])
                    {
                        unique = accounts[i].Name;
                        SetErrorMessage();
                        return;
                    }
                }
            }

            unique = null;
            SetErrorMessage();
        }
Exemplo n.º 12
0
        public override void ParseCommand(ChatMessage msg)
        {
            Viewer             viewer    = Viewers.GetViewer(msg.Username);
            GameComponentPawns component = Current.Game.GetComponent <GameComponentPawns>();

            ToolkitSettings.ViewerColorCodes[msg.Username.ToLower()] = msg.ColorHex;

            if (component.HasUserBeenNamed(msg.Username))
            {
                component.PawnAssignedToUser(msg.Username).story.hairColor = msg.Color;
            }

            if (msg.IsModerator && !viewer.mod)
            {
                viewer.SetAsModerator();
            }

            if (msg.IsSubscriber && !viewer.IsSub)
            {
                viewer.subscriber = true;
            }

            if (msg.IsVip && !viewer.IsVIP)
            {
                viewer.vip = true;
            }
        }
Exemplo n.º 13
0
        private static bool ParseJsonResponse(RequestState Request)
        {
            string json      = Request.jsonString;
            string offsetVar = Regex.Match(Request.urlCalled, "\\A?offset=[^&]*").ToString();
            int    offset    = Convert.ToInt32(offsetVar.Replace("offset=", ""));

            Helper.Log("Streamlabs Request: " + json + " offset: " + offset);
            var v = JSON.Parse(json);

            for (int i = 0; i < 25; i++)
            {
                if (i > v["_total"].AsInt - offset - 1)
                {
                    continue;
                }

                Viewer viewer = Viewers.GetViewer(v["users"][i]["username"]);
                viewer.SetViewerCoins(v["users"][i]["points"].AsInt);
            }
            if (offset + 25 < v["_total"].AsInt)
            {
                offset += 25;
                WebRequest_BeginGetResponse.Main($"https://api.streamelements.com/kappa/v2/points/{ToolkitSettings.AccountID}/alltime?offset={offset}&page=1", new Func <RequestState, bool>(ParseJsonResponse));
            }
            return(true);
        }
Exemplo n.º 14
0
        private static void OpenViewerDetailsFor(string name)
        {
            var viewers = new Window_Viewers();

            viewers.SelectViewer(Viewers.GetViewer(name));
            Find.WindowStack.Add(viewers);
        }
Exemplo n.º 15
0
        private static bool Prefix([CanBeNull] CommandDriver __instance, ITwitchMessage twitchMessage)
        {
            if (__instance == null)
            {
                return(true);
            }

            if (!TkSettings.StoreState)
            {
                return(false);
            }

            Viewer         viewer  = Viewers.GetViewer(twitchMessage.Username);
            ITwitchMessage message = twitchMessage;

            if (!__instance.command.defName.Equals("Buy"))
            {
                message = twitchMessage.WithMessage($"!{CommandDefOf.Buy.command} {twitchMessage.Message.Substring(1)}");
            }

            if (message !.Message.Split(' ').Length < 2)
            {
                return(false);
            }

            Purchase_Handler.ResolvePurchase(viewer, message);

            return(false);
        }
Exemplo n.º 16
0
        public void CountVotes()
        {
            foreach (int key in optionsKeys)
            {
                voteCounts[key] = 0;
            }
            foreach (KeyValuePair <int, int> viewerVote in viewerVotes)
            {
                Viewer viewerById = Viewers.GetViewerById(viewerVote.Key);

                int voteCount = 1;

                if (viewerById.IsSub)
                {
                    voteCount += ToolkitSettings.SubscriberExtraVotes;
                }
                else if (viewerById.IsVIP)
                {
                    voteCount += ToolkitSettings.VIPExtraVotes;
                }
                else if (viewerById.mod)
                {
                    voteCount += ToolkitSettings.ModExtraVotes;
                }

                voteCounts[viewerVote.Value] += voteCount;
            }
        }
Exemplo n.º 17
0
        public Window_ViewerEditProp(EditPropsActions action, EditProp prop, Viewer viewer = null)
        {
            this.action        = action;
            this.prop          = prop;
            this.doCloseButton = true;

            Viewers.RefreshViewers();

            if (viewer == null)
            {
                allViewers   = true;
                viewerBuffer = "<b>All Viewers</b>";
            }
            else
            {
                allViewers   = false;
                this.viewer  = viewer;
                viewerBuffer = "<b>" + viewer.username + "</b>";
            }

            if (viewer != null && action == EditPropsActions.Set)
            {
                if (prop == EditProp.Coins)
                {
                    amount = viewer.GetViewerCoins();
                }
                else if (prop == EditProp.Karma)
                {
                    amount = viewer.GetViewerKarma();
                }
            }
        }
Exemplo n.º 18
0
        private static bool Prefix([CanBeNull] ITwitchMessage twitchMessage)
        {
            if (twitchMessage?.ChatMessage == null)
            {
                return(false);
            }

            Viewer viewer    = Viewers.GetViewer(twitchMessage.Username);
            var    component = Current.Game.GetComponent <GameComponentPawns>();

            ToolkitSettings.ViewerColorCodes[twitchMessage.Username.ToLowerInvariant()] = twitchMessage.ChatMessage.ColorHex;

            if (TkSettings.HairColor && component.HasUserBeenNamed(twitchMessage.Username) &&
                ColorUtility.TryParseHtmlString(twitchMessage.ChatMessage.ColorHex, out Color hairColor))
            {
                Pawn pawn = component.PawnAssignedToUser(twitchMessage.Username);

                if (pawn?.story != null)
                {
                    pawn.story.hairColor = hairColor;
                }
            }

            viewer.mod        = twitchMessage.HasBadges("moderator", "broadcaster", "global_mod", "staff");
            viewer.subscriber = twitchMessage.HasBadges("subscriber", "founder");
            viewer.vip        = twitchMessage.HasBadges("vip");

            return(false);
        }
Exemplo n.º 19
0
        /// <summary>
        ///     Remove player from the game
        /// </summary>
        public void RemovePlayer(PokerPlayer player)
        {
            if (player != null)
            {
                //null these here so we know that one of the key players for the next game has left
                if (DealerButton == player)
                {
                    DealerButton = null;
                }
                if (SmallBlind == player)
                {
                    SmallBlind = null;
                }
                if (BigBlind == player)
                {
                    BigBlind = null;
                }

                //Move to view list so that they can continue viewing the game
                if (ActivePlayers.Contains(player))
                {
                    Viewers.Add(player.Owner);
                }

                Players.Remove(player);

                player.LeaveGame(this);
            }
        }
Exemplo n.º 20
0
        protected override void HandleMessage(DiscordWebSocketMessage <DiscordMediaOpcode> message)
        {
            if (message.Opcode == DiscordMediaOpcode.SSRCUpdate)
            {
                SSRCUpdate ssrc = message.Data.ToObject <SSRCUpdate>();

                if (!Viewers.Contains(ssrc.UserId))
                {
                    List <ulong> viewers = Viewers.ToList();
                    viewers.Add(ssrc.UserId);
                    Viewers = viewers;
                    OnUserConnected?.Invoke(this, ssrc.UserId);
                }
            }
            else if (message.Opcode == DiscordMediaOpcode.UserDisconnect)
            {
                ulong userId = message.Data.ToObject <JObject>().Value <ulong>("user_id");

                List <ulong> viewers = Viewers.ToList();
                if (viewers.Remove(userId))
                {
                    Viewers = viewers;
                }

                OnUserDisconnected?.Invoke(this, userId);
            }
        }
Exemplo n.º 21
0
        /// <summary>
        /// 添加项目查看者
        /// </summary>
        public void AddViewer(int userId, string userName, string avator)
        {
            var viewer = new ProjectViewer()
            {
                UserId      = userId,
                UserName    = userName,
                Avatar      = avator,
                CreatedTime = DateTime.Now
            };

            //如果不在查看列表中,需添加
            if (!Viewers.Any(b => b.UserId == userId))
            {
                Viewers.Add(viewer);

                //添加查看项目
                AddDomainEvent(new ProjectViewedEvent
                {
                    Company       = this.Company,
                    Introduction  = this.Introduction,
                    Avatar        = this.Avatar,
                    ProjectViewer = viewer
                });
            }
        }
Exemplo n.º 22
0
        private void OnNewUserFound(object sender, OnNewUserFoundArgs e)
        {
            foreach (var user in e.Users)
            {
                if (Viewers.Any(v => String.Compare(v.TwitchID, user.Id) == 0)) // check if user is already in List
                {
                    return;
                }

                var IsUserSubscriber = TwitchLib.TwitchAPI.Subscriptions.v3.ChannelHasUserSubscribed(Core.AivaClient.Instance.Channel, user.Name).Result;

                Application.Current.Dispatcher.Invoke(() => {
                    Viewers.Add(
                        new Models.Chat.Viewers {
                        Name     = user.Name,
                        TwitchID = user.Id,
                        IsSub    = IsUserSubscriber != null ? true : false,
                        Type     = IsUserSubscriber != null ? nameof(Models.Chat.SortDirectionListView.Subscriber)
                                                : nameof(Models.Chat.SortDirectionListView.Viewer)
                                   //IsMod = will be filled from the event "ModeratoersReceived"
                    });
                });
            }

            // Get Channel Moderators to fire "ModeratorsReceived"
            Core.AivaClient.Instance.AivaTwitchClient.GetChannelModerators(Core.AivaClient.Instance.Channel);
        }
Exemplo n.º 23
0
        public override void RunCommand(IRCMessage message)
        {
            Viewer viewer = Viewers.GetViewer(message.User);

            GameComponentPawns pawnComponent = Current.Game.GetComponent <GameComponentPawns>();

            if (pawnComponent.HasUserBeenNamed(message.User) || pawnComponent.UserInViewerQueue(message.User))
            {
                return;
            }

            if (ToolkitSettings.ChargeViewersForQueue)
            {
                if (viewer.GetViewerCoins() < ToolkitSettings.CostToJoinQueue)
                {
                    Toolkit.client.SendMessage($"@{message.User} you do not have enough coins to purchase a ticket, it costs {ToolkitSettings.CostToJoinQueue} and you have {viewer.GetViewerCoins()}.", CommandsHandler.SendToChatroom(message));
                    return;
                }

                viewer.TakeViewerCoins(ToolkitSettings.CostToJoinQueue);
            }

            pawnComponent.AddViewerToViewerQueue(message.User);
            Toolkit.client.SendMessage($"@{message.User} you have purchased a ticket and are in the queue!", CommandsHandler.SendToChatroom(message));
        }
Exemplo n.º 24
0
        public override void ParseCommand(IRCMessage msg)
        {
            foreach (KeyValuePair <string, string> pair in msg.Parameters)
            {
                switch (pair.Key)
                {
                case "color":
                    if (pair.Value.Length > 6)
                    {
                        string colorCode = pair.Value.Remove(0, 1);
                        ToolkitSettings.ViewerColorCodes[msg.User.ToLower()] = colorCode;
                    }
                    break;

                case "mod":
                    bool modValue = int.TryParse(pair.Value, out int modStatus);
                    if (modValue && modStatus == 1)
                    {
                        Viewers.GetViewer(msg.User).mod = true;
                    }
                    break;

                case "subscriber":
                    bool subValue = int.TryParse(pair.Value, out int subStatus);
                    if (subValue && subStatus == 1)
                    {
                        Viewers.GetViewer(msg.User).subscriber = true;
                    }
                    break;
                }
            }
        }
Exemplo n.º 25
0
 public int CalculateAverageViewers()
 {
     if (Viewers.Any())
     {
         return(Viewers.Sum() / Viewers.Count);
     }
     return(0);
 }
 internal async Task AddViewer(Viewer viewer)
 {
     Viewers.Add(viewer);
     if (Started)
     {
         await viewer.Start(Session.GetData());
     }
 }
        public override void RunCommand(IRCMessage message)
        {
            Viewer viewer = Viewers.GetViewer(message.User);
            Pawn   pawn   = GetPawnIfAllowed(message);

            if (pawn == null)
            {
                return;
            }

            string output = $"@{viewer.username} {pawn.Name.ToStringShort.CapitalizeFirst()}'s body: ";

            if (pawn.health.hediffSet.hediffs?.Count > 0)
            {
                IEnumerable <IGrouping <BodyPartRecord, Hediff> > visibleHediffGroupsInOrder = VisibleHediffGroupsInOrder(pawn);
                foreach (IGrouping <BodyPartRecord, Hediff> diffs in visibleHediffGroupsInOrder)
                {
                    if (diffs.Key == null)
                    {
                        output += $"{"WholeBody".Translate()} - ";
                    }
                    else
                    {
                        output += $"{diffs.Key.LabelCap} - ";
                    }
                    foreach (IGrouping <int, Hediff> hediffGroup in diffs.GroupBy(h => h.UIGroupKey))
                    {
                        int numBleeding = 0;
                        foreach (Hediff hediff in hediffGroup)
                        {
                            if (hediff.Bleeding)
                            {
                                ++numBleeding;
                            }
                        }
                        int hediffCount = hediffGroup.Count();
                        output += hediffGroup.First().LabelCap;
                        if (hediffCount != 1)
                        {
                            output += " x" + hediffCount.ToString();
                        }
                        if (numBleeding > 0)
                        {
                            output += " (bleeding x" + numBleeding + ")";
                        }
                        output += ", ";
                    }
                    output  = output.Substring(0, output.Length - 2);
                    output += " | ";
                }
                if (visibleHediffGroupsInOrder.Count() > 1)
                {
                    output = output.Substring(0, output.Length - 3);
                }
            }

            SendWrappedOutputText(output, message);
        }
        private void set_default()
        {
            Assembly = null;
            Class    = "SobekCM.Library.HTML.Search_Results_HtmlSubwriter";
            Viewers.Clear();


            // Add all the standard viewers here!!
        }
        public override void GameComponentTick()
        {
            if (Find.TickManager.TicksGame % 1000 != 0)
            {
                return;
            }

            FindRandomWorldPawnForViewer(Viewers.GetViewer("hodlhodl"));
        }
Exemplo n.º 30
0
 public Window_Viewers()
 {
     Viewers.RefreshViewers();
     if (Current.Game != null)
     {
         this.component = Current.Game.GetComponent <GameComponentPawns>();
     }
     this.doCloseButton = true;
 }