コード例 #1
0
 private void CalcRowHeight()
 {
     GInfo.AddGraphics(null);
     try {
         rowHeight = Form.ScrollBar.SmallChange = AppearanceMatch.CalcTextSize(GInfo.Graphics, "Wg", 0).ToSize().Height + HoverElement.ContentMargins.Height;
     } finally { GInfo.ReleaseGraphics(); }
 }
コード例 #2
0
        private void JoinToGame(byte[] data)
        {
            GInfo jGame = (GInfo)SerializationUtils.DeSerialization(data);

            Console.WriteLine(User.UserNick + " хочет подключиться к игре " + jGame.userOpp.UserNick);
            server.JoinToGame(User, jGame);
        }
コード例 #3
0
        private void CancelGame(byte[] data)
        {
            GInfo cGame = (GInfo)SerializationUtils.DeSerialization(data);

            Console.WriteLine(cGame.userOpp.UserNick + " хочет отменить игру " + cGame.gameID.ToString());
            server.RemoveGame(cGame);
        }
コード例 #4
0
        protected virtual int CalcRowPreviewEditorHeight(int rowHandle, RepositoryItem item)
        {
            if (!View.OptionsView.ShowPreview || View.IsGroupRow(rowHandle) || View.IsFilterRow(rowHandle))
            {
                return(0);
            }
            int res         = (View.OptionsView.ShowPreviewRowLines != DevExpress.Utils.DefaultBoolean.False ? 1 : 0);
            int eventHeight = View.RaiseMeasurePreviewHeightAccessMetod(rowHandle);

            if (eventHeight != -1)
            {
                return(eventHeight == 0 ? 0 : res + eventHeight);
            }
            Graphics g = GInfo.AddGraphics(null);

            try
            {
                IHeightAdaptable ha = fRowPreviewViewInfo as IHeightAdaptable;
                if (ha != null)
                {
                    fRowPreviewViewInfo.EditValue = View.GetRowPreviewValue(rowHandle);
                    res = ha.CalcHeight(GInfo.Cache, this.CalcRowPreviewWidth(rowHandle) - this.PreviewIndent - (GridRowPreviewPainter.PreviewTextIndent * 2));
                }
                res = Math.Max(fRowPreviewViewInfo.CalcMinHeight(g), res);
            }
            finally
            {
                GInfo.ReleaseGraphics();
            }
            res += GridRowPreviewPainter.PreviewTextVIndent * 2;
            return(res);
        }
コード例 #5
0
        public void OpenGame(GInfo game)
        {
            Game g = new Game(this.gameID, new UserInfo[] { game.userOpp, null });

            AddOpenGame(g);
            UpdateOpenedGames();
        }
コード例 #6
0
        public void JoinToGame(UserInfo user, GInfo game)
        {
            UserInfo[] users = new UserInfo[] { game.userOpp, user };
            Game       jGame = new Game(game.gameID, users);

            this.AddGame(jGame);

            //посылаем игрокам информацию для начала игры
            GInfo gameI = new GInfo(users[0], jGame.gameInfo.gameID);

            byte[] sendData = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.NewGame],
                gameI);
            this.SendToUser(users[1], sendData);

            gameI.userOpp = users[1];
            gameI.gameID  = jGame.gameInfo.gameID;
            sendData      = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.NewGame],
                gameI);
            this.SendToUser(users[0], sendData);

            //удаляем из списка открытых игр
            this.RemoveGame(game);
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: MaddT/-NetworkBattleship
        private void btnCreateGame_Click(object sender, EventArgs e)
        {
            GInfo newGame = new GInfo(currUser, 0);

            byte[] message = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.OpenGame], newGame);
            SendData(message);
            btnCancelGame.Enabled = true;
        }
コード例 #8
0
 /// <summary>
 /// is called before solution is evolved to setup the specie
 /// </summary>
 protected virtual void StartFinding()
 {
     lock (SpecInfo)
     {
         SpecInfo = new SpeciesInfo();
     }
     GInfo.IncrementTotalSpecies();
     InitializeUpdateInfo();
     NewSpecieEvent();
 }
コード例 #9
0
ファイル: Form1.cs プロジェクト: MaddT/-NetworkBattleship
 private void btnCancelGame_Click(object sender, EventArgs e)
 {
     if (openedGame == null)
     {
         return;
     }
     byte[] message = SerializationUtils.Serialization(
         MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.CancelGame], openedGame);
     SendData(message);
     btnCancelGame.Enabled = false;
     btnCreateGame.Enabled = true;
     openedGame            = null;
 }
コード例 #10
0
        public void UpdateOpenedGames()
        {
            List <GInfo> openGames = new List <GInfo>();

            foreach (Game item in OpenGames)
            {
                GInfo gi = new GInfo(item.gameInfo.user1, item.gameInfo.gameID);
                openGames.Add(gi);
            }
            byte[] games = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.UpdateGames],
                openGames);
            SendAll(games);
        }
