示例#1
0
        private void AddBodyGame(PieceObject po, String es)
        {
            if (po.Equals(lastPiece))
            {
                return;
            }

            this.DrawTile(po, es);

            if (extremoA == -1)
            {
                extremoA = po.faceA;
                extremoB = po.faceB;
            }
            else
            {
                if (es.Equals("A"))
                {
                    extremoA = po.faceB;
                }
                else if (es.Equals("B"))
                {
                    extremoA = po.faceA;
                }
            }
        }
示例#2
0
        private void ManageLastPiece()
        {
            List <string> dadosWs = new List <string>();

            dadosWs.Add(this.idGame);
            string result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/get-last-played-piece"), dadosWs);

            if (String.IsNullOrEmpty(result))
            {
                ShowMsg("Não foi possível pegar a última peça! Tente novamente, mais tarde!");
                return;
            }

            PieceObject po = JsonConvert.DeserializeObject <PieceObject>(result);

            dadosWs = new List <string>();
            dadosWs.Add(this.idGame);
            result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/get-last-extreme-side"), dadosWs);

            if (String.IsNullOrEmpty(result))
            {
                ShowMsg("Não foi possível pegar o último lado! Tente novamente, mais tarde!");
                return;
            }

            this.AddBodyGame(po, result);
        }
示例#3
0
        public override bool Equals(Object obj)
        {
            // Check for null values and compare run-time types.
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            PieceObject p = (PieceObject)obj;

            return((faceA == p.faceA) && (faceB == p.faceB));
        }
示例#4
0
        private void btnBuyPiece_Click(object sender, EventArgs e)
        {
            if (!CanPlayAlone() && CanPlayBuying())
            {
                List <string> dadosWs = new List <string>();
                dadosWs.Add(this.idGame);
                dadosWs.Add(this.idPlayer);
                string result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/buy"), dadosWs);

                if (String.IsNullOrEmpty(result))
                {
                    ShowMsg("Não foi possível comprar uma nova peça!");
                    return;
                }

                MessageBox.Show("Peça comprada com sucesso!");
                PieceObject po = JsonConvert.DeserializeObject <PieceObject>(result);
                this.AddPieceToPlayer(po);
            }
            else
            {
                MessageBox.Show("Ação não permitida!");
            }
        }
