Update ED und JDA
This commit is contained in:
@ -2,21 +2,15 @@ package Simpleroll;
|
||||
|
||||
import Shadowrun.db_connect;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.entities.channel.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
public class dice extends ListenerAdapter {
|
||||
|
||||
@ -59,12 +53,10 @@ public class dice extends ListenerAdapter {
|
||||
channelList.put(event.getChannel().getId(), Einstellungen.get("lang").toString());
|
||||
}
|
||||
switch (channelList.get(event.getChannel().getId())) {
|
||||
case "de":
|
||||
activLang = langDe;
|
||||
break;
|
||||
case "en":
|
||||
activLang = langEn;
|
||||
break;
|
||||
case "de":
|
||||
default:
|
||||
activLang = langDe;
|
||||
|
||||
@ -100,15 +92,6 @@ public class dice extends ListenerAdapter {
|
||||
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
|
||||
int[] verteilung = new int[6];
|
||||
int dice1;
|
||||
int numberOfDice = 1;
|
||||
int diceart = 6;
|
||||
StringBuilder result = new StringBuilder("");
|
||||
|
||||
int hits = 0;
|
||||
|
||||
|
||||
try {
|
||||
|
||||
String ContentRaw = event.getMessage().getContentRaw();
|
||||
@ -124,96 +107,40 @@ public class dice extends ListenerAdapter {
|
||||
}
|
||||
|
||||
|
||||
if(MsgParts[1].trim().matches(".*[^0-9].*")) { // es wurden andere zeichen als Zahlen gefunden
|
||||
if(MsgParts[1].trim().toLowerCase().equals("de")) {
|
||||
activLang = langDe;
|
||||
channelList.put(event.getChannel().getId(), "de");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "de", event.getGuild().getId(), event.getChannel().getName());
|
||||
return;
|
||||
}
|
||||
else if(MsgParts[1].trim().toLowerCase().equals("en")) {
|
||||
activLang = langEn;
|
||||
channelList.put(event.getChannel().getId(), "en");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "en", event.getGuild().getId(), event.getChannel().getName());
|
||||
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(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
String message = activLang.error;
|
||||
message = message.replace("%command%", MsgParts[1].trim());
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
if(MsgParts[1].trim().toLowerCase().equals("de")) {
|
||||
activLang = langDe;
|
||||
channelList.put(event.getChannel().getId(), "de");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "de", event.getGuild().getId(), event.getChannel().getName());
|
||||
return;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
numberOfDice = Integer.parseInt(MsgParts[1].trim().replace(" ", ""));
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
String message = activLang.error;
|
||||
message = message.replace("%command%", MsgParts[1].trim());
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(numberOfDice <= 0) {
|
||||
String message = activLang.noNegativ;
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
else if(MsgParts[1].trim().toLowerCase().equals("en")) {
|
||||
activLang = langEn;
|
||||
channelList.put(event.getChannel().getId(), "en");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "en", event.getGuild().getId(), event.getChannel().getName());
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < numberOfDice; i++) {
|
||||
dice1 = new Random().nextInt(diceart);
|
||||
verteilung[dice1]++;
|
||||
result.append(dice1+1);
|
||||
result.append(" ");
|
||||
}
|
||||
messageInterpreter mI = new messageInterpreter(activLang, MsgParts[1]);
|
||||
|
||||
|
||||
outputBox.setColor(Color.green);
|
||||
String addition = "";
|
||||
|
||||
String message = activLang.basisresultText;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart));
|
||||
outputBox.setTitle(getEffectiveName(event) + message);
|
||||
outputBox.setTitle(getEffectiveName(event) + " " + mI.getHeaderOutput() + ": " + mI.getResult());
|
||||
|
||||
|
||||
outputBox.setDescription("(" + result.toString().trim() + ")");
|
||||
if(mI.isComplex())
|
||||
outputBox.setDescription(mI.getResolveOutput() + "\n" + mI.getBodyOutput());
|
||||
else
|
||||
outputBox.setDescription(mI.getBodyOutput());
|
||||
|
||||
for(int i = 0; i < diceart; i++) {
|
||||
float pro = verteilung[i]*100f/numberOfDice;
|
||||
//outputBox.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true);
|
||||
}
|
||||
|
||||
event.getChannel().sendMessage(outputBox.build()).queue();
|
||||
/*event.getChannel().sendMessage(outputBox.build()).queue(message1 -> {
|
||||
message1.addReaction("sr:517528156014510111").queue();
|
||||
message1.addReaction("test:517545127376322596").queue();
|
||||
});*/
|
||||
/*
|
||||
if(event.getChannelType() == ChannelType.PRIVATE) {
|
||||
db.insertDice(event.getAuthor().getName(), event.getAuthor().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}
|
||||
else {
|
||||
db.insertDice(event.getMember().getEffectiveName(), event.getMember().getUser().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}*/
|
||||
event.getChannel().sendMessageEmbeds(outputBox.build()).queue();
|
||||
|
||||
System.runFinalization();
|
||||
System.gc();
|
||||
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
event.getChannel().sendMessage("Nope").queue();
|
||||
@ -229,7 +156,7 @@ public class dice extends ListenerAdapter {
|
||||
StringBuilder result = new StringBuilder("");
|
||||
|
||||
|
||||
outputBox.setTitle("Hallo ich exestieren aktuell in der Version: 0.8\n");
|
||||
outputBox.setTitle("Hallo ich exestieren aktuell in der Version: 0.10\n");
|
||||
|
||||
result.append("Ich kann aktuell folgent Wüfe:\n");
|
||||
result.append("**/r** bzw. **/roll** für Allgemeine würfe. Ohne eine angabe vom Würfeltyp wird ein W6 benuzt\n\n");
|
||||
@ -239,6 +166,9 @@ public class dice extends ListenerAdapter {
|
||||
result.append("**/l5r** bzw **/keep** für Legend of the 5 Rings\n");
|
||||
|
||||
outputBox.setDescription(result);
|
||||
event.getChannel().sendMessage(outputBox.build()).queue();
|
||||
event.getChannel().sendMessageEmbeds(outputBox.build()).queue();
|
||||
}
|
||||
|
||||
|
||||
//7d4+19+1d7
|
||||
}
|
||||
|
||||
238
src/main/java/Simpleroll/diceOld.java
Normal file
238
src/main/java/Simpleroll/diceOld.java
Normal file
@ -0,0 +1,238 @@
|
||||
package Simpleroll;
|
||||
|
||||
import Shadowrun.db_connect;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.channel.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
public class diceOld extends ListenerAdapter {
|
||||
|
||||
private String prefixR;
|
||||
private String prefixRoll;
|
||||
private String prefixHelp;
|
||||
|
||||
private language langDe = new language("de");
|
||||
private language langEn = new language("en");
|
||||
|
||||
private help helpDe = new help("de");
|
||||
private help helpEn = new help("En");
|
||||
|
||||
private language activLang;
|
||||
private help activHelp;
|
||||
|
||||
private db_connect db;
|
||||
|
||||
private Map<String, String> channelList = new HashMap<>();
|
||||
|
||||
|
||||
public diceOld() {
|
||||
this.prefixR = "/roll";
|
||||
this.prefixRoll = "/r ";
|
||||
this.prefixHelp = "/help";
|
||||
|
||||
this.db = new db_connect();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessageReceived(MessageReceivedEvent event) {
|
||||
if ((!event.getMessage().getContentRaw().startsWith(this.prefixR)
|
||||
&& !event.getMessage().getContentRaw().startsWith(this.prefixRoll) && !event.getMessage().getContentRaw().startsWith(this.prefixHelp))
|
||||
|| (event.getChannelType() != ChannelType.TEXT && event.getChannelType() != ChannelType.PRIVATE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!channelList.containsKey(event.getChannel().getId())) {
|
||||
Map<String, String> Einstellungen = db.getChannelSettings(event.getChannel().getId());
|
||||
channelList.put(event.getChannel().getId(), Einstellungen.get("lang").toString());
|
||||
}
|
||||
switch (channelList.get(event.getChannel().getId())) {
|
||||
case "de":
|
||||
activLang = langDe;
|
||||
break;
|
||||
case "en":
|
||||
activLang = langEn;
|
||||
break;
|
||||
default:
|
||||
activLang = langDe;
|
||||
|
||||
}
|
||||
User author = event.getAuthor();
|
||||
if (event.getMessage().getContentRaw().startsWith(this.prefixR) || event.getMessage().getContentRaw().startsWith(this.prefixRoll))
|
||||
this.roll(event);
|
||||
if (event.getMessage().getContentRaw().startsWith(this.prefixHelp))
|
||||
this.help(event);
|
||||
}
|
||||
|
||||
|
||||
private String getEffectiveName(MessageReceivedEvent event) {
|
||||
if(event.getMember() == null) {
|
||||
return "";
|
||||
}
|
||||
return event.getMember().getEffectiveName() + " ";
|
||||
}
|
||||
|
||||
private String getAsMention(MessageReceivedEvent event) {
|
||||
if(event.getMember() == null) {
|
||||
return "";
|
||||
}
|
||||
return event.getMember().getAsMention() + " ";
|
||||
}
|
||||
|
||||
/**
|
||||
* rolltest
|
||||
*
|
||||
* @param event JDA Event
|
||||
*/
|
||||
private void roll(MessageReceivedEvent event) {
|
||||
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
|
||||
int[] verteilung = new int[6];
|
||||
int dice1;
|
||||
int numberOfDice = 1;
|
||||
int diceart = 6;
|
||||
StringBuilder result = new StringBuilder("");
|
||||
|
||||
int hits = 0;
|
||||
|
||||
|
||||
try {
|
||||
|
||||
String ContentRaw = event.getMessage().getContentRaw();
|
||||
|
||||
// Prüfen ob Leerer Command gesendet wird
|
||||
String[] MsgParts = ContentRaw.replace(" ", " ").split(" ", 2);
|
||||
|
||||
if(MsgParts.length < 2) {
|
||||
String message = activLang.emptyCommand;
|
||||
message = message.replace("%command%", this.prefixRoll);
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if(MsgParts[1].trim().matches(".*[^0-9].*")) { // es wurden andere zeichen als Zahlen gefunden
|
||||
if(MsgParts[1].trim().toLowerCase().equals("de")) {
|
||||
activLang = langDe;
|
||||
channelList.put(event.getChannel().getId(), "de");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "de", event.getGuild().getId(), event.getChannel().getName());
|
||||
return;
|
||||
}
|
||||
else if(MsgParts[1].trim().toLowerCase().equals("en")) {
|
||||
activLang = langEn;
|
||||
channelList.put(event.getChannel().getId(), "en");
|
||||
event.getChannel().sendMessage(getAsMention(event) + activLang.language).queue();
|
||||
db.setChannelSettings(event.getChannel().getId(), "en", event.getGuild().getId(), event.getChannel().getName());
|
||||
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(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
String message = activLang.error;
|
||||
message = message.replace("%command%", MsgParts[1].trim());
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
numberOfDice = Integer.parseInt(MsgParts[1].trim().replace(" ", ""));
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
String message = activLang.error;
|
||||
message = message.replace("%command%", MsgParts[1].trim());
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(numberOfDice <= 0) {
|
||||
String message = activLang.noNegativ;
|
||||
event.getChannel().sendMessage(getAsMention(event) + message).queue();
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < numberOfDice; i++) {
|
||||
dice1 = new Random().nextInt(diceart);
|
||||
verteilung[dice1]++;
|
||||
result.append(dice1+1);
|
||||
result.append(" ");
|
||||
}
|
||||
outputBox.setColor(Color.green);
|
||||
String addition = "";
|
||||
|
||||
String message = activLang.basisresultText;
|
||||
//%numberOfDice%%dice%%diceart% %EdgeDice%:\tErfolge: %hits%\tMisserfolge: %oneHits%";
|
||||
message = message.replace("%numberOfDice%", String.valueOf(numberOfDice)).replace("%diceart%", String.valueOf(diceart));
|
||||
outputBox.setTitle(getEffectiveName(event) + message);
|
||||
|
||||
|
||||
outputBox.setDescription("(" + result.toString().trim() + ")");
|
||||
|
||||
for(int i = 0; i < diceart; i++) {
|
||||
float pro = verteilung[i]*100f/numberOfDice;
|
||||
//outputBox.addField(Integer.toString(i+1), Integer.toString(verteilung[i]) + " - " + String.format("%.2f", pro) + "%", true);
|
||||
}
|
||||
|
||||
event.getChannel().sendMessageEmbeds(outputBox.build()).queue();
|
||||
/*event.getChannel().sendMessage(outputBox.build()).queue(message1 -> {
|
||||
message1.addReaction("sr:517528156014510111").queue();
|
||||
message1.addReaction("test:517545127376322596").queue();
|
||||
});*/
|
||||
/*
|
||||
if(event.getChannelType() == ChannelType.PRIVATE) {
|
||||
db.insertDice(event.getAuthor().getName(), event.getAuthor().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}
|
||||
else {
|
||||
db.insertDice(event.getMember().getEffectiveName(), event.getMember().getUser().getId(), event.getMessage().getContentRaw(), result.toString().trim(), event.getChannel().getId());
|
||||
}*/
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
event.getChannel().sendMessage("Nope").queue();
|
||||
}
|
||||
catch (Exception e) {
|
||||
System.out.println("problem: " + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void help(MessageReceivedEvent event) {
|
||||
EmbedBuilder outputBox = new EmbedBuilder();
|
||||
StringBuilder result = new StringBuilder("");
|
||||
|
||||
|
||||
outputBox.setTitle("Hallo ich exestieren aktuell in der Version: 0.8\n");
|
||||
|
||||
result.append("Ich kann aktuell folgent Wüfe:\n");
|
||||
result.append("**/r** bzw. **/roll** für Allgemeine würfe. Ohne eine angabe vom Würfeltyp wird ein W6 benuzt\n\n");
|
||||
result.append("**/sr** für Shadowrun 5\n\n");
|
||||
result.append("**/ed** für Earthdawn 4\n\n");
|
||||
result.append("**/e** bzw **/engel** für die Arcane Version von Engel\n\n");
|
||||
result.append("**/l5r** bzw **/keep** für Legend of the 5 Rings\n");
|
||||
|
||||
outputBox.setDescription(result);
|
||||
event.getChannel().sendMessage(outputBox.build().toString()).queue();
|
||||
}
|
||||
}
|
||||
@ -2,89 +2,226 @@ package Simpleroll;
|
||||
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
import java.util.Scanner;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
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;
|
||||
private final language activLang;
|
||||
|
||||
private final StringBuilder bodyOutput;
|
||||
|
||||
public Integer getDiceart() {
|
||||
return diceart;
|
||||
}
|
||||
private final StringBuilder resolveOutput;
|
||||
|
||||
public Integer getNumberOfDice() {
|
||||
return numberOfDice;
|
||||
}
|
||||
private final StringBuilder headerOutput;
|
||||
|
||||
private boolean isComplex;
|
||||
|
||||
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;
|
||||
public messageInterpreter(language activLang) {
|
||||
this.activLang = activLang;
|
||||
bodyOutput = new StringBuilder();
|
||||
resolveOutput = new StringBuilder();
|
||||
headerOutput = new StringBuilder();
|
||||
isComplex = false;
|
||||
}
|
||||
private void reset() {
|
||||
diceart = 6;
|
||||
numberOfDice = 1;
|
||||
typ = 0;
|
||||
intResult = 0;
|
||||
public messageInterpreter(language activLang, String Input) {
|
||||
this(activLang);
|
||||
inputInterpreter(Input);
|
||||
}
|
||||
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;
|
||||
public void inputInterpreter(String Input) {
|
||||
|
||||
if(Input.trim().toLowerCase().replace(" ", "").matches("\\d+")) {
|
||||
Input = Input.trim().toLowerCase().replace(" ", "") + "w6";
|
||||
}
|
||||
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 );
|
||||
subpart result = new subpart();
|
||||
result = subPartAnalyse(Input);
|
||||
resolveOutput.append(result.getResolveOutput());
|
||||
bodyOutput.append(result.getBodyOutput());
|
||||
headerOutput.append(result.getHeaderOutput());
|
||||
intResult = result.getResolve();
|
||||
}
|
||||
|
||||
|
||||
private subpart subPartAnalyse(String part) {
|
||||
subpart result = new subpart();
|
||||
part = part.trim().toLowerCase().replace(" ", "");
|
||||
boolean first = true;
|
||||
/*
|
||||
if(part.contains("max(")) {
|
||||
/*
|
||||
1d6 + max(5d5+10,2d4+2) + 15
|
||||
|
||||
* /
|
||||
Pattern pattern = Pattern.compile("(?:.*)max\\((.*?)\\).*");
|
||||
Matcher matcher = pattern.matcher(part);
|
||||
if(matcher.find()) {
|
||||
//String pre = part.substring(0, (matcher.start() - 3));
|
||||
//String operation = part.substring((matcher.start() + 1), (matcher.end()-1));
|
||||
//String after = part.substring(matcher.end());
|
||||
StringBuilder newBody = new StringBuilder("max(");
|
||||
StringBuilder newHeader = new StringBuilder("max(");
|
||||
String[] subParts = matcher.group(1).split(",");
|
||||
subpart[] tempSubparts = new subpart[subParts.length];
|
||||
int i = 0;
|
||||
int highest = 0;
|
||||
for(String subPart : subParts) { // Vergleichen welcher wert der höhste ist
|
||||
tempSubparts[i] = subPartAnalyse(subPart);
|
||||
if(i != highest && tempSubparts[i].getResolve() > tempSubparts[highest].getResolve()) {
|
||||
highest = i;
|
||||
}
|
||||
if(i > 0) {
|
||||
newBody.append("), ");
|
||||
newHeader.append(", ");
|
||||
}
|
||||
newBody.append("(");
|
||||
newBody.append(tempSubparts[i].getBodyOutput());
|
||||
newHeader.append(tempSubparts[i].getHeaderOutput());
|
||||
i++;
|
||||
}
|
||||
newBody.append(")");
|
||||
newHeader.append(")");
|
||||
|
||||
int partmarker = new Random().nextInt(1500);
|
||||
//subPartAnalyse(part.substring(0, (matcher.start() - 3)) + tempSubparts[highest].getResolve() + part.substring(matcher.end()));
|
||||
subpart contAnalyser = subPartAnalyse(part.substring(0, (matcher.start(1) - 4)) + " ###b" + tempSubparts[highest].getResolve() + "##" + partmarker + "e### " + part.substring(matcher.end(1)+1));
|
||||
tempSubparts[highest].getResolve();
|
||||
result.appendBodyOutput(contAnalyser.getBodyOutput().replaceAll("###b" + tempSubparts[highest].getResolve() + "##" + partmarker + "e###", newBody.toString()));
|
||||
result.appendResolveOutput(contAnalyser.getResolveOutput().replaceAll("###b" + tempSubparts[highest].getResolve() + "##" + partmarker + "e###", "max(" + contAnalyser.getResolve().toString() + ")"));
|
||||
result.appendHeaderOutput(contAnalyser.getHeaderOutput().replaceAll("###b" + tempSubparts[highest].getResolve() + "##" + partmarker + "e###", newHeader.toString()));
|
||||
result.addResolve(contAnalyser.getResolve());
|
||||
|
||||
}
|
||||
else {
|
||||
//part.matches("")
|
||||
return result;
|
||||
}
|
||||
if(part.contains("min(")) {
|
||||
|
||||
}*/
|
||||
if(part.contains("+")) {
|
||||
String[] subParts = part.trim().split("\\+");
|
||||
subpart tempSubpart;
|
||||
for(String subPart : subParts) {
|
||||
tempSubpart = subPartAnalyse(subPart);
|
||||
if(!first) {
|
||||
result.appendBodyOutput(" + ");
|
||||
result.appendResolveOutput(" + ");
|
||||
result.appendHeaderOutput(" + ");
|
||||
}
|
||||
first = false;
|
||||
result.appendBodyOutput(tempSubpart.getBodyOutput());
|
||||
result.appendResolveOutput(tempSubpart.getResolveOutput());
|
||||
result.appendHeaderOutput(tempSubpart.getHeaderOutput());
|
||||
result.addResolve(tempSubpart.getResolve());
|
||||
}
|
||||
isComplex = true;
|
||||
return result;
|
||||
}
|
||||
if(part.contains("-")) {
|
||||
String[] subParts = part.trim().split("\\-");
|
||||
subpart tempSubpart;
|
||||
for(String subPart : subParts) {
|
||||
tempSubpart = subPartAnalyse(subPart);
|
||||
if(!first) {
|
||||
result.appendBodyOutput(" - ");
|
||||
result.appendResolveOutput(" - ");
|
||||
result.appendHeaderOutput(" - ");
|
||||
result.addResolve(tempSubpart.getResolve()*-1);
|
||||
}
|
||||
else
|
||||
result.addResolve(tempSubpart.getResolve());
|
||||
first = false;
|
||||
result.appendBodyOutput(tempSubpart.getBodyOutput());
|
||||
result.appendResolveOutput(tempSubpart.getResolveOutput());
|
||||
result.appendHeaderOutput(tempSubpart.getHeaderOutput());
|
||||
|
||||
}
|
||||
isComplex = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
if(part.matches("([0-9]*)[dw]([0-9]*)")) {
|
||||
String[] diceInterpreter = part.split("[wd]");
|
||||
try {
|
||||
int diceart = Integer.parseInt(diceInterpreter[1]);
|
||||
int numberOfDice = 1;
|
||||
if(!diceInterpreter[0].isEmpty())
|
||||
numberOfDice = Integer.parseInt(diceInterpreter[0]);
|
||||
result = roll(diceart, numberOfDice);
|
||||
} catch (NumberFormatException e) {
|
||||
String message = activLang.error;
|
||||
message = message.replace("%command%", Input.trim().toLowerCase());
|
||||
typ = -1;
|
||||
message = message.replace("%command%", part.trim().toLowerCase());
|
||||
throw new IllegalArgumentException( message );
|
||||
}
|
||||
}
|
||||
|
||||
else if(part.matches("\\d+")) {
|
||||
result.addResolve(Integer.parseInt(part));
|
||||
result.appendBodyOutput(part);
|
||||
result.appendHeaderOutput(part);
|
||||
result.appendResolveOutput(part);
|
||||
}
|
||||
else if(part.matches("###b\\d+##\\d+e###")) {
|
||||
Pattern pattern = Pattern.compile("###b(\\d+)##\\d+e###");
|
||||
Matcher matcher = pattern.matcher(part);
|
||||
matcher.find();
|
||||
result.addResolve(Integer.parseInt(matcher.group(1)));
|
||||
result.appendBodyOutput(part);
|
||||
result.appendHeaderOutput(part);
|
||||
result.appendResolveOutput(part);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
subpart roll(Integer diceart, Integer numberOfDice) {
|
||||
int dice = 0;
|
||||
subpart result = new subpart();
|
||||
result.appendHeaderOutput(numberOfDice.toString() + "w" + diceart.toString());
|
||||
result.appendBodyOutput("(");
|
||||
for(int i = 0; i < numberOfDice; i++) {
|
||||
dice = new Random().nextInt(diceart);
|
||||
if(i > 0) {
|
||||
result.appendBodyOutput(", ");
|
||||
}
|
||||
result.appendBodyOutput(dice+1);
|
||||
result.addResolve(dice+1);
|
||||
}
|
||||
result.appendBodyOutput(")");
|
||||
result.appendResolveOutput("(" + result.getResolve() + ")");
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getBodyOutput() {
|
||||
return bodyOutput.toString();
|
||||
}
|
||||
|
||||
public String getResolveOutput() {
|
||||
return resolveOutput.toString();
|
||||
}
|
||||
|
||||
public String getHeaderOutput() {
|
||||
return headerOutput.toString();
|
||||
}
|
||||
|
||||
public Integer getResult() {
|
||||
return intResult;
|
||||
}
|
||||
|
||||
public boolean isComplex() {
|
||||
return isComplex;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
69
src/main/java/Simpleroll/subpart.java
Normal file
69
src/main/java/Simpleroll/subpart.java
Normal file
@ -0,0 +1,69 @@
|
||||
package Simpleroll;
|
||||
|
||||
public class subpart {
|
||||
private StringBuilder bodyOutput;
|
||||
|
||||
private StringBuilder resolveOutput;
|
||||
|
||||
private StringBuilder headerOutput;
|
||||
|
||||
private Integer resolve;
|
||||
|
||||
public subpart() {
|
||||
bodyOutput = new StringBuilder("");
|
||||
resolveOutput = new StringBuilder("");
|
||||
headerOutput = new StringBuilder("");
|
||||
resolve = 0;
|
||||
}
|
||||
|
||||
public String getBodyOutput() {
|
||||
return bodyOutput.toString();
|
||||
}
|
||||
|
||||
public void appendBodyOutput(String bodyOutput) {
|
||||
this.bodyOutput.append(bodyOutput);
|
||||
}
|
||||
public void appendBodyOutput(Integer bodyOutput) {
|
||||
this.bodyOutput.append(bodyOutput);
|
||||
}
|
||||
|
||||
public String getResolveOutput() {
|
||||
return resolveOutput.toString();
|
||||
}
|
||||
|
||||
public void appendResolveOutput(String resolveOutput) {
|
||||
this.resolveOutput.append(resolveOutput);
|
||||
}
|
||||
|
||||
public String getHeaderOutput() {
|
||||
return headerOutput.toString();
|
||||
}
|
||||
|
||||
public void appendHeaderOutput(String headerOutput) {
|
||||
this.headerOutput.append(headerOutput);
|
||||
}
|
||||
|
||||
public Integer getResolve() {
|
||||
return resolve;
|
||||
}
|
||||
|
||||
public void setResolve(Integer resolve) {
|
||||
this.resolve = resolve;
|
||||
}
|
||||
|
||||
public void setBodyOutput(String bodyOutput) {
|
||||
this.bodyOutput = new StringBuilder(bodyOutput);
|
||||
}
|
||||
|
||||
public void setResolveOutput(String resolveOutput) {
|
||||
this.resolveOutput = new StringBuilder(resolveOutput);
|
||||
}
|
||||
|
||||
public void setHeaderOutput(String headerOutput) {
|
||||
this.headerOutput = new StringBuilder(headerOutput);
|
||||
}
|
||||
|
||||
public void addResolve(Integer i) {
|
||||
this.resolve += i;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user