Exemple #1
0
        public static PopupAlertMessage AvatarPurchaseSuccessFeedback(AvatarMetadata avatarMetadata)
        {
            List <List <SpriteText> > stMatrix;
            List <SpriteText>         titleSTList, messageSTList1, messageSTList2;

            titleSTList = new List <SpriteText>();
            titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)Language.PopupAlertMessageAvatarPurchaseSuccessTitleIcon, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            titleSTList.Add(new SpriteText(FontTextType.Consolas11, Language.PopupAlertMessageAvatarPurchaseSuccessTitle, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)Language.PopupAlertMessageAvatarPurchaseSuccessTitleIcon, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            messageSTList1 = new List <SpriteText>();
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage11, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, avatarMetadata.Gender + " - " + avatarMetadata.AvatarCategory + " - " + avatarMetadata.Name, Color.LightSalmon, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage12, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            messageSTList2 = new List <SpriteText>();
            messageSTList2.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage21, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            stMatrix = new List <List <SpriteText> >();
            stMatrix.Add(messageSTList1);
            stMatrix.Add(messageSTList2);

            CompositeSpriteText title, message;

            title   = CompositeSpriteText.CreateCompositeSpriteText(titleSTList, Orientation.Horizontal, Alignment.Left, default);
            message = CompositeSpriteText.CreateCompositeSpriteText(stMatrix, Alignment.Left, Vector2.Zero + new Vector2(0, 20), new Vector2(0, 0));

            PopupAlertMessage popup = new PopupAlertMessage(title, message, AlertMessageType.Accept);

            popup.OnConfirm = (x) => PopupHandler.Remove(popup);
            return(popup);
        }
        public static PopupAlertMessage GameServerDisconnection()
        {
            List <List <SpriteText> > stMatrix;
            List <SpriteText>         titleSTList, messageSTList1, messageSTList2;

            titleSTList = new List <SpriteText>();
            titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)FontAwesomeIconIndex.Exclamation_Triangle, Color.Red, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));
            titleSTList.Add(new SpriteText(FontTextType.Consolas11, Language.PopupAlertMessageTitleError, Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));
            titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)FontAwesomeIconIndex.Exclamation_Triangle, Color.Red, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));

            messageSTList1 = new List <SpriteText>();
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageServerDisconnection, Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageGameServer, Color.CadetBlue, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, ".", Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));

            messageSTList2 = new List <SpriteText>();
            messageSTList2.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageGameServerDisconnection, Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));

            stMatrix = new List <List <SpriteText> >();
            stMatrix.Add(messageSTList1);
            stMatrix.Add(messageSTList2);

            CompositeSpriteText title, message;

            title   = CompositeSpriteText.CreateCompositeSpriteText(titleSTList, Orientation.Horizontal, Alignment.Left, default);
            message = CompositeSpriteText.CreateCompositeSpriteText(stMatrix, Alignment.Left, Vector2.Zero + new Vector2(0, 20), new Vector2(0, 0));

            PopupAlertMessage popup = new PopupAlertMessage(title, message, AlertMessageType.Cancel);

            popup.OnClose = (x) => { SceneHandler.Instance.RequestSceneChange(SceneType.ServerSelection, TransitionEffectType.RotatingRectangles); };

            return(popup);
        }
Exemple #3
0
        public static PopupAlertMessage LeaveGame()
        {
            List <List <SpriteText> > stMatrix;
            List <SpriteText>         titleSTList, messageSTList1, messageSTList2;

            titleSTList = new List <SpriteText>();
            titleSTList.Add(new SpriteText(FontTextType.Consolas11, Language.PopupAlertMessageLeaveGameTitle, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            messageSTList1 = new List <SpriteText>();
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageLeaveGameMessage11, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageLeaveGameMessage12, Color.LightSalmon, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageLeaveGameMessage13, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            messageSTList2 = new List <SpriteText>();
            messageSTList2.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageLeaveGameMessage21, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase));

            stMatrix = new List <List <SpriteText> >();
            stMatrix.Add(messageSTList1);
            stMatrix.Add(messageSTList2);

            CompositeSpriteText title, message;

            title   = CompositeSpriteText.CreateCompositeSpriteText(titleSTList, Orientation.Horizontal, Alignment.Left, default);
            message = CompositeSpriteText.CreateCompositeSpriteText(stMatrix, Alignment.Left, Vector2.Zero + new Vector2(0, 20), new Vector2(0, 0));

            PopupAlertMessage popup = new PopupAlertMessage(title, message);

            popup.OnConfirm = (x) => { SceneHandler.Instance.CloseGame(); };
            return(popup);
        }