コード例 #11
0
        public void RemoveGame(GInfo game)
        {
            Game rGame = null;

            foreach (Game item in OpenGames)
            {
                if (game.gameID == item.gameInfo.gameID)
                {
                    rGame = item;
                    break;
                }
            }
            OpenGames.Remove(rGame);
            UpdateOpenedGames();
        }
コード例 #12
0
ファイル: Form1.cs プロジェクト: MaddT/-NetworkBattleship
        private void btnJoinGame_Click(object sender, EventArgs e)
        {
            if (lbGames.SelectedIndex == -1)
            {
                return;
            }
            GInfo joinGame = openedGames[lbGames.SelectedIndex];

            if (joinGame.userOpp.UserNumber == currUser.UserNumber)
            {
                return;
            }
            byte[] message = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.Join], joinGame);
            SendData(message);
        }
コード例 #13
0
        protected override void OnEditValueChanged()
        {
            base.OnEditValueChanged();

            if (OwnerEdit == null)
            {
                GInfo.AddGraphics(null);
                try
                {
                    CalculateButtonsRect(GInfo.Graphics);
                }
                finally
                {
                    GInfo.ReleaseGraphics();
                }
            }
        }
コード例 #14
0
        protected virtual BaseEditViewInfo CreateRowPreviewViewInfo(RepositoryItem item)
        {
            BaseEditViewInfo info = item.CreateViewInfo();

            UpdateEditViewInfo(info);
            Graphics g = GInfo.AddGraphics(null);

            try
            {
                info.CalcViewInfo(g);
            }
            finally
            {
                GInfo.ReleaseGraphics();
            }
            return(info);
        }
コード例 #15
0
        private void AcceptGame(byte[] data)
        {
            UserInfo[] users = (UserInfo[])SerializationUtils.DeSerialization(data);

            Game game = new Game(server.gameID, users);

            server.AddGame(game);

            GInfo gameI = new GInfo(users[0], game.gameInfo.gameID);

            byte[] sendData = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.NewGame],
                gameI);
            server.SendToUser(users[1], sendData);
            gameI.userOpp = users[1];
            gameI.gameID  = game.gameInfo.gameID;
            sendData      = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.NewGame],
                gameI);
            server.SendToUser(users[0], sendData);
        }
コード例 #16
0
        protected override void CalcRowPreviewInfo(RowInfo ri)
        {
            base.CalcRowPreviewInfo(ri);

            bool graphic_is_created = (GInfo.Graphics != null);

            if (!graphic_is_created)
            {
                GInfo.AddGraphics(null);
            }
            try
            {
                CalcPreviewElementBounds(ri);
            }
            finally
            {
                if (!graphic_is_created)
                {
                    GInfo.ReleaseGraphics();
                }
            }
        }
コード例 #17
0
        private void LeaveGame(byte[] data)
        {
            GInfo game = (GInfo)SerializationUtils.DeSerialization(data);

            server.InterruptGame(User, game);
        }
コード例 #18
0
        private void OpenNewGame(byte[] data)
        {
            GInfo newG = (GInfo)SerializationUtils.DeSerialization(data);

            server.OpenGame(newG);
        }