示例#5
0
        private void DrawTileSubRoutine(PieceObject po, string valor)
        {
            bool        equal = po.faceA == po.faceB;
            PictureBox  pb1   = new PictureBox();
            PosicaoPeca pp    = PosicaoPeca.original;

            if (po.faceA == -1 || po.faceB == -1)
            {
                return;
            }

            byte[]       dadosImg = this.GetImageContent(this.cip.ID, po.faceA, po.faceB);
            MemoryStream ms       = new MemoryStream(dadosImg);
            Image        img      = Image.FromStream(ms);

            Size size = new Size(46, 86);

            img = ResizeImage(img, size);

            if (!equal)
            {
                img = this.RotateImage90Degrees(img);
                pp  = this.GetPosicaoPecaRotate90(pp);
            }

            Point newLoc = new Point(leftBody_left, topBody_left);

            pb1.Image = img;
            pb1.Size  = img.Size;

            if (!this.initialized)
            {
                pb1.Location  = newLoc;
                esquerdaEqual = direitaEqual = equal;
            }
            else
            {
                if (String.IsNullOrEmpty(valor))
                {
                    valor = "Esquerda";
                }

                if (valor.Equals("Esquerda"))
                {
                    // Segue a rota original!
                    if (esquerdaState == 0)
                    {
                        if (!equal)
                        {
                            if (esquerdaEqual)
                            {
                                newLoc.Offset(-img.Width, 17);
                            }
                            else
                            {
                                newLoc.Offset(-img.Width, 0);
                            }
                        }
                        else
                        {
                            newLoc.Offset(-46, -17);
                        }

                        if (newLoc.X < 0)
                        {
                            if (!equal)
                            {
                                img       = this.RotateImage90Degrees(img);
                                pp        = this.GetPosicaoPecaRotate90(pp);
                                pb1.Image = img;
                                pb1.Size  = img.Size;
                            }

                            if (!equal)
                            {
                                if (esquerdaEqual)
                                {
                                    newLoc.Offset(82, 67);
                                }
                                else
                                {
                                    newLoc.Offset(82, 44);
                                }
                            }
                            else
                            {
                                newLoc.Offset(28, 64);
                            }
                            esquerdaState       = 1;
                            firstEsquerdaState1 = true;
                        }
                    }
                    else if (esquerdaState == 1) // Desce
                    {
                        if (!equal || !firstEsquerdaState1)
                        {
                            img       = this.RotateImage90Degrees(img);
                            pp        = this.GetPosicaoPecaRotate90(pp);
                            pb1.Image = img;
                            pb1.Size  = img.Size;
                        }

                        if (!equal)
                        {
                            if (esquerdaEqual)
                            {
                                if (firstEsquerdaState1 == true)
                                {
                                    newLoc.Offset(-15, 74);
                                }
                                else
                                {
                                    newLoc.Offset(0, 74);
                                }
                            }
                            else
                            {
                                newLoc.Offset(0, 74);
                            }
                        }
                        else
                        {
                            newLoc.Offset(15, 74);
                        }

                        if (newLoc.Y > 75)
                        {
                            newLoc.Offset(0, 10);
                            esquerdaState       = 2;
                            firstEsquerdaState2 = true;
                        }

                        if (firstEsquerdaState1 == true)
                        {
                            firstEsquerdaState1 = false;
                        }
                    }
                    else if (esquerdaState == 2) // Segue a rota invertida
                    {
                        if (!equal)
                        {
                            if (firstEsquerdaState2)
                            {
                                if (esquerdaEqual)
                                {
                                    newLoc.Offset(img.Width, 17);
                                }
                                else
                                {
                                    newLoc.Offset(45, 29);
                                }

                                firstEsquerdaState2 = false;
                            }
                            else
                            {
                                if (esquerdaEqual)
                                {
                                    newLoc.Offset(45, 17);
                                }
                                else
                                {
                                    newLoc.Offset(img.Width, 0);
                                }
                            }
                        }
                        else
                        {
                            if (firstEsquerdaState2)
                            {
                                img       = this.RotateImage90Degrees(img);
                                pp        = this.GetPosicaoPecaRotate90(pp);
                                pb1.Image = img;
                                pb1.Size  = img.Size;
                                newLoc.Offset(55, 40);
                                firstEsquerdaState2 = false;
                                equal = false;
                            }
                            else
                            {
                                newLoc.Offset(84, -16);
                            }
                        }
                    }
                    esquerdaEqual = equal;
                    leftBody_left = newLoc.X;
                    topBody_left  = newLoc.Y;
                }
                else if (valor.Equals("Direita"))
                {
                    newLoc = new Point(leftBody_right, topBody_right);
                    // Segue a rota original!
                    if (direitaState == 0)
                    {
                        if (topBody_right == 100 && leftBody_right == 450)
                        {
                            newLoc.Offset(45, 17);
                        }
                        else if (!equal)
                        {
                            if (direitaEqual)
                            {
                                newLoc.Offset(79, 17);
                            }
                            else
                            {
                                newLoc.Offset(img.Width, 0);
                            }
                        }
                        else
                        {
                            newLoc.Offset(85, -17);
                        }

                        if (newLoc.X > 850)
                        {
                            if (!equal)
                            {
                                img       = this.RotateImage90Degrees(img);
                                pb1.Image = img;
                                pb1.Size  = img.Size;
                            }

                            if (!equal)
                            {
                                if (direitaEqual)
                                {
                                    newLoc.Offset(-82, 67);
                                }
                                else
                                {
                                    newLoc.Offset(-82, 44);
                                }
                            }
                            else
                            {
                                newLoc.Offset(-28, 64);
                            }
                            direitaState = 1;
                        }
                    }
                    else if (direitaState == 1) // Desce
                    {
                        if (!equal || !firstDireitaState1)
                        {
                            img       = this.RotateImage90Degrees(img);
                            pb1.Image = img;
                            pb1.Size  = img.Size;
                        }

                        if (!equal)
                        {
                            if (direitaEqual)
                            {
                                newLoc.Offset(0, 74);
                            }
                            else
                            {
                                if (firstDireitaState1 == true)
                                {
                                    newLoc.Offset(45, 74);
                                }
                                else
                                {
                                    newLoc.Offset(0, 74);
                                }
                            }
                        }
                        else
                        {
                            newLoc.Offset(0, 74);
                        }

                        if (newLoc.Y > 75)
                        {
                            newLoc.Offset(0, 10);
                            direitaState       = 2;
                            firstDireitaState2 = true;
                        }

                        if (firstDireitaState1 == true)
                        {
                            firstDireitaState1 = false;
                        }
                    }
                    else if (direitaState == 2) // Segue a rota invertida
                    {
                        if (!equal)
                        {
                            if (firstDireitaState2)
                            {
                                if (direitaEqual)
                                {
                                    newLoc.Offset(-img.Width, 17);
                                }
                                else
                                {
                                    newLoc.Offset(-85, 29);
                                }

                                firstDireitaState2 = false;
                            }
                            else
                            {
                                if (direitaEqual)
                                {
                                    newLoc.Offset(-85, 17);
                                }
                                else
                                {
                                    newLoc.Offset(-img.Width, 0);
                                }
                            }
                        }
                        else
                        {
                            if (firstDireitaState2)
                            {
                                img       = this.RotateImage90Degrees(img);
                                pb1.Image = img;
                                pb1.Size  = img.Size;
                                newLoc.Offset(-80, 30);
                                firstEsquerdaState2 = false;
                            }
                            else
                            {
                                newLoc.Offset(-45, -16);
                            }
                        }
                    }
                    direitaEqual   = equal;
                    leftBody_right = newLoc.X;
                    topBody_right  = newLoc.Y;
                }

                PosicaoPeca newPp = PosicaoPeca.original;
                if (valor == "Esquerda")
                {
                    newPp = this.ManageImageUnderConditions(img, this.extremoA, this.extremoB, po,
                                                            this.posicaoEsquerda, pp, "B");
                }
                else if (valor == "Direita")
                {
                    newPp = this.ManageImageUnderConditions(img, this.extremoA, this.extremoB, po,
                                                            this.posicaoDireita, pp, "B");
                }

                while (pp != newPp)
                {
                    img = this.RotateImage90Degrees(img);
                    pp  = this.GetPosicaoPecaRotate90(pp);
                }

                pb1.Size     = img.Size;
                pb1.Location = newLoc;
            }

            if (this.InvokeRequired)
            {
                this.BeginInvoke((MethodInvoker) delegate()
                {
                    Controls.Add(pb1);
                });
            }
            else
            {
                Controls.Add(pb1);
            }
        }
