Exemplo n.º 1
0
        public override void init()
        {
            // Static message to client

            EntityUtility.CreateMessage(Domain, "Players in lobby", 0, -180, 16);
            if (Connection.Lobby.Owner == Connection.LocalPlayer)
            {
                clientInformation = EntityUtility.CreateMessage(Domain, "Press 'enter' to start game", 0, 100, 16);
            }
            else
            {
                clientInformation = EntityUtility.CreateMessage(Domain, "Waiting for host to start game", 0, 100, 16);
            }


            // Background
            Entity backGround = new Entity(Domain);

            backGround.AddComponent(new Transform());
            backGround.AddComponent(new Sprite(Assets.Textures.Background, 1280, 720));

            // Menu
            Entity Menu = new Entity(Domain);

            Menu.AddComponent(new Transform());
            Menu.AddComponent(new Sprite(Assets.Textures.Menu, 600, 600));
        }
Exemplo n.º 2
0
        public override void init()
        {
            // Static message to client
            EntityUtility.CreateMessage(Domain, "Players in server", 0, 0, 16);

            // Creates a list of all clients in server
            List <string> users = ClientProtocol.GetAllUsers();

            for (int i = 0; i < users.Count(); i++)
            {
                EntityUtility.CreateMessage(Domain, users[i], 0, 0, 18);
            }

            // Background
            Entity backGround = new Entity(Domain);

            backGround.AddComponent(new Transform());
            backGround.AddComponent(new Sprite(Assets.Textures.Background, 1280, 720));

            // Menu
            Entity Menu = new Entity(Domain);

            Menu.AddComponent(new Transform());
            Menu.AddComponent(new Sprite(Assets.Textures.Menu, 600, 600));

            // InputBox
            InputBox = EntityUtility.CreateInput(Domain, "Enter Name", -70, 100, 18);
        }
Exemplo n.º 3
0
        public LobbyList(Game game, State state)
        {
            ParentState = state;
            Game        = game;
            Camera      = new Camera(Domain);

            clientInformation = EntityUtility.CreateMessage(Domain, "", 0, 150, 16);

            EntityUtility.CreateMessage(Domain, "Select lobby", 0, -180, 16);

            // Background
            Entity backGround = new Entity(Domain);

            backGround.AddComponent(new Transform());
            backGround.AddComponent(new Sprite(Assets.Textures.Background, 1280, 720));

            // Menu
            Entity Menu = new Entity(Domain);

            Menu.AddComponent(new Transform());
            Menu.AddComponent(new Sprite(Assets.Textures.Menu, 600, 600));

            // pointer
            left_pointer  = EntityUtility.MenuArrow(Domain, false);
            right_pointer = EntityUtility.MenuArrow(Domain, true);

            UpdateLobbies();
        }
Exemplo n.º 4
0
        public override void update(GameTime gameTime)
        {
            if (!started)
            {
                return;
            }

            Domain.Clean();

            // Updates player names and icons if player is added to remote space on server
            int clientInDomain = 0;

            Domain.ForMatchingEntities <Sprite, Transform>((entity) => {
                clientInDomain++;
            });

            var currentLives = lifeController.Lives;

            foreach (Entity icon in playerIcons)
            {
                icon.Delete();
            }
            foreach (Entity playerName in playerNames)
            {
                playerName.Delete();
            }
            foreach (Entity score in playerScores)
            {
                score.Delete();
            }

            playerScores.Clear();
            playerIcons.Clear();
            playerNames.Clear();

            var players = Connection.Lobby.Players;

            foreach (var player in players)
            {
                var lives = lifeController.GetClientLives(player.Id);

                playerIcons.Add(EntityUtility.CreateIcon(Domain, (int)player.Id));
                playerNames.Add(EntityUtility.CreateMessage(Domain, player.Name, 0, 0, 16, origin: TextOrigin.Left));
                playerScores.Add(EntityUtility.CreateMessage(Domain, lives.ToString(), 0, 0, 16, origin: TextOrigin.Left));
            }

            Display();
        }
