Exemple #1
0
        public override void Load()
        {
            bgContainer = new Sprite();
            bgLayers    = new Sprite[3];
            AddChild(bgContainer);
            for (int i = 0; i < 3; ++i)
            {
                bgLayers[i] = new Sprite();

                var bmp1 = new Bitmap(Assets.GetBitmapData("assets/background/1/" + (i + 1).ToString(), true));
                var bmp2 = new Bitmap(Assets.GetBitmapData("assets/background/1/" + (i + 1).ToString(), true));

                bmp2.X = bmp1.Width;

                bgLayers[i].AddChild(bmp1);
                bgLayers[i].AddChild(bmp2);

                bgContainer.AddChild(bgLayers[i]);
            }
            // GUI
            guiContainer = new Sprite();
            AddChild(guiContainer);

            NetPeerConfiguration config = new NetPeerConfiguration("multiplanes-network");

            client = new NetClient(config);
            client.Start();
            client.DiscoverLocalPeers(14242);
            client.DiscoverKnownPeer(GameClient.NET_ADRESS, GameClient.NET_PORT);

            nick = NickGenerator.GenerateNick(client.UniqueIdentifier);

            var screenNameLabel = new TextField();

            screenNameLabel.font = Assets.GetFont("assets/MainFont");
            screenNameLabel.text = "HOST GAME";
            screenNameLabel.X    = GameMain.ScreenWidth / 2 - screenNameLabel.Width / 2;
            screenNameLabel.Y    = 10 / GameMain.mainScale;
            guiContainer.AddChild(screenNameLabel);

            var roomNameLabel = new TextField();

            roomNameLabel.font   = screenNameLabel.font;
            roomNameLabel.text   = "Room name: " + nick;
            roomNameLabel.X      = GameMain.ScreenWidth * 0.1f;
            roomNameLabel.Y      = GameMain.ScreenHeight / 2 - roomNameLabel.Height / 2;
            roomNameLabel.ScaleX = roomNameLabel.ScaleY = 0.5f;
            guiContainer.AddChild(roomNameLabel);

            waitLabel        = new TextField();
            waitLabel.font   = roomNameLabel.font;
            waitLabel.text   = "Waiting for other player to connect. . .";
            waitLabel.X      = roomNameLabel.X;
            waitLabel.Y      = roomNameLabel.Y + roomNameLabel.Height;
            waitLabel.ScaleX = waitLabel.ScaleY = 0.25f;
            guiContainer.AddChild(waitLabel);
        }
Exemple #2
0
        public void OnSpawned(PlanetModel model, IMemoryPool pool)
        {
            _planetModel         = model;
            _pool                = pool;
            _currentAngleToSun   = model.CurrentAngleToSun;
            transform.localScale = new Vector3(model.Settings.planetScale, model.Settings.planetScale,
                                               model.Settings.planetScale);
            _currentHud            = _hudFactory.Create();
            _currentRocketSettings = _rocketSettingsList[0];
            _isDead = false;
            _planetModel.SetNickname(model.Nickname);
            GetComponent <MeshRenderer>().material.color = model.Color;
            if (string.IsNullOrEmpty(model.Nickname))
            {
                _planetModel.SetNickname(NickGenerator.GetRandomNickname());
            }

            _currentHud.Configure(_planetModel.Nickname, model.IsPlayer, _gameSettings.initialPlanetHP, model.Hp);
        }