Exemple #4
0
        /// <summary>
        /// This constructor is made for nameplates used on the in-game scene
        /// </summary>
        /// <param name="mobile"></param>
        public Nameplate(Mobile mobile)
        {
            Player = mobile.Owner;

            Mobile    = mobile;
            Alignment = Alignment.Center;

            Player player = mobile.Owner;

            rankIndicator = IconBuilder.Instance.BuildPlayerRank(player.PlayerRank, DepthParameter.Nameplate);

            List <SpriteText> spTL = new List <SpriteText>();

            Color textColor = (player.PlayerTeam == PlayerTeam.Red) ?
                              Parameter.TextColorTeamRed :
                              Parameter.TextColorTeamBlue;

            if (player.Guild != null)
            {
                spTL.Add(new SpriteText(FontTextType.Consolas10, $"[{player.Guild.Tag}] ",
                                        textColor, Alignment, DepthParameter.Nameplate,
                                        outlineColor: Color.Black));
            }

            spTL.Add(new SpriteText(FontTextType.Consolas10, player.Nickname,
                                    textColor, Alignment, DepthParameter.Nameplate,
                                    outlineColor: Color.Black));

            compositeSpriteText = CompositeSpriteText.CreateCompositeSpriteText(spTL, Orientation.Horizontal, Alignment.Left, default, 0);
        public static PopupAlertMessage AvatarPurchaseFailureFeedback()
        {
            List <List <SpriteText> > stMatrix;
            List <SpriteText>         titleSTList, messageSTList1;

            titleSTList = new List <SpriteText>();
            titleSTList.Add(new SpriteText(FontTextType.Consolas11, Language.PopupAlertMessageAvatarPurchaseFailureTitle, Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));

            messageSTList1 = new List <SpriteText>();
            messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseFailureMessage11, Color.White, Alignment.Left, layerDepth: DepthParameter.InterfacePopupMessageText));

            stMatrix = new List <List <SpriteText> >();
            stMatrix.Add(messageSTList1);

            CompositeSpriteText title, message;

            title   = CompositeSpriteText.CreateCompositeSpriteText(titleSTList, Orientation.Horizontal, Alignment.Left, default);
            message = CompositeSpriteText.CreateCompositeSpriteText(stMatrix, Alignment.Left, Vector2.Zero + new Vector2(0, 20), new Vector2(0, 0));

            PopupAlertMessage popup = new PopupAlertMessage(title, message, AlertMessageType.Cancel);

            popup.OnConfirm = (x) => PopupHandler.Remove(popup);

            return(popup);
        }