Exemplo n.º 5
0
        public override void update(GameTime gameTime)
        {
            // Clear domain
            Domain.Clean();

            foreach (Entity playerName in players)
            {
                playerName.Delete();
            }
            players.Clear();

            IEnumerable <ITuple> users = ClientProtocol.GetClientsInLobby();

            foreach (ITuple user in users)
            {
                if (((string)user[2]).Contains("No user"))
                {
                    players.Add(EntityUtility.CreateMessage(Domain, "- - - - -", 0, 0, 20));
                }
                else
                {
                    players.Add(EntityUtility.CreateMessage(Domain, (string)user[2], 0, 0, 20));
                }
            }
            players.Reverse();

            SetPlayerNamesPosition();

            // No host
            if (Connection.LocalPlayer != Connection.Lobby.Owner)
            {
                if (ClientProtocol.IsGameStarted())
                {
                    ChangeState = true;
                }
            }

            // Changes state when condition is true
            if (ChangeState)
            {
                ParentState._context.TransitionTo(new GameState(Game));
            }
        }
Exemplo n.º 6
0
        public override void update(GameTime gameTime)
        {
            // Clearing domain
            domain.Clean();

            // Updates chat if new message is added to remote space on server
            int messageInDomain = 0;

            domain.ForMatchingEntities <Text, Transform>((entity) => {
                messageInDomain++;
            });


            lock (messages)
            {
                if (messageInDomain < messages.Count)
                {
                    domain.ForMatchingEntities <Text, Transform>((entity) => {
                        entity.Delete();
                    });

                    domain.ForMatchingEntities <Sprite, Transform>((entity) =>
                    {
                        if (!(entity == ChatBox))
                        {
                            entity.Delete();
                        }
                    });

                    int maxDisplayedMesseges = 15;
                    var LastMessages         = messages.Skip(Math.Max(0, messages.Count() - maxDisplayedMesseges)).Take(maxDisplayedMesseges);
                    foreach (var message in messages)
                    {
                        EntityUtility.CreateIcon(domain, (int)message.Sender.Id);
                        EntityUtility.CreateMessage(domain, (string)message.Message, 0, 0, 14, origin: TextOrigin.Left);
                    }
                }
            }

            // Display chat
            (DisplayChat ? new Action(Display) : Hide)();
        }
Exemplo n.º 7
0
        public override void update(GameTime gameTime)
        {
            // Clear domain
            Domain.Clean();

            if (lobbiesWereUpdated)
            {
                lock (currentLobies)
                {
                    // Clear current lobby entities (menu)
                    foreach (var lobby in lobbyEntities)
                    {
                        lobby.Delete();
                    }
                    allURLs.Clear();
                    lobbyEntities.Clear();

                    // Update selection index
                    if (selectionIndex < currentLobies.Count)
                    {
                        selectionIndex = currentLobies.Count - 1;
                    }

                    // Create new lobby entities
                    menuList.Clear();
                    foreach (var lobby in currentLobies.Values)
                    {
                        lobbyEntities.Add(EntityUtility.CreateMessage(Domain, $"{lobby.OwnerName}'s lobby ({lobby.NumPlayers}/{Settings.LOBBY_SLOTS})", 0, 0, 18));
                        menuList.Add(lobby);
                        menuList.Sort((l1, l2) => string.Compare(l2.Id, l1.Id));
                    }

                    lobbiesWereUpdated = false;
                }
            }

            // Displays list of all clients in server
            displayCurrentIndex();

            loader?.update(gameTime);
        }
Exemplo n.º 8
0
        public Loader(string loadingText, LoadCallback loadingCallback, OnFinish finishCallback)
        {
            domain = new Domain();
            camera = new Camera(domain);

            { // Fade
                var entity = new Entity(domain);
                entity.AddComponent(new Transform());
                entity.AddComponent(new Sprite(Assets.Textures.SQUARE, 1280, 720, new Color(0.0f, 0.0f, 0.0f, 0.5f)));
            }

            { // Create window
                var entity = new Entity(domain);
                entity.AddComponent(new Transform());
                entity.AddComponent(new Sprite(Assets.Textures.Chat, 550, 400));
            }

            // Create text
            EntityUtility.CreateMessage(domain, loadingText, 0, -70, 22);

            { // Create loading spinner
                var entity = new Entity(domain);
                entity.AddComponent(new Transform(0, 40));
                entity.AddComponent(new Sprite(Assets.Textures.Loader, 120, 120));
                var move = entity.AddComponent(new Move());
                move.RotationVelocity = 230;
            }

            // Start loading
            Task.Factory.StartNew(async() => {
                // Just to allow the loader to at least show for short amount of time
                await Task.Delay(500);
                await Task.Run(() => {
                    var success = loadingCallback();
                    finishCallback(success);
                });
            });
        }
