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; } } }
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); }
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)); }
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!"); } }
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); } }
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); }
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); }
private void DrawTile(PieceObject po, string valor) { this.DrawTileSubRoutine(po, valor); }