示例#6
0
        private PosicaoPeca ManageImageUnderConditions(Image img, int extremeA, int extremeB, PieceObject po,
                                                       PosicaoPeca lastPp, PosicaoPeca pp, String extremeSide)
        {
            PosicaoPeca newPp = pp;
            Boolean     equal = po.faceA == po.faceB;

            switch (extremeSide)
            {
            case "A":     // Direita
                switch (lastPp)
                {
                case PosicaoPeca.original:
                case PosicaoPeca.abaixo:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        if (!equal)
                        {
                            if (po.faceA == extremeA)
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                            else
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                        }
                        break;

                    case PosicaoPeca.esquerda:
                        if (po.faceA == extremeA)
                        {
                        }
                        else
                        {
                            newPp = this.GetPosicaoPecaRotate90(newPp);
                            newPp = this.GetPosicaoPecaRotate90(newPp);
                        }
                        break;

                    case PosicaoPeca.abaixo:
                        if (!equal)
                        {
                            if (po.faceB == extremeA)
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                            else
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                        }
                        break;

                    case PosicaoPeca.direita:
                        if (po.faceB == extremeA)
                        {
                        }
                        else
                        {
                            newPp = this.GetPosicaoPecaRotate90(newPp);
                            newPp = this.GetPosicaoPecaRotate90(newPp);
                        }
                        break;
                    }
                    break;

                case PosicaoPeca.esquerda:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        if (equal)
                        {
                        }
                        else
                        {
                            if (po.faceA == extremeA)
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                            else
                            {
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                                newPp = this.GetPosicaoPecaRotate90(newPp);
                            }
                        }
                        break;

                    case PosicaoPeca.esquerda:
                        //if (face)
                        break;

                    case PosicaoPeca.abaixo:
                        break;

                    case PosicaoPeca.direita:
                        break;
                    }
                    break;

                case PosicaoPeca.direita:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        break;

                    case PosicaoPeca.esquerda:
                        break;

                    case PosicaoPeca.abaixo:
                        break;

                    case PosicaoPeca.direita:
                        break;
                    }
                    break;

                default:
                    break;
                }
                break;

            case "B":     // Esquerda
                switch (lastPp)
                {
                case PosicaoPeca.original:
                case PosicaoPeca.abaixo:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        break;

                    case PosicaoPeca.esquerda:
                        break;

                    case PosicaoPeca.abaixo:
                        break;

                    case PosicaoPeca.direita:
                        break;
                    }
                    break;

                case PosicaoPeca.esquerda:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        break;

                    case PosicaoPeca.esquerda:
                        break;

                    case PosicaoPeca.abaixo:
                        break;

                    case PosicaoPeca.direita:
                        break;
                    }
                    break;

                case PosicaoPeca.direita:
                    switch (pp)
                    {
                    case PosicaoPeca.original:
                        break;

                    case PosicaoPeca.esquerda:
                        break;

                    case PosicaoPeca.abaixo:
                        break;

                    case PosicaoPeca.direita:
                        break;
                    }
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }

            return(newPp);
        }