Exemple #3
0
        public override void Update(float deltaTime)
        {
            NetIncomingMessage msg;

            while ((msg = client.ReadMessage()) != null)
            {
                switch (msg.MessageType)
                {
                case NetIncomingMessageType.DiscoveryResponse:
                    Debug.WriteLine("Server message: " + msg.ReadString());

                    NetOutgoingMessage approval = client.CreateMessage();
                    approval.Write(GameClient.APPROVAL_BYTE);
                    approval.Write(GameClient.HOST_BYTE);
                    approval.Write(NickGenerator.GenerateNick(client.UniqueIdentifier));
                    client.Connect(msg.SenderEndPoint, approval);
                    break;

                case NetIncomingMessageType.Data:
                    byte msgType = msg.ReadByte();
                    if (msgType == (byte)GameClient.DataMessageTypes.ClientJoined)
                    {
                        string clientName = msg.ReadString();
                        PlayerJoined(clientName);
                    }
                    break;

                case NetIncomingMessageType.StatusChanged:
                    NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte();

                    if (status == NetConnectionStatus.Connected)
                    {
                        Debug.WriteLine("Connected");
                    }

                    if (status == NetConnectionStatus.Disconnected)
                    {
                        Debug.WriteLine("Disconnect");
                    }
                    break;
                }
            }

            waitLabelUpdateTime += deltaTime;

            if (waitLabelUpdateTime < 1)
            {
                waitLabel.text = "Waiting for other player to connect.";
            }
            else if (waitLabelUpdateTime > 1 && waitLabelUpdateTime < 2)
            {
                waitLabel.text = "Waiting for other player to connect. .";
            }
            else if (waitLabelUpdateTime > 2 && waitLabelUpdateTime < 3)
            {
                waitLabel.text = "Waiting for other player to connect. . .";
            }
            else
            {
                waitLabelUpdateTime = 0;
            }

            for (int i = 0; i < bgLayers.Length; ++i)
            {
                var layer = bgLayers[i];
                layer.X -= 100 * deltaTime * LAYER_DEPTHS[i];
                if (layer.X <= -layer.Width / 2)
                {
                    layer.X += layer.Width / 2;
                }
            }
        }
Exemple #4
0
        public override void Load()
        {
            // Background
            bgContainer = new Sprite();
            bgLayers    = new Sprite[3];
            AddChild(bgContainer);
            for (int i = 0; i < 3; ++i)
            {
                bgLayers[i] = new Sprite();

                var bmp1 = new Bitmap(Assets.GetBitmapData("assets/background/1/" + (i + 1).ToString(), true));
                var bmp2 = new Bitmap(Assets.GetBitmapData("assets/background/1/" + (i + 1).ToString(), true));

                bmp2.X = bmp1.Width;

                bgLayers[i].AddChild(bmp1);
                bgLayers[i].AddChild(bmp2);

                bgContainer.AddChild(bgLayers[i]);
            }
            // GUI
            guiContainer = new Sprite();
            AddChild(guiContainer);

            hosts = new List <HostLabel>();

            font = Assets.GetFont("assets/MainFont");

            var screenNameLabel = new TextField();

            screenNameLabel.font = font;
            screenNameLabel.text = "JOIN GAME";
            screenNameLabel.X    = GameMain.ScreenWidth / 2 - screenNameLabel.Width / 2;
            screenNameLabel.Y    = 10 / GameMain.mainScale;
            guiContainer.AddChild(screenNameLabel);

            pointerLabel        = new TextField();
            pointerLabel.font   = screenNameLabel.font;
            pointerLabel.text   = "Select a game to join";
            pointerLabel.ScaleX = pointerLabel.ScaleY = 0.4f;
            pointerLabel.X      = GameMain.ScreenWidth / 2 - pointerLabel.Width / 2;
            pointerLabel.Y      = screenNameLabel.Y + screenNameLabel.Height;
            guiContainer.AddChild(pointerLabel);

            connectButton           = new TextField();
            connectButton.font      = font;
            connectButton.text      = "Connect";
            connectButton.ScaleX    = connectButton.ScaleY = 0.5f;
            connectButton.X         = GameMain.ScreenWidth * 0.25f - connectButton.Width / 2;
            connectButton.Y         = GameMain.ScreenHeight - connectButton.Height;
            connectButton.textColor = Color.DarkGray;
            guiContainer.AddChild(connectButton);

            refreshButton        = new TextField();
            refreshButton.font   = font;
            refreshButton.text   = "Refresh";
            refreshButton.ScaleX = refreshButton.ScaleY = 0.5f;
            refreshButton.X      = GameMain.ScreenWidth * 0.75f - refreshButton.Width / 2;
            refreshButton.Y      = connectButton.Y;
            guiContainer.AddChild(refreshButton);

            connectButton.AddEventListener(Event.TOUCH_END, onButtonDown);
            refreshButton.AddEventListener(Event.TOUCH_END, onButtonDown);

            NetPeerConfiguration config = new NetPeerConfiguration("multiplanes-network");

            client = new NetClient(config);
            client.Start();
            nick = NickGenerator.GenerateNick((client.UniqueIdentifier));
            client.DiscoverLocalPeers(14242);
            client.DiscoverKnownPeer(GameClient.NET_ADRESS, GameClient.NET_PORT);
        }