Exemple #6
0
        public PopupCreateGame(Vector2 positionOffset) : base(false)
        {
            Background = new Sprite("Interface/Popup/Blue/CreateRoom/Background",
                                    position: Parameter.ScreenCenter,
                                    layerDepth: DepthParameter.InterfacePopupBackground);

            buttonList.Add(new Button(ButtonType.CreateGame1v1, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameRoomSizeButtonAction(sender, RoomSize.OneVsOne); }));
            buttonList.Add(new Button(ButtonType.CreateGame2v2, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameRoomSizeButtonAction(sender, RoomSize.TwoVsTwo); }));
            buttonList.Add(new Button(ButtonType.CreateGame3v3, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameRoomSizeButtonAction(sender, RoomSize.ThreeVsThree); }));
            buttonList.Add(new Button(ButtonType.CreateGame4v4, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameRoomSizeButtonAction(sender, RoomSize.FourVsFour); }));

            buttonList.Add(new Button(ButtonType.CreateGameJewel, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameGameModeButtonAction(sender, GameMode.Jewel); }));
            buttonList.Add(new Button(ButtonType.CreateGameTag, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameGameModeButtonAction(sender, GameMode.Tag); }));
            buttonList.Add(new Button(ButtonType.CreateGameScore, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameGameModeButtonAction(sender, GameMode.Score); }));
            buttonList.Add(new Button(ButtonType.CreateGameSolo, DepthParameter.InterfacePopupButtons, (sender) => { CreateGameGameModeButtonAction(sender, GameMode.Solo); }));

            buttonList.Add(new Button(ButtonType.Accept, DepthParameter.InterfacePopupButtons, CreateRoomAction));
            buttonList.Add(new Button(ButtonType.Cancel, DepthParameter.InterfacePopupButtons, CloseAction));

            compositeSpriteTextSentenceList = new List <SpriteText>();
            compositeSpriteTextSentenceList.Add(new SpriteText(FontTextType.Consolas10, "", Color.White, Alignment.Left, DepthParameter.InterfacePopupText, outlineColor: Color.Black));
            compositeSpriteTextSentenceList.Add(new SpriteText(FontTextType.Consolas10, "", Color.White, Alignment.Left, DepthParameter.InterfacePopupText, outlineColor: Color.Black));

            compositeSpriteTextList.Add(CompositeSpriteText.CreateCompositeSpriteText(compositeSpriteTextSentenceList, Orientation.Vertical, Alignment.Left, new Vector2(0, 0), 5));

            compositeSpriteTextList.Add(CompositeSpriteText.CreateCompositeSpriteText(
                                            new List <SpriteText>()
            {
                new SpriteText(FontTextType.Consolas10, Language.PopupCreateRoomTitle, Color.White, Alignment.Left, DepthParameter.InterfacePopupText, outlineColor: Color.Black),
                new SpriteText(FontTextType.Consolas10, Language.PopupCreateRoomPassword, Color.White, Alignment.Left, DepthParameter.InterfacePopupText, outlineColor: Color.Black)
            },
                                            Orientation.Vertical, Alignment.Right, Vector2.Zero, 9));

            //Button Texts
            spriteTextList.Add(new SpriteText(FontTextType.Consolas10, Language.GameModeJewel, Color.White, Alignment.Center, DepthParameter.InterfacePopupText));
            spriteTextList.Add(new SpriteText(FontTextType.Consolas10, Language.GameModeTag, Color.White, Alignment.Center, DepthParameter.InterfacePopupText));
            spriteTextList.Add(new SpriteText(FontTextType.Consolas10, Language.GameModeScore, Color.White, Alignment.Center, DepthParameter.InterfacePopupText));
            spriteTextList.Add(new SpriteText(FontTextType.Consolas10, Language.GameModeSolo, Color.White, Alignment.Center, DepthParameter.InterfacePopupText));

            //Room default configurations
            buttonList[3].ChangeButtonState(ButtonAnimationState.Activated, true);
            buttonList[7].ChangeButtonState(ButtonAnimationState.Activated, true);

            //Button variable helpers
            roomMetadata = new RoomMetadata(GameMode.Score, TurnsToSuddenDeath.Turn56, MatchSuddenDeathType.NoDeath, RoomSize.FourVsFour,
                                            GameInformation.Instance.PlayerInformation, 0, "", "");

            roomSizeButtons = buttonList.GetRange(0, 4);
            gameTypeButtons = buttonList.GetRange(4, 4);

            roomSizeButtons.Union(gameTypeButtons).ToList().ForEach((x) => x.OnBeingReleased = (sender) => ((Button)sender).ChangeButtonState(ButtonAnimationState.Activated, true));

            //Textfields
            textFieldList = new List <TextField>()
            {
                new TextField(default, 185, 14, 16, FontTextType.Consolas10, Color.White, DepthParameter.InterfacePopupText, outlineColor: Color.Black),
Exemple #7
0
        public void CreateRoomName()
        {
            SpriteText[] serverNameArr = new SpriteText[2] {
                new SpriteText(FontTextType.Consolas11, $"{GameInformation.Instance.ConnectedServerInformation.ServerID}. ",
                               Parameter.NameplateGuildColor, Alignment.Left, DepthParameter.InterfaceButton, outlineColor: Color.Black),
                new SpriteText(FontTextType.Consolas11, $"{GameInformation.Instance.ConnectedServerInformation.ServerName}",
                               Color.White, Alignment.Left, DepthParameter.InterfaceButton, outlineColor: Color.Black)
            };

            serverName = CompositeSpriteText.CreateCompositeSpriteText(serverNameArr.ToList(), Orientation.Horizontal, Alignment.Center, Parameter.ScreenCenter + new Vector2(0, -295));
        }
        public PopupAlertMessage(CompositeSpriteText title, CompositeSpriteText message, AlertMessageType alertMessageType = AlertMessageType.AcceptCancel) : base(true)
        {
            Background = new Sprite("Interface/Popup/Blue/Alert/Background", layerDepth: DepthParameter.InterfacePopupMessageBackground);

            compositeSpriteTextList.Add(title);
            compositeSpriteTextList.Add(message);

            title.PositionOffset   = Background.Position - new Vector2(186, 50);
            message.PositionOffset = Background.Position - new Vector2(186, 50 - title.ElementDimensions.Y - 5);

            buttonList.Add(new Button(ButtonType.Cancel, DepthParameter.InterfacePopupMessageButtons, CloseAction, PositionOffset + new Vector2(160, 65)));

            if (alertMessageType != AlertMessageType.Cancel)
            {
                buttonList.Add(new Button(ButtonType.Accept, DepthParameter.InterfacePopupMessageButtons, (sender) => { OnConfirm?.Invoke(sender); }, PositionOffset + new Vector2(125, 65)));
            }

            ShouldRender = true;

            UpdateAttatchmentPosition();
        }
Exemple #9
0
        /// <summary>
        /// Must be used only on menu components. For in-game nameplate you must specify the
        /// attatched mobile on the other constructor
        /// </summary>
        /// <param name="player"></param>
        /// <param name="alignment"></param>
        /// <param name="position"></param>
        public Nameplate(Player player, Alignment alignment, Vector2 position, bool showGuild = true, float layerDepth = DepthParameter.Nameplate)
        {
            Player = player;

            Alignment = alignment;
            Position  = PositionOffset = position;

            rankIndicator = IconBuilder.Instance.BuildPlayerRank(player.PlayerRank, layerDepth);

            List <SpriteText> spTL = new List <SpriteText>();

            if (showGuild && player.Guild != null)
            {
                spTL.Add(new SpriteText(FontTextType.Consolas10, "[",
                                        Color.White, alignment, layerDepth,
                                        outlineColor: Color.Black));
                spTL.Add(new SpriteText(FontTextType.Consolas10, player.Guild.Tag,
                                        Parameter.NameplateGuildColor, alignment, layerDepth,
                                        outlineColor: Parameter.NameplateGuildOutlineColor));
                spTL.Add(new SpriteText(FontTextType.Consolas10, "] ",
                                        Color.White, alignment, layerDepth,
                                        outlineColor: Color.Black));
            }

            PlayerColor = Message.TextToColor(player.Nickname);

            spTL.Add(new SpriteText(FontTextType.Consolas10, player.Nickname,
                                    PlayerColor, alignment, layerDepth,
                                    outlineColor: Color.Black));

            compositeSpriteText = CompositeSpriteText.CreateCompositeSpriteText(spTL, Orientation.Horizontal, Alignment.Left, position, 0);

            shouldRender = true;

            Update(position);
        }
Exemple #10
0
        public ServerButton(GameServerInformation serverInformation, Vector2 buttonPosition, Action <object> action)
            : base(ButtonType.ServerListButton, DepthParameter.InterfaceButton, action, buttonPosition, default)
        {
            //Since the button elements dont update, the screencenter
            //must be added in order to create the right position
            //on the elements
            buttonPosition += Parameter.ScreenCenter;

            //Initializing Variables
            compositeSpriteTextList = new List <CompositeSpriteText>();
            spriteList        = new List <Sprite>();
            flipbookList      = new List <Flipbook>();
            spriteTextList    = new List <SpriteText>();
            ServerInformation = serverInformation;

            //Server Background
            if (!serverInformation.IsOnline)
            {
                ChangeButtonState(ButtonAnimationState.Disabled);
            }

            //Server Level Indication Icons
            int lowerLevel  = (int)serverInformation.LowerLevel;
            int higherLevel = (int)serverInformation.HigherLevel;

            Sprite lowerLevelIcon  = IconBuilder.Instance.BuildServerIcon((ServerRankLimitationIcon)(lowerLevel * 2), DepthParameter.InterfaceButtonText);
            Sprite higherLevelIcon = IconBuilder.Instance.BuildServerIcon((ServerRankLimitationIcon)(higherLevel * 2 + 1), DepthParameter.InterfaceButtonText);
            Sprite avatarIcon      = IconBuilder.Instance.BuildServerIcon((serverInformation.IsAvatarOn ? ServerRankLimitationIcon.AvatarOn : ServerRankLimitationIcon.AvatarOff), DepthParameter.InterfaceButtonText);

            lowerLevelIcon.Position  = buttonPosition + new Vector2(40, -24);
            higherLevelIcon.Position = buttonPosition + new Vector2(68, -24);
            avatarIcon.Position      = buttonPosition + new Vector2(96, -24);

            spriteList.Add(lowerLevelIcon);
            spriteList.Add(higherLevelIcon);
            spriteList.Add(avatarIcon);

            //Server Load Icon
            ServerStatusFlipbookIcon serverLoad = GetCurrentServerLoadIcon(serverInformation);
            Flipbook icon = new Flipbook(
                buttonPosition + new Vector2(130, 12), new Vector2(31, 37), 62, 58,
                "Interface/InGame/Scene/ServerList/ServerStatusAnimatedIcon", serverLoad.FlipbookInstance, DepthParameter.InterfaceButtonAnimatedIcon);

            flipbookList.Add(icon);

            //Server Button Texts
            SpriteText[] sprT = new SpriteText[2];
            sprT[0] = new SpriteText(Parameter.ServerButtonFont, $"{serverInformation.ServerID}. ", Color.DarkOrange,
                                     Alignment.Left, DepthParameter.InterfaceButtonText, outlineColor: Color.Black);

            sprT[1] = new SpriteText(Parameter.ServerButtonFont, serverInformation.ServerName, Color.White,
                                     Alignment.Left, DepthParameter.InterfaceButtonText, outlineColor: Color.Black);

            compositeSpriteTextList.Add(
                CompositeSpriteText.CreateCompositeSpriteText(sprT.ToList(), Orientation.Horizontal, Alignment.Left, buttonPosition + new Vector2(-155, -32), 0));

            sprT = new SpriteText[serverInformation.ServerDescription.Count()];
            for (int i = 0; i < serverInformation.ServerDescription.Count(); i++)
            {
                sprT[i] = new SpriteText(Parameter.ServerButtonFont, serverInformation.ServerDescription[i], Color.White,
                                         Alignment.Left, DepthParameter.InterfaceButtonText, outlineColor: Color.Black);
            }

            compositeSpriteTextList.Add(CompositeSpriteText.CreateCompositeSpriteText(sprT.ToList(), Orientation.Vertical, Alignment.Left, buttonPosition + new Vector2(-155, -10), -1));

            if (serverInformation.IsOnline)
            {
                spriteTextList.Add(new SpriteText(Parameter.ServerButtonFont, $"[{serverInformation.ConnectedClients}/{serverInformation.ConnectedClientCapacity}]", Color.White,
                                                  Alignment.Center, DepthParameter.InterfaceButtonText, buttonPosition + new Vector2(68, -10), Color.Black));
            }

            //Server Icon Text
            spriteTextList.Add(new SpriteText(Parameter.ServerButtonFont,
                                              serverLoad.IconSubtitle, Color.White, Alignment.Center,
                                              DepthParameter.InterfaceButtonText, icon.Position + new Vector2(0, 10), Color.Black));

            OnBeingPressed = (sender) =>
            {
                spriteTextList.ForEach((x) => x.Position += new Vector2(1, 1));
                spriteList.ForEach((x) => x.Position     += new Vector2(1, 1));
                flipbookList.ForEach((x) => x.Position   += new Vector2(1, 1));
            };

            OnBeingReleased = (sender) =>
            {
                spriteTextList.ForEach((x) => x.Position -= new Vector2(1, 1));
                spriteList.ForEach((x) => x.Position     -= new Vector2(1, 1));
                flipbookList.ForEach((x) => x.Position   -= new Vector2(1, 1));
            };
        }
Exemple #11
0
        private RoomButton(RoomMetadata roomMetadata, Vector2 buttonPosition, Action <object> action, ButtonPreset buttonPreset)
            : base(ButtonType.RoomButton, DepthParameter.InterfaceButton, action, buttonPosition, buttonPreset)
        {
            spriteList     = new List <Sprite>();
            spriteFontList = new List <NumericSpriteFont>();

            //Since the button elements dont update, the screencenter
            //must be added in order to create the right position
            //on the elements
            buttonPosition += Parameter.ScreenCenter;

            //MAP
            Vector2 mapCenter = buttonPosition + new Vector2(28, 11f);
            Sprite  map       = new Sprite($"Graphics/Maps/{roomMetadata.Map.GameMap}/GameListThumb{roomMetadata.Map.GameMapType}", mapCenter, DepthParameter.InterfaceButtonIcon);

            spriteList.Add(map);

            //RoomStatus
            int rectangleOffset = roomMetadata.IsPlaying ? 0 :
                                  (roomMetadata.IsFull ? 2 * 91 : 91);

            Sprite roomStatus = new Sprite("Interface/StaticButtons/GameList/Status",
                                           mapCenter - new Vector2(100, 0), DepthParameter.InterfaceButtonIcon,
                                           new Rectangle(rectangleOffset, 0, 91, 27))
            {
                Pivot = new Vector2(91 / 2, 27 / 2)
            };

            spriteList.Add(roomStatus);

            //RoomName
            SpriteText[] roomName = new SpriteText[2] {
                new SpriteText(FontTextType.Consolas11, string.Format("{0,3}", roomMetadata.ID) + " ",
                               Color.White, Alignment.Left, DepthParameter.InterfaceButtonText),
                new SpriteText(FontTextType.Consolas11, roomMetadata.Name,
                               Color.White, Alignment.Left, DepthParameter.InterfaceButtonText)
            };

            compositeSpriteText = CompositeSpriteText.CreateCompositeSpriteText(roomName.ToList(), Orientation.Horizontal, Alignment.Left, buttonPosition - new Vector2(115, 25), 0);

            //SpriteFont
            NumericSpriteFont nsf = new NumericSpriteFont(FontType.GameListPlayerCounter,
                                                          1, DepthParameter.InterfaceButtonText,
                                                          Position: buttonPosition + new Vector2(91, -24),
                                                          StartingValue: roomMetadata.NumberOfPlayers,
                                                          attachToCamera: false);

            spriteFontList.Add(nsf);

            NumericSpriteFont nsf2 = new NumericSpriteFont(FontType.GameListPlayerCounter,
                                                           1, DepthParameter.InterfaceButtonText,
                                                           Position: buttonPosition + new Vector2(105, -24),
                                                           StartingValue: (int)roomMetadata.Size,
                                                           attachToCamera: false);

            spriteFontList.Add(nsf2);

            //IsPasswordProtected
            if (roomMetadata.HasPassword)
            {
                Sprite passwordLock = new Sprite("Interface/StaticButtons/GameList/PasswordProtected",
                                                 mapCenter, DepthParameter.InterfaceButtonAnimatedIcon);
                spriteList.Add(passwordLock);
            }

            //HasBuddyInRoom
            if (HasBuddyInside(roomMetadata))
            {
                Sprite buddy = new Sprite("Interface/StaticButtons/GameList/BuddyInside",
                                          mapCenter + new Vector2(32, 0), DepthParameter.InterfaceButtonAnimatedIcon);
                spriteList.Add(buddy);
            }
        }