Exemplo n.º 9
0
        public override void init()
        {
            // Static message to client
            menuItems.Add(EntityUtility.CreateMessage(Domain, "Create new Lobby", 0, 0, 20));
            menuItems.Add(EntityUtility.CreateMessage(Domain, "Join existing lobby", 0, 0, 20));
            clientInformation = EntityUtility.CreateMessage(Domain, "", 0, 150, 16);

            // Background
            Entity backGround = new Entity(Domain);

            backGround.AddComponent(new Transform());
            backGround.AddComponent(new Sprite(Assets.Textures.Background, 1280, 720));

            // Menu
            Entity Menu = new Entity(Domain);

            Menu.AddComponent(new Transform());
            Menu.AddComponent(new Sprite(Assets.Textures.Menu, 600, 600));

            // pointer
            left_pointer  = EntityUtility.MenuArrow(Domain, false);
            right_pointer = EntityUtility.MenuArrow(Domain, true);
        }
Exemplo n.º 10
0
        public FinishLayer(Player winner, OnExitCallback exitCallback)
        {
            this.exitCallback = exitCallback;
            domain            = new Domain();
            camera            = new Camera(domain);

            { // Fade
                var entity = new Entity(domain);
                entity.AddComponent(new Transform());
                entity.AddComponent(new Sprite(Assets.Textures.SQUARE, 1280, 720, new Color(0.0f, 0.0f, 0.0f, 0.5f)));
            }

            // Chat layout
            var scroll = new Entity(domain);

            scroll.AddComponent(new Transform(0, 0));
            scroll.AddComponent(new Sprite(Assets.Textures.Chat, 300, 250));

            EntityUtility.CreateMessage(domain, $"{winner.Name} wins!", 0, -40, 30);
            EntityUtility.CreateMessage(domain, $"Press 'enter' to return to lobby", 0, 10, 14);

            domain.Clean();
        }
Exemplo n.º 11
0
        public IntroState(Game game)
        {
            this.game = game;

            domain = new Domain();
            camera = new Camera(domain);


            // Background entity
            var backGround = new Entity(domain);

            backGround.AddComponent(new Transform());
            backGround.AddComponent(new Sprite(Assets.Textures.Background, 1280, 720));

            // Scroll entity
            var menu = new Entity(domain);

            menu.AddComponent(new Transform());
            menu.AddComponent(new Sprite(Assets.Textures.Menu, 600, 600));


            EntityUtility.CreateMessage(domain, "Captain Combat", 0, -75, 40);
            EntityUtility.CreateMessage(domain, "Press 'enter' to connect", 0, 50, 20);
        }
Exemplo n.º 12
0
        public override bool OnKeyDown(Keys key)
        {
            if (DisableKeyboard)
            {
                return(false);
            }
            else if (key == Keys.Enter)
            {
                if (ClientProtocol.Join(PlayerName))
                {
                    // Disables keyboard
                    DisableKeyboard = !DisableKeyboard;

                    // Adds player name to domain
                    EntityUtility.CreateMessage(Domain, PlayerName, 0, 0, 16);

                    // Enablers state change after delay
                    Task.Factory.StartNew(async() =>
                    {
                        await Task.Delay(2000);
                        ChangeState = true;
                    });

                    // Display a message to the client
                    var input = InputBox.GetComponent <Input>();
                    input.Message = "Joined server succesful";
                }
                else
                {
                    PlayerName = string.Empty;
                    var input = InputBox.GetComponent <Input>();
                    input.Message = "Invalid username";
                }
                return(true);
            }
            else if (key == Keys.Back)
            {
                if (PlayerName.Length > 0)
                {
                    PlayerName = PlayerName.Remove(PlayerName.Length - 1);
                    var input = InputBox.GetComponent <Input>();
                    input.Message = PlayerName;
                }
                return(true);
            }
            else if (key == Keys.Space)
            {
                PlayerName += " ";
                var input = InputBox.GetComponent <Input>();
                input.Message = PlayerName;
                return(true);
            }
            else
            {
                string keyData = key.ToString();
                if (KeyboardInputValidator.isValid(keyData) && PlayerName.Length < 20)
                {
                    PlayerName = (KeyboardInputValidator.dict.ContainsKey(keyData) ? PlayerName += KeyboardInputValidator.dict[keyData] : PlayerName += keyData);
                    var input = InputBox.GetComponent <Input>();
                    input.Message = PlayerName;
                    return(true);
                }
                return(false);
            }
        }