示例#7
0
        private void AddPieceToPlayer(PieceObject piece)
        {
            Point newLoc = new Point(top, left);

            top += 55;
            Button b = new Button();

            dic_but_po[b] = piece;

            b.Size     = new Size(30, 40);
            b.Location = newLoc;
            b.Click   += (s, ne) => {
                if (CanPlayAlone())
                {
                    PieceObject po = dic_but_po[b];

                    string result;
                    if (extremoA != -1)
                    {
                        string escolha = this.GetSelectedDirectionComboBoxValue();
                        if (escolha.Equals("Direita"))
                        {
                            List <string> dadosWs = new List <string>();
                            dadosWs.Add(idGame);
                            dadosWs.Add(idPlayer);
                            dadosWs.Add(po.faceA.ToString());
                            dadosWs.Add(po.faceB.ToString());
                            dadosWs.Add("A");
                            result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/play"), dadosWs);

                            if (String.IsNullOrEmpty(result))
                            {
                                MessageBox.Show("Não foi possível jogar-se! Tente novamente, mais tarde!");
                                return;
                            }

                            if (!Convert.ToBoolean(result))
                            {
                                dadosWs = new List <string>();
                                dadosWs.Add(idGame);
                                dadosWs.Add(idPlayer);
                                dadosWs.Add(po.faceB.ToString());
                                dadosWs.Add(po.faceA.ToString());
                                dadosWs.Add("A");
                                result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/play"), dadosWs);
                            }
                        }
                        else if (escolha.Equals("Esquerda"))
                        {
                            List <string> dadosWs = new List <string>();
                            dadosWs.Add(idGame);
                            dadosWs.Add(idPlayer);
                            dadosWs.Add(po.faceA.ToString());
                            dadosWs.Add(po.faceB.ToString());
                            dadosWs.Add("B");
                            result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/play"), dadosWs);

                            if (String.IsNullOrEmpty(result))
                            {
                                MessageBox.Show("Não foi possível jogar-se! Tente novamente, mais tarde!");
                                return;
                            }

                            if (!Convert.ToBoolean(result))
                            {
                                dadosWs = new List <string>();
                                dadosWs.Add(idGame);
                                dadosWs.Add(idPlayer);
                                dadosWs.Add(po.faceB.ToString());
                                dadosWs.Add(po.faceA.ToString());
                                dadosWs.Add("B");
                                result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/play"), dadosWs);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Escolha um sentido: Direita ou Esquerda!");
                            return;
                        }
                    }
                    else
                    {
                        List <string> dadosWs = new List <string>();
                        dadosWs.Add(idGame);
                        dadosWs.Add(idPlayer);
                        dadosWs.Add(po.faceA.ToString());
                        dadosWs.Add(po.faceB.ToString());
                        dadosWs.Add("A");
                        result = RequisicoesRestWS.CustodiaRequisicao(WsUrlManager.GetUrl("/play"), dadosWs);
                    }

                    if (String.IsNullOrEmpty(result))
                    {
                        MessageBox.Show("Não foi possível jogar-se! Tente novamente, mais tarde!");
                        return;
                    }

                    if (Convert.ToBoolean(result))
                    {
                        string escolha = this.GetSelectedDirectionComboBoxValue();
                        if (String.IsNullOrEmpty(escolha))
                        {
                            escolha = "Esquerda";
                        }

                        this.DrawTile(po, escolha);

                        if (!this.initialized)
                        {
                            this.initialized = true;
                        }

                        if (this.InvokeRequired)
                        {
                            this.BeginInvoke((MethodInvoker) delegate()
                            {
                                Controls.Remove(b);
                            });
                        }
                        else
                        {
                            Controls.Remove(b);
                        }

                        btnPieces.Remove(b);

                        if (btnPieces.Count() > 0)
                        {
                            Button lb = btnPieces.Last();
                            lb.Location = b.Location;
                        }
                    }
                }
                else if (CanPlayBuying())
                {
                    MessageBox.Show("Compre novas peças!");
                }
                else
                {
                    MessageBox.Show("Aguarde a sua vez!");
                }
            };

            if (b.Location.X < 850)
            {
                newLoc.Offset(b.Height + 10, 0);
            }
            else
            {
                newLoc = new Point(150, 350);
                newLoc.Offset(0, b.Height + 25);
            }

            byte[]       dadosImg = this.GetImageContent(this.cip.ID, piece.faceA, piece.faceB);
            MemoryStream ms       = new MemoryStream(dadosImg);
            Image        img      = Image.FromStream(ms);

            b.BackgroundImage       = this.ResizeImage(img, b.Size);
            b.BackgroundImageLayout = ImageLayout.Stretch;
            b.ImageAlign            = ContentAlignment.MiddleRight;
            b.TextAlign             = ContentAlignment.MiddleLeft;

            if (this.InvokeRequired)
            {
                this.BeginInvoke((MethodInvoker) delegate()
                {
                    Controls.Add(b);
                });
            }
            else
            {
                Controls.Add(b);
            }

            btnPieces.Add(b);
        }
示例#8
0
 private void DrawTile(PieceObject po, string valor)
 {
     this.DrawTileSubRoutine(po, valor);
 }