From 0552f1b17cafbfca865b56b5ba124db81678eca1 Mon Sep 17 00:00:00 2001 From: Ocame Date: Tue, 5 Mar 2019 04:14:39 +0100 Subject: [PATCH] =?UTF-8?q?Ini-Funktion=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Shadowrun/dice.java | 142 ++++++------------ .../java/Shadowrun/messageInterpreter.java | 90 +++++++++++ 2 files changed, 134 insertions(+), 98 deletions(-) create mode 100644 src/main/java/Shadowrun/messageInterpreter.java diff --git a/src/main/java/Shadowrun/dice.java b/src/main/java/Shadowrun/dice.java index 919d12c..8e03023 100755 --- a/src/main/java/Shadowrun/dice.java +++ b/src/main/java/Shadowrun/dice.java @@ -31,7 +31,7 @@ public class dice extends ListenerAdapter { private language activLang; - Map channelList = new HashMap(); + private Map channelList = new HashMap<>(); public dice() { @@ -139,8 +139,6 @@ public class dice extends ListenerAdapter { } catch (Exception e) { System.out.println("problem: " + e.getMessage()); - } finally { - } } @@ -151,8 +149,6 @@ public class dice extends ListenerAdapter { */ private void roll(MessageReceivedEvent event) { - - EmbedBuilder outputBox = new EmbedBuilder(); int[] verteilung = new int[6]; @@ -224,19 +220,6 @@ public class dice extends ListenerAdapter { return; } } -/* - if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("^([0-9]*\\+)?[0-9]*([dw][0-9]*)?(\\+[0-9]*)?")) { // format besteh aus (Zahlen)+(Zahlen)d(Zahlen) oder (Zahlen)d(Zahlen)+(Zahlen) - String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("\\+"); - try { - diceart = Integer.parseInt(diceInterpreter[1]); - numberOdDice = Integer.parseInt(diceInterpreter[0]); - } - catch (NumberFormatException e) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); - return; - } - }*/ - if(numberOfDice <= 0) { @@ -255,7 +238,7 @@ public class dice extends ListenerAdapter { } verteilung[dice1]++; if((dice1 >= 4) || (dice1 == 0)) - result.append("**" + (dice1+1) + "**"); + result.append("**").append(dice1+1).append("**"); else result.append(dice1+1); result.append(" "); @@ -265,16 +248,16 @@ public class dice extends ListenerAdapter { } - if(hits == 0 && glitches == false) { // kein Erfolg, kein Patzer + if(hits == 0 && !glitches) { // kein Erfolg, kein Patzer outputBox.setColor(Color.gray); } - else if(hits == 0 && glitches == true) { // kriischer Patzer + else if(hits == 0 && glitches) { // kritischer Patzer outputBox.setColor(Color.red); } - else if(glitches == true) { // Patzer + else if(glitches) { // Patzer outputBox.setColor(Color.yellow); } - else { // Efolg + else { // Erfolg outputBox.setColor(Color.green); } @@ -304,8 +287,6 @@ public class dice extends ListenerAdapter { } catch (Exception e) { System.out.println("problem: " + e.getMessage()); - } finally { - } } @@ -313,15 +294,16 @@ public class dice extends ListenerAdapter { EmbedBuilder outputBox = new EmbedBuilder(); - int[] verteilung = new int[6]; int dice1; int numberOfDice = 1; int diceart = 6; + int iniBase = 0; + int ini = 0; StringBuilder result = new StringBuilder(""); try { String[] MsgParts = event.getMessage().getContentRaw().split(" ", 2); - if(MsgParts.length < 2) { + if(MsgParts.length < 2) { // Leerer Befehl String message = activLang.emptyCommand; message = message.replace("%command%", this.prefixIni); event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue(); @@ -344,37 +326,38 @@ public class dice extends ListenerAdapter { String[] iniParts = MsgParts[1].trim().toLowerCase().split("\\+", 2); - if(iniParts.length == 1) { + messageInterpreter mI = new messageInterpreter(event, activLang); + if(iniParts.length == 1) { // Nachricht hat kein + Zeichen + mI.inputInterpreter(iniParts[0]); + if(mI.isNum()) { + numberOfDice = mI.getIntResult(); + } + else if(mI.isDice()) { + diceart = mI.getDiceart(); + numberOfDice = mI.getNumberOfDice(); + } } else { + mI.inputInterpreter(iniParts[0]); // Vor dem + + if(mI.isNum()) { + iniBase = mI.getIntResult(); + } + else if(mI.isDice()) { + iniBase = mI.getNumberOfDice(); + } + + mI.inputInterpreter(iniParts[1]); // Nach dem + + if(mI.isNum()) { + numberOfDice = mI.getIntResult(); + } + else if(mI.isDice()) { + diceart = mI.getDiceart(); + numberOfDice = mI.getNumberOfDice(); + } } - if(true) { - this.inputInterpreter(event, iniParts[0]); - return; - } - if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen) - String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("[wd]"); - try { - diceart = Integer.parseInt(diceInterpreter[1]); - numberOfDice = Integer.parseInt(diceInterpreter[0]); - verteilung = new int[diceart]; - } - catch (NumberFormatException e) { - String message = activLang.error; - message = message.replace("%command%", MsgParts[1].trim().toLowerCase()); - event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue(); - return; - } - } - else { - String message = activLang.error; - message = message.replace("%command%", MsgParts[1].trim()); - event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue(); - return; - } } else { try { @@ -387,20 +370,6 @@ public class dice extends ListenerAdapter { return; } } -/* - if(MsgParts[1].trim().toLowerCase().replace(" ", "").matches("^([0-9]*\\+)?[0-9]*([dw][0-9]*)?(\\+[0-9]*)?")) { // format besteh aus (Zahlen)+(Zahlen)d(Zahlen) oder (Zahlen)d(Zahlen)+(Zahlen) - String[] diceInterpreter = MsgParts[1].trim().toLowerCase().replace(" ", "").split("\\+"); - try { - diceart = Integer.parseInt(diceInterpreter[1]); - numberOdDice = Integer.parseInt(diceInterpreter[0]); - } - catch (NumberFormatException e) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " Irgent was dummes ist passiert beim Verstehen von " + MsgParts[1].trim().toLowerCase()).queue(); - return; - } - }*/ - - if(numberOfDice <= 0) { String message = activLang.noNegativ; @@ -409,24 +378,23 @@ public class dice extends ListenerAdapter { } + ini += iniBase; for(int i = 0; i < numberOfDice; i++) { dice1 = new Random().nextInt(diceart); - - verteilung[dice1]++; result.append(dice1+1).append(" "); + ini += (dice1+1); } outputBox.setColor(new Color(104, 34, 139)); - String addition = ""; - - String message = activLang.resultText; + String message = "%iniBase%+%numberOfDice%w%diceart%\tIni: %ini%"; //activLang.resultText; //%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%"; - message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)).replace("%EdgeDice%", addition); + message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart)) + .replace("%iniBase%", String.valueOf(iniBase)).replace("%ini%", String.valueOf(ini)); outputBox.setTitle(event.getMember().getEffectiveName() + " " + message); - outputBox.setDescription("(" + result.toString().trim() + ")"); + outputBox.setDescription(String.valueOf(iniBase) + " + (" + result.toString().trim().replace(" ", "+") + ")"); event.getChannel().sendMessage(outputBox.build()).queue(); @@ -434,10 +402,11 @@ public class dice extends ListenerAdapter { catch (NumberFormatException e) { event.getChannel().sendMessage("Nope").queue(); } + catch (IllegalArgumentException e) { + event.getChannel().sendMessage(e.getMessage()).queue(); + } catch (Exception e) { System.out.println("problem: " + e.getMessage()); - } finally { - } } @@ -460,28 +429,5 @@ public class dice extends ListenerAdapter { event.getChannel().sendMessage(quotes[dice%6]).queue(); } - private void inputInterpreter(MessageReceivedEvent event, String Input) { - Scanner sc = new Scanner(Input.trim()); - Integer diceart = 6; - Integer numberOfDice = 1; - if(sc.hasNextInt()) { // ist eine Zahl - - } - else { - - if (Input.trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen) - String[] diceInterpreter = Input.trim().toLowerCase().replace(" ", "").split("[wd]"); - try { - diceart = Integer.parseInt(diceInterpreter[1]); - numberOfDice = Integer.parseInt(diceInterpreter[0]); - } catch (NumberFormatException e) { - String message = activLang.error; - message = message.replace("%command%", Input.trim().toLowerCase()); - event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue(); - return; - } - } - } - } } diff --git a/src/main/java/Shadowrun/messageInterpreter.java b/src/main/java/Shadowrun/messageInterpreter.java new file mode 100644 index 0000000..1b481c0 --- /dev/null +++ b/src/main/java/Shadowrun/messageInterpreter.java @@ -0,0 +1,90 @@ +package Shadowrun; + +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; + +import java.util.Scanner; + +public class messageInterpreter { + + private Integer diceart = 6; + private Integer numberOfDice = 1; + private Integer typ = 0; + private Integer intResult = 0; + + private language activLang; + private MessageReceivedEvent event; + + + public Integer getDiceart() { + return diceart; + } + + public Integer getNumberOfDice() { + return numberOfDice; + } + + public Integer getIntResult() { + return intResult; + } + + public boolean isNum() { + if(typ == 1) { + return true; + } + return false; + } + + public boolean isDice() { + if(typ == 2) { + return true; + } + return false; + } + /** + * + * @param event JDA Event + * @param activLang Aktive Sprache + */ + public messageInterpreter(MessageReceivedEvent event, language activLang) { + this.event = event; + this.activLang = activLang; + } + private void reset() { + diceart = 6; + numberOfDice = 1; + typ = 0; + intResult = 0; + } + public void inputInterpreter(String Input) { + reset(); + Scanner sc = new Scanner(Input.trim()); + + if(sc.hasNextInt()) { // ist eine Zahl + typ = 1; + intResult = Integer.parseInt(Input.trim()); + return; + } + else { + if (Input.trim().toLowerCase().replace(" ", "").matches("([0-9]*)[dw]([0-9].*)")) { // format besteh aus (Zahlen)d(Zahlen) oder (Zahlen)w(Zahlen) + String[] diceInterpreter = Input.trim().toLowerCase().replace(" ", "").split("[wd]"); + try { + diceart = Integer.parseInt(diceInterpreter[1]); + numberOfDice = Integer.parseInt(diceInterpreter[0]); + typ = 2; + } catch (NumberFormatException e) { + String message = activLang.error; + message = message.replace("%command%", Input.trim().toLowerCase()); + //event.getChannel().sendMessage(event.getMember().getAsMention() + message).queue(); + typ = -1; + throw new IllegalArgumentException( message ); + } + } + else { + String message = activLang.error; + message = message.replace("%command%", Input.trim().toLowerCase()); + typ = -1; + throw new IllegalArgumentException( message ); + } + } + } +}