コード例 #19
0
ファイル: Form1.cs プロジェクト: MaddT/-NetworkBattleship
        // получение сообщений
        private void ReceiveMessage()
        {
            try
            {
                while (true)
                {
                    if (!connect)
                    {
                        this.Invoke(new MethodInvoker(() =>
                        {
                            textBoxChat.Clear();
                        }));
                        break;
                    }

                    byte[]       data      = new byte[64]; // буфер для получаемых данных
                    int          bytes     = 0;
                    MemoryStream memStream = new MemoryStream();
                    do
                    {
                        bytes = stream.Read(data, 0, data.Length);
                        memStream.Write(data, 0, bytes);
                    }while (stream.DataAvailable);

                    byte[] allData = memStream.ToArray();

                    if (allData.Length < 3)
                    {
                        continue;
                    }

                    if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Message))
                    {
                        //MessageBox.Show("Hiiii");
                        string message = (string)SerializationUtils.DeSerialization(allData);
                        // добавляем полученное сообщение в текстовое поле
                        this.Invoke(new MethodInvoker(() =>
                        {
                            textBoxChat.Text = DateTime.Now.ToShortTimeString() + " "
                                               + message + "\r\n"
                                               + textBoxChat.Text;
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Entrance))
                    {
                        users = (List <UserInfo>)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            lbUsers.Items.Clear();
                            foreach (UserInfo item in users)
                            {
                                lbUsers.Items.Add(item.UserNick + "(" + item.UserRating.ToString() + ")");
                            }
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Exit))
                    {
                        users = (List <UserInfo>)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            lbUsers.Items.Clear();
                            foreach (UserInfo item in users)
                            {
                                lbUsers.Items.Add(item.UserNick + "(" + item.UserRating.ToString() + ")");
                            }
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Offer))
                    {
                        if (offer)
                        {
                            return;
                        }
                        UserInfo userOpp = (UserInfo)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            if (MessageBox.Show("Игрок " + userOpp.UserNick + " предлагает игру." +
                                                "\n\rВступить в игру?",
                                                this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
                                == System.Windows.Forms.DialogResult.Yes)
                            {
                                offer             = true;
                                UserInfo[] users1 = { userOpp, currUser };
                                byte[] message    = SerializationUtils.Serialization(
                                    MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.Accept], users1);
                                SendData(message);
                            }
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.NewGame))
                    {
                        currentGame = (GInfo)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            offer = true;
                            gameForm.Show();
                            gameForm.Refresh();
                            gameForm.SetOpp(currentGame.userOpp.UserNick);
                            btnCancelGame.Enabled = false;
                            btnCreateGame.Enabled = true;
                            this.Hide();
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Start))
                    {
                        UserInfo userToMove = (UserInfo)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            if (currUser.UserNumber == userToMove.UserNumber)
                            {
                                gameForm.SetGame(true);
                            }
                            else
                            {
                                gameForm.SetGame(false);
                            }
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Move))
                    {
                        Move move = (Move)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            gameForm.AttackF(move);
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Attack))
                    {
                        Move move = (Move)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            gameForm.MarkF(move);
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Win))
                    {
                        int newR = (int)SerializationUtils.DeSerialization(allData);
                        MessageBox.Show("Вы победили!");
                        this.Invoke(new MethodInvoker(() =>
                        {
                            currUser.UserRating = newR;
                            gameForm.Hide();
                            this.Show();
                        }));
                        offer       = false;
                        currentGame = null;
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.Lose))
                    {
                        int newR = (int)SerializationUtils.DeSerialization(allData);
                        MessageBox.Show("Вы проиграли!");
                        this.Invoke(new MethodInvoker(() =>
                        {
                            currUser.UserRating = newR;
                            gameForm.Hide();
                            this.Show();
                        }));
                        offer       = false;
                        currentGame = null;
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.GMessage))
                    {
                        GameMessage gMess = (GameMessage)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            gameForm.NewMessage(gMess.mess);
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.UpdateGames))
                    {
                        openedGames = (List <GInfo>)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            lbGames.Items.Clear();
                            foreach (GInfo item in openedGames)
                            {
                                if (item.userOpp.UserNumber == currUser.UserNumber)
                                {
                                    btnCreateGame.Enabled = false;
                                    openedGame            = item;
                                }
                                lbGames.Items.Add(item.userOpp.UserNick);
                            }
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.LoginError))
                    {
                        this.Invoke(new MethodInvoker(() =>
                        {
                            authForm.LoginError();
                        }));
                    }
                    else if (MessTypeUtil.MessageCheck(allData, MessTypeUtil.TypeMEnum.LoginAccomplish))
                    {
                        //MessageBox.Show("Hiii");
                        currUser = (UserInfo)SerializationUtils.DeSerialization(allData);
                        this.Invoke(new MethodInvoker(() =>
                        {
                            lblUser.Text = "Игрок: " + currUser.UserNick;
                            authForm.Hide();
                            this.Show();
                        }));
                    }
                }
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }
コード例 #20
0
        public void InterruptGame(UserInfo loser, GInfo game)
        {
            Game currGame = null;

            foreach (Game item in Games)
            {
                if (item.gameInfo.gameID == game.gameID)
                {
                    currGame = item;
                    break;
                }
            }

            UserInfo winner;

            if (currGame.gameInfo.user1.UserNumber == loser.UserNumber)
            {
                winner = currGame.gameInfo.user2;
            }
            else
            {
                winner = currGame.gameInfo.user1;
            }

            int[] ratings = GetElo(winner.UserRating, loser.UserRating);
            winner.UserRating = ratings[0];
            loser.UserRating  = ratings[1];

            byte[] sendData1 = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.Win], winner.UserRating);
            SendToUser(winner, sendData1);
            sendData1 = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.Lose], loser.UserRating);
            SendToUser(loser, sendData1);

            Console.WriteLine("Игра завершена");
            Console.WriteLine("Победитель: " + winner.UserNick);
            Console.WriteLine("Проигравший: " + loser.UserNick);


            foreach (UserInfo item in users)
            {
                if (item.UserNumber == winner.UserNumber)
                {
                    item.UserRating = winner.UserRating;
                }
                if (item.UserNumber == loser.UserNumber)
                {
                    item.UserRating = loser.UserRating;
                }
            }

            //обновляем рейтинг в базе данных
            usersDatabase.UpdateRating(winner, winner.UserRating);
            usersDatabase.UpdateRating(loser, loser.UserRating);

            Games.Remove(currGame);
            //обновляем список пользователей на клиенте
            byte[] sendData2 = SerializationUtils.Serialization(
                MessTypeUtil.MessageTypes[(int)MessTypeUtil.TypeMEnum.Entrance],
                Users);
            SendAll(sendData2);
        }
コード例 #21
0
 protected virtual void StartFinding()
 {
     GInfo.IncrementTotalSpecies();
     NewSpecieEvent();
 }