public void mensaje_chat(string [] mensaje) { delegado_conMensaje mensaje_chat = new delegado_conMensaje(poner_mensaje); listBox1_msg.Invoke(mensaje_chat, new object[] { mensaje }); }
public void dar_tirada(string [] mensaje) { delegado_conMensaje tirada = new delegado_conMensaje(nueva_tirada); this.Invoke(tirada, new object[] { mensaje }); }
private void AtenderServidor() { while (true) { //Recibimos mensaje del servidor byte[] data = new byte[80]; socket.Receive(data); string[] mensaje = Encoding.ASCII.GetString(data).Split('\0'); string [] trozoMensaje = mensaje[0].Split('/'); int codigo = Convert.ToInt32(trozoMensaje[0]); switch (codigo) { case 0: //Respuesta al login delegado_vacio logeo; // 0/1/apodo -> login correcto // 0/-1 -> login erróneo if (Convert.ToInt32(trozoMensaje[1]) == -1) { logeo = new delegado_vacio(logeo_incorrecto); this.Invoke(logeo); } else { apodo = Convert.ToString(trozoMensaje[2]); logeo = new delegado_vacio(logeo_correcto); label_info_apodo.Invoke(logeo); } break; case 4: //Respuesta al registro delegado_vacio registro; // 4/1 -> registro correcto // 4/0 -> error en el registro if (Convert.ToInt32(trozoMensaje[1]) == 1) { registro = new delegado_vacio(registro_correcto); Invoke(registro); } else { registro = new delegado_vacio(registro_incorrecto); this.Invoke(registro); } break; case 6: //Notificación de cambio en lista de conectados delegado_conMensaje notificacion = new delegado_conMensaje(ListarConectados); this.Invoke(notificacion, new object[] { trozoMensaje }); break; case 8: //Respuesta a la peticion de eliminacion de usuario delegado_vacio elminiar_usuario; //8/1 -> eliminacion correcta //8/0 -> eliminacion incorrecta if (Convert.ToInt32(trozoMensaje[1]) == 1) { elminiar_usuario = new delegado_vacio(eliminacion_correcta); this.Invoke(elminiar_usuario); } else if (Convert.ToInt32(trozoMensaje[1]) == 0) { MessageBox.Show("Error al eliminar la cuenta"); } break; case 9: //Mensaje relacionado con partida // 9/tipo de mensaje/... //Volvemos a analizar la subpeticion int subcodigo = Convert.ToInt32(trozoMensaje[1]); string respuesta; switch (subcodigo) { case 1: //Inicio de partida // 9/1/idChat/1/color -> el chat se inicia // 9/1/idChat/0 -> el chat no se iniciara id_partida = Convert.ToInt32(trozoMensaje[2]); color = Convert.ToInt32(trozoMensaje[4]); if (Convert.ToInt32(trozoMensaje[3]) == 1) { //Ponemos en marcha el thread que ejecutara el formulario ThreadStart chat = delegate { crear_formulario(id_partida, color); }; Thread t = new Thread(chat); t.Start(); } break; case 2: //Invitacion a partida //9/2/host/idPartida string host = trozoMensaje[2]; id_partida = Convert.ToInt32(trozoMensaje[3]); DialogResult dr1 = MessageBox.Show(host + " te invita a jugar. ¿Aceptar invitación?", "ACEPTAR INVITACIÓN", MessageBoxButtons.YesNo); switch (dr1) { case DialogResult.No: //Construimos la respuesta para el servidor: 7/2/idChat/0 respuesta = ("9/2/" + id_partida + "/0\0"); socket.Send(Encoding.ASCII.GetBytes(respuesta)); break; case DialogResult.Yes: //Construimos la respuesta para el servidor: 7/2/idChat/1 respuesta = ("9/2/" + id_partida + "/1\0"); socket.Send(Encoding.ASCII.GetBytes(respuesta)); break; } break; case 5: //Notificacion con movimiento // 9/5/id_partida/color/ficha/nueva_pos int pos = posicion_formulario(formularios_partida, Convert.ToInt32(trozoMensaje[2])); formularios_partida[pos].dar_tirada(trozoMensaje); //Le damos el mensaje al formulario 2 break; case 6: //Mensaje para chat 9/6/id_partida/mensaje int posicion = posicion_formulario(formularios_partida, Convert.ToInt32(trozoMensaje[2])); formularios_partida[posicion].mensaje_chat(trozoMensaje); //A traves de la funcion mensaje le pasamos la info al formulario del chat break; } break; default: MessageBox.Show("Mensaje recibido erróneo."); break; } } }