From 2607150aed39b74eba2d407b11b4e23d21a75f80 Mon Sep 17 00:00:00 2001 From: tonikelope Date: Sat, 11 May 2024 12:46:49 +0200 Subject: [PATCH] 17.93 RADAR info msg on client connect --- pom.xml | 2 +- .../tonikelope/coronapoker/AboutDialog.java | 2 +- .../tonikelope/coronapoker/BalanceDialog.java | 4 ++-- .../com/tonikelope/coronapoker/Helpers.java | 13 +++++++++---- .../tonikelope/coronapoker/NewGameDialog.form | 4 ++-- .../tonikelope/coronapoker/NewGameDialog.java | 7 ++++--- .../tonikelope/coronapoker/Translator.java | 1 + .../coronapoker/WaitingRoomFrame.form | 10 +++++----- .../coronapoker/WaitingRoomFrame.java | 16 +++++++++++----- src/main/resources/images/shield.png | Bin 1627 -> 26725 bytes 10 files changed, 36 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index de50d104..260da8d5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope CoronaPoker - 17.92 + 17.93 jar diff --git a/src/main/java/com/tonikelope/coronapoker/AboutDialog.java b/src/main/java/com/tonikelope/coronapoker/AboutDialog.java index 8be64fc7..0083b3bc 100644 --- a/src/main/java/com/tonikelope/coronapoker/AboutDialog.java +++ b/src/main/java/com/tonikelope/coronapoker/AboutDialog.java @@ -64,7 +64,7 @@ */ public class AboutDialog extends javax.swing.JDialog { - public static final String VERSION = "17.92"; + public static final String VERSION = "17.93"; public static final String UPDATE_URL = "https://github.com/tonikelope/coronapoker/releases/latest"; public static final String TITLE = "¿De dónde ha salido esto?"; public static final int MAX_MOD_LOGO_HEIGHT = 75; diff --git a/src/main/java/com/tonikelope/coronapoker/BalanceDialog.java b/src/main/java/com/tonikelope/coronapoker/BalanceDialog.java index 92ef11e9..63187dfa 100644 --- a/src/main/java/com/tonikelope/coronapoker/BalanceDialog.java +++ b/src/main/java/com/tonikelope/coronapoker/BalanceDialog.java @@ -56,8 +56,8 @@ public BalanceDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); - - date.setText(Helpers.getFechaHoraActual() + " ("+Helpers.seconds2FullTime(GameFrame.getInstance().getConta_tiempo_juego())+")"); + + date.setText(Helpers.getFechaHoraActual() + " (" + Helpers.seconds2FullTime(GameFrame.getInstance().getConta_tiempo_juego()) + ")"); exit_button.requestFocus(); diff --git a/src/main/java/com/tonikelope/coronapoker/Helpers.java b/src/main/java/com/tonikelope/coronapoker/Helpers.java index 2f8ad9d0..ab2d517c 100644 --- a/src/main/java/com/tonikelope/coronapoker/Helpers.java +++ b/src/main/java/com/tonikelope/coronapoker/Helpers.java @@ -2539,11 +2539,15 @@ public void run() { }); } + public static void mostrarMensajeInformativo(Container container, String msg, ImageIcon icon) { + mostrarMensajeInformativo(container, msg, "center", null, icon); + } + public static void mostrarMensajeInformativo(Container container, String msg) { - mostrarMensajeInformativo(container, msg, "center", null); + mostrarMensajeInformativo(container, msg, "center", null, null); } - public static void mostrarMensajeInformativo(Container container, String msg, String align, Integer width) { + public static void mostrarMensajeInformativo(Container container, String msg, String align, Integer width, ImageIcon icon) { final String mensaje = Translator.translate(msg); @@ -2554,13 +2558,14 @@ public static void mostrarMensajeInformativo(Container container, String msg, St if (SwingUtilities.isEventDispatchThread()) { - JOptionPane.showMessageDialog(container, label); + JOptionPane.showMessageDialog(container, label, "Info", JOptionPane.INFORMATION_MESSAGE, icon != null ? new ImageIcon(icon.getImage().getScaledInstance(DIALOG_ICON_SIZE, Math.round((float) (icon.getIconHeight() * DIALOG_ICON_SIZE) / icon.getIconWidth()), Image.SCALE_SMOOTH)) : icon); } else { Helpers.GUIRunAndWait(new Runnable() { @Override public void run() { - JOptionPane.showMessageDialog(container, label); + JOptionPane.showMessageDialog(container, label, "Info", JOptionPane.INFORMATION_MESSAGE, icon != null ? new ImageIcon(icon.getImage().getScaledInstance(DIALOG_ICON_SIZE, Math.round((float) (icon.getIconHeight() * DIALOG_ICON_SIZE) / icon.getIconWidth()), Image.SCALE_SMOOTH)) : icon); + } }); } diff --git a/src/main/java/com/tonikelope/coronapoker/NewGameDialog.form b/src/main/java/com/tonikelope/coronapoker/NewGameDialog.form index f0ea1fab..290b9914 100644 --- a/src/main/java/com/tonikelope/coronapoker/NewGameDialog.form +++ b/src/main/java/com/tonikelope/coronapoker/NewGameDialog.form @@ -908,8 +908,8 @@ - - + + diff --git a/src/main/java/com/tonikelope/coronapoker/NewGameDialog.java b/src/main/java/com/tonikelope/coronapoker/NewGameDialog.java index 0a9d8601..5df77c18 100644 --- a/src/main/java/com/tonikelope/coronapoker/NewGameDialog.java +++ b/src/main/java/com/tonikelope/coronapoker/NewGameDialog.java @@ -30,6 +30,7 @@ import com.tonikelope.coronapoker.Helpers.JTextFieldRegularPopupMenu; import java.awt.Dimension; +import java.awt.Image; import java.awt.Toolkit; import java.awt.event.KeyEvent; import java.io.File; @@ -980,7 +981,7 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) { }); radar_label.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N - radar_label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/shield.png"))); // NOI18N + radar_label.setIcon(new ImageIcon(new ImageIcon(getClass().getResource("/images/shield.png")).getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH))); radar_label.setText("RADAR"); radar_label.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); radar_label.addMouseListener(new java.awt.event.MouseAdapter() { @@ -1325,7 +1326,7 @@ private void recover_checkboxActionPerformed(java.awt.event.ActionEvent evt) {// pack(); - Helpers.mostrarMensajeInformativo(this, "En el MODO RECUPERACIÓN se continuará la timba anterior desde donde se paró:\n\n1) Es OBLIGATORIO que los jugadores antiguos usen los MISMOS NICKS.\n\n2) Para poder continuar desde el PUNTO EXACTO (con la mismas cartas) es OBLIGATORIO que se conecten TODOS los jugadores antiguos. Si esto no fuera posible, se \"perderá\" la mano que estaba en curso cuando se interrumpió la timba.\n\n3) Está permitido que se unan a la timba jugadores nuevos (estarán la primera mano de espectadores).", "justify", (int) Math.round(getWidth() * 0.8f)); + Helpers.mostrarMensajeInformativo(this, "En el MODO RECUPERACIÓN se continuará la timba anterior desde donde se paró:\n\n1) Es OBLIGATORIO que los jugadores antiguos usen los MISMOS NICKS.\n\n2) Para poder continuar desde el PUNTO EXACTO (con la mismas cartas) es OBLIGATORIO que se conecten TODOS los jugadores antiguos. Si esto no fuera posible, se \"perderá\" la mano que estaba en curso cuando se interrumpió la timba.\n\n3) Está permitido que se unan a la timba jugadores nuevos (estarán la primera mano de espectadores).", "justify", (int) Math.round(getWidth() * 0.8f), null); } else { @@ -1555,7 +1556,7 @@ private void random_labelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRS + "\n" + "MODO CASINO: este modo utiliza la API de Random.org para obtener una permutación de 52 elementos. La aleatoriedad de Random.org proviene de un generador de números ALEATORIOS AUTÉNTICOS obtenidos a partir de RUIDO ATMOSFÉRICO, siendo por tanto capaz de generar cualquiera de las permutaciones posibles de una baraja de póker de forma impredecible y equiprobable.\n" + "\n" - + "MODO PARANOICO: este modo es un HÍBRIDO entre el MODO CASINO y el NORMAL. Primero se baraja usando el MODO CASINO y después se vuelve a barajar usando el MODO NORMAL. De esta forma, en un hipotético y MUY improbable caso de que la permutación devuelta por Random.org no fuera totalmente aleatoria por cualquier motivo (fortuito o malicioso), al volver a barajar quedaría neutralizado.", "justify", (int) Math.round(getWidth() * 0.8f)); + + "MODO PARANOICO: este modo es un HÍBRIDO entre el MODO CASINO y el NORMAL. Primero se baraja usando el MODO CASINO y después se vuelve a barajar usando el MODO NORMAL. De esta forma, en un hipotético y MUY improbable caso de que la permutación devuelta por Random.org no fuera totalmente aleatoria por cualquier motivo (fortuito o malicioso), al volver a barajar quedaría neutralizado.", "justify", (int) Math.round(getWidth() * 0.8f), null); }//GEN-LAST:event_random_labelMouseClicked private void radar_labelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_radar_labelMouseClicked diff --git a/src/main/java/com/tonikelope/coronapoker/Translator.java b/src/main/java/com/tonikelope/coronapoker/Translator.java index 77c45fd7..c19fbd8b 100644 --- a/src/main/java/com/tonikelope/coronapoker/Translator.java +++ b/src/main/java/com/tonikelope/coronapoker/Translator.java @@ -45,6 +45,7 @@ public class Translator { private static void English() { String[][] rosetta = { + {"El servidor ha activado el RADAR anti-trampas para esta partida.\nCualquier jugador podrá solicitar un informe anti-trampas de otro jugador durante la partida,\nel cual incluye una captura de pantalla del jugador (sin mostrar sus cartas) así como su listado de procesos del sistema.", "The server has activated anti-cheating RADAR for this game.\nAny player may request an anti-cheating report from another player during the game,\nwhich includes a screenshot of the player (without showing his cards) as well as his/her system process listing."}, {"HECHO A MANO EN ESPAÑA CON AMOR por tonikelope (c) 2020", "HANDMADE IN SPAIN WITH LOVE by tonikelope (c) 2020"}, {"Chat rápido", "Fast chat"}, {"Enviar imagen", "Send image"}, diff --git a/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.form b/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.form index b07a895c..9f199ec5 100644 --- a/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.form +++ b/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.form @@ -41,7 +41,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -177,7 +177,7 @@ - + @@ -517,8 +517,8 @@ - - + + diff --git a/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.java b/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.java index cb39fae8..b9bbf928 100644 --- a/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.java +++ b/src/main/java/com/tonikelope/coronapoker/WaitingRoomFrame.java @@ -1237,7 +1237,7 @@ private void mostrarMensajeInformativo(Container container, String msg) { this.protect_focus = false; - Helpers.mostrarMensajeInformativo(container, msg, "center", null); + Helpers.mostrarMensajeInformativo(container, msg, "center", null, null); this.protect_focus = focus_protection; } @@ -1248,7 +1248,7 @@ private void mostrarMensajeInformativo(Container container, String msg, String a this.protect_focus = false; - Helpers.mostrarMensajeInformativo(container, msg, align, width); + Helpers.mostrarMensajeInformativo(container, msg, align, width, null); this.protect_focus = focus_protection; } @@ -1523,6 +1523,12 @@ private void cliente() { GameFrame.RADAR_AVAILABLE = Boolean.parseBoolean(recibido); + if (GameFrame.RADAR_AVAILABLE) { + Helpers.threadRun(() -> { + Helpers.mostrarMensajeInformativo(THIS, "El servidor ha activado el RADAR anti-trampas para esta partida.\nCualquier jugador podrá solicitar un informe anti-trampas de otro jugador durante la partida,\nel cual incluye una captura de pantalla del jugador (sin mostrar sus cartas) así como su listado de procesos del sistema.", new ImageIcon(getClass().getResource("/images/shield.png"))); + }); + } + //Añadimos al servidor nuevoParticipante(server_nick, server_avatar, null, null, null, false, THIS.isUnsecure_server()); //Nos añadimos nosotros @@ -2651,7 +2657,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addGap(0, 0, 0) .addGroup(panel_conLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(kick_user, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panel_conectados, javax.swing.GroupLayout.DEFAULT_SIZE, 367, Short.MAX_VALUE))) + .addComponent(panel_conectados, javax.swing.GroupLayout.DEFAULT_SIZE, 739, Short.MAX_VALUE))) ); panel_conLayout.setVerticalGroup( panel_conLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2765,7 +2771,7 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { } }); - radar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/shield.png"))); // NOI18N + radar.setIcon(new ImageIcon(new ImageIcon(getClass().getResource("/images/shield.png")).getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH))); radar.setDoubleBuffered(true); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); @@ -3062,7 +3068,7 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(chat_notifications) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chat_scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE) + .addComponent(chat_scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) diff --git a/src/main/resources/images/shield.png b/src/main/resources/images/shield.png index 966bf4eb8f5f9671cce3cd0ee31e4ffc93270d86..ec12a43563f4bf1bb60373779b0bbb82d4e1e649 100644 GIT binary patch literal 26725 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 bcakV=0X1l{jkEj literal 1627 zcmV-h2Bi6kP)j4f9s=zSG>? z9NFJo1Yi(jEbAT=gFdGe`fX)kjB)$Bp`qbB0MGRc+>IMIMl;45Ih>)(gqVm-OjhgQ zrPd)OAs3P)i)voFbg81HrDf<-12Y&5L%QeMZ4Pjz@gf3dCc)D)8Y7k!qd9jvd?!ah zvt&K4ws#81uC6Xadwct500#646dxv8mK_*l>58J5EknAq;2_lFwD1f_#;}BPsFDxi zk1{V@+dU0m&emb(w69TDdqzNtN*fFpj7FnIlB73#4aFE!DTmB_F%wYFSH_GUoOBVjtzy^+*AyYFMSB^K|qT&M?*8JH6E( z>0uG@agPwO)XrK2%t%Ce*-rwpva+&}h+ec7u!K8>hirgPKoUl3cm5}o$_hY>-7fV) zYk?2yxA-A`X|%|}b2Td|%t`4pz_hS%vBG(- zW5^WEEgX zN5^1UmhYO)5?q|Z#5QAVz*AX%V)Hhc%;M&wQmN(<(eq@j%x1H=sRYemg-;i5v^iiw z!aOVtTp_C0+S=MiM6T2mF~&A?=QXQ#AZBs6)rnPB{)qdm1guQW7l6l)A3sb)ANL4Q zmSunLTz&Wy+?+$joUs{T;sLmf)1vZFy#UP4&dwyFw|WF zJ3L%;_#tIpj{!dl$raT*clMG1EGjD6NkmR$3-NZbt*xz&2i~{$C|t&dqA6#l)quPm z<=r1|?0JkUSFW_#+1UjU(aU5jb#`{XBT16z?$)o_1uu0tF6KQtA0Jt@@ul$ah{iJA z7V+Z1&-kFApjaXrMYdK$LxUgRSb0ypJUScGJtEMOKmD)_%XhP0$Sah&mQYiepL2M!!K zgNRU2`b}t4M5%tdl=3_L7h~6Ng*NA9ff5SW# Z{R7HbujSYo!E68k002ovPDHLkV1hrs03rYY