Initialer Commit
This commit is contained in:
27
xxx-domain/.classpath
Normal file
27
xxx-domain/.classpath
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/main/java"/>
|
||||
<classpathentry kind="src" path="src/main/resources"/>
|
||||
<classpathentry kind="src" path="src/main/testdaten"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="lib/codemodel.jar"/>
|
||||
<classpathentry kind="lib" path="lib/dtd-parser.jar"/>
|
||||
<classpathentry kind="lib" path="lib/FastInfoset.jar"/>
|
||||
<classpathentry kind="lib" path="lib/istack-commons-runtime.jar"/>
|
||||
<classpathentry kind="lib" path="lib/istack-commons-tools.jar"/>
|
||||
<classpathentry kind="lib" path="lib/javax.activation-api.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jaxb-api.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jaxb-jxc.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jaxb-runtime.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jaxb-xjc.jar"/>
|
||||
<classpathentry kind="lib" path="lib/relaxng-datatype.jar"/>
|
||||
<classpathentry kind="lib" path="lib/rngom.jar"/>
|
||||
<classpathentry kind="lib" path="lib/stax-ex.jar"/>
|
||||
<classpathentry kind="lib" path="lib/txw2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/xsom.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
17
xxx-domain/.project
Normal file
17
xxx-domain/.project
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>xxx-domain</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
2
xxx-domain/.settings/org.eclipse.core.resources.prefs
Normal file
2
xxx-domain/.settings/org.eclipse.core.resources.prefs
Normal file
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding/<project>=UTF-8
|
||||
14
xxx-domain/.settings/org.eclipse.jdt.core.prefs
Normal file
14
xxx-domain/.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,14 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=17
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=17
|
||||
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Anzeige.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Anzeige.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Beschreibung.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Beschreibung.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Geschlecht.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Geschlecht.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Rolle.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Rolle.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/SchablonenProvider.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/SchablonenProvider.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Session.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Session.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Spieler.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Spieler.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Toy.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Toy.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Werkzeug.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/Werkzeug.class
Normal file
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Aufgabe.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Aufgabe.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Beglueckung.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Beglueckung.class
Normal file
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Bestrafung.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Bestrafung.class
Normal file
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Lock.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Lock.class
Normal file
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/RumMachen.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/RumMachen.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Schablone.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Schablone.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Timer.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/aufgaben/Timer.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/AufgabenCreator.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/AufgabenCreator.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Beglueckung.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Beglueckung.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Sperre.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Sperre.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/StandardAufgaben.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/StandardAufgaben.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Strafe.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Strafe.class
Normal file
Binary file not shown.
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Toy.class
Normal file
BIN
xxx-domain/bin/de/stoermer/xxx/domain/xml/Toy.class
Normal file
Binary file not shown.
Binary file not shown.
1
xxx-domain/bin/de/stoermer/xxx/domain/xml/std.xml
Normal file
1
xxx-domain/bin/de/stoermer/xxx/domain/xml/std.xml
Normal file
File diff suppressed because one or more lines are too long
BIN
xxx-domain/lib/FastInfoset.jar
Normal file
BIN
xxx-domain/lib/FastInfoset.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/codemodel.jar
Normal file
BIN
xxx-domain/lib/codemodel.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/dtd-parser.jar
Normal file
BIN
xxx-domain/lib/dtd-parser.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/istack-commons-runtime.jar
Normal file
BIN
xxx-domain/lib/istack-commons-runtime.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/istack-commons-tools.jar
Normal file
BIN
xxx-domain/lib/istack-commons-tools.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/javax.activation-api.jar
Normal file
BIN
xxx-domain/lib/javax.activation-api.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/jaxb-api.jar
Normal file
BIN
xxx-domain/lib/jaxb-api.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/jaxb-jxc.jar
Normal file
BIN
xxx-domain/lib/jaxb-jxc.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/jaxb-runtime.jar
Normal file
BIN
xxx-domain/lib/jaxb-runtime.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/jaxb-xjc.jar
Normal file
BIN
xxx-domain/lib/jaxb-xjc.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/relaxng-datatype.jar
Normal file
BIN
xxx-domain/lib/relaxng-datatype.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/rngom.jar
Normal file
BIN
xxx-domain/lib/rngom.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/stax-ex.jar
Normal file
BIN
xxx-domain/lib/stax-ex.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/txw2.jar
Normal file
BIN
xxx-domain/lib/txw2.jar
Normal file
Binary file not shown.
BIN
xxx-domain/lib/xsom.jar
Normal file
BIN
xxx-domain/lib/xsom.jar
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public interface Anzeige {
|
||||
|
||||
public String anzeigeText();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public interface Beschreibung {
|
||||
|
||||
public String beschreibungsText();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public enum Geschlecht implements Anzeige {
|
||||
|
||||
MAENNLICH("Männlich"),
|
||||
WEIBLICH("Weiblich"),
|
||||
DIVERS("Divers");
|
||||
|
||||
private String anzeige;
|
||||
|
||||
Geschlecht(String anzeige) {
|
||||
this.anzeige = anzeige;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String anzeigeText() {
|
||||
return anzeige;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public class InkonsistenterAufgabenZustand extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public InkonsistenterAufgabenZustand(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public class InkonsistenterSpielerZustand extends Exception{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public InkonsistenterSpielerZustand(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
27
xxx-domain/src/main/java/de/stoermer/xxx/domain/Rolle.java
Normal file
27
xxx-domain/src/main/java/de/stoermer/xxx/domain/Rolle.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public enum Rolle implements Anzeige, Beschreibung {
|
||||
|
||||
BESTRAFENDE_PERSON("Bestrafende Person", "Die Person darf andere Personen bestrafen."),
|
||||
BESTRAFTE_PERSON("Bestrafte Person", "Die Person empfängt Strafen von anderen."),
|
||||
BEGLUECKENDE_PERSON("Beglückende Person", "Die Person darf andere Personen beglücken."),
|
||||
BEGLUECKTE_PERSON("Beglückte Person", "Die Person wird von anderen Personen beglückt.");
|
||||
|
||||
private String anzeige;
|
||||
private String beschreibung;
|
||||
|
||||
private Rolle(String anzeige, String beschreibungs) {
|
||||
this.anzeige = anzeige;
|
||||
this.beschreibung = beschreibungs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String anzeigeText() {
|
||||
return anzeige;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String beschreibungsText() {
|
||||
return beschreibung;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.stoermer.xxx.domain.aufgaben.BeglueckungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.BestrafungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.LockSchablone;
|
||||
|
||||
public interface SchablonenProvider {
|
||||
|
||||
List<LockSchablone> getSperren();
|
||||
|
||||
List<BeglueckungSchablone> getBeglueckungen();
|
||||
|
||||
List<BestrafungSchablone> getStrafen();
|
||||
|
||||
List<de.stoermer.xxx.domain.Toy> getToys();
|
||||
}
|
||||
215
xxx-domain/src/main/java/de/stoermer/xxx/domain/Session.java
Normal file
215
xxx-domain/src/main/java/de/stoermer/xxx/domain/Session.java
Normal file
@@ -0,0 +1,215 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.aufgaben.AlleLocksVerlaengern;
|
||||
import de.stoermer.xxx.domain.aufgaben.Aufgabe;
|
||||
import de.stoermer.xxx.domain.aufgaben.BeglueckungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.BestrafungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.LockSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.RumMachen;
|
||||
import de.stoermer.xxx.domain.aufgaben.UltimativeStrafe;
|
||||
|
||||
public class Session {
|
||||
|
||||
private List<Spieler> spieler;
|
||||
private int wahrscheinlichkeitSperre; // 0 - 100;
|
||||
private int wahrscheinlichkeitStrafe; // 0 - 100;
|
||||
|
||||
private List<LockSchablone> sperren;
|
||||
private List<BeglueckungSchablone> beglueckungen;
|
||||
private List<BestrafungSchablone> strafen;
|
||||
|
||||
private int aufgabeAufAktuellenLevel = 0;
|
||||
private int aufgabenProLevel = 10;
|
||||
private int level = 1;
|
||||
|
||||
public Session(List<Spieler> spieler, int wahrscheinlichkeitSperre, int wahrscheinlichkeitStrafe,
|
||||
List<Toy> toys, int aufgabenProLevel, SchablonenProvider schablonenProvider) throws InkonsistenterSpielerZustand, InkonsistenterAufgabenZustand {
|
||||
this.spieler = spieler;
|
||||
this.wahrscheinlichkeitSperre = wahrscheinlichkeitSperre;
|
||||
this.wahrscheinlichkeitStrafe = wahrscheinlichkeitStrafe;
|
||||
this.sperren = schablonenProvider.getSperren().stream().filter(sperre -> sperre.moeglich(toys)).toList();
|
||||
this.beglueckungen = schablonenProvider.getBeglueckungen().stream().filter(sperre -> sperre.moeglich(toys)).toList();
|
||||
this.strafen = schablonenProvider.getStrafen().stream().filter(sperre -> sperre.moeglich(toys)).toList();
|
||||
this.aufgabenProLevel = aufgabenProLevel;
|
||||
|
||||
checkSpieler();
|
||||
cehckAufgabe();
|
||||
}
|
||||
|
||||
private void cehckAufgabe() throws InkonsistenterAufgabenZustand {
|
||||
if (sperren.isEmpty() && strafen.isEmpty() && beglueckungen.isEmpty()) {
|
||||
throw new InkonsistenterAufgabenZustand("Ein Spiel ohne Aufgaben macht wenig Sinn...");
|
||||
}
|
||||
}
|
||||
|
||||
private void checkSpieler() throws InkonsistenterSpielerZustand {
|
||||
for (Spieler spieler : spielerMitRolle(Rolle.BESTRAFTE_PERSON)) {
|
||||
if (spielerMitRolleAußer(Rolle.BESTRAFENDE_PERSON, spieler) == null) {
|
||||
throw new InkonsistenterSpielerZustand(spieler.getName() + " verfügt über keine Person, die sie/ihn bestrafen kann");
|
||||
}
|
||||
}
|
||||
for (Spieler spieler : spielerMitRolle(Rolle.BESTRAFENDE_PERSON)) {
|
||||
if (spielerMitRolleAußer(Rolle.BESTRAFTE_PERSON, spieler) == null) {
|
||||
throw new InkonsistenterSpielerZustand(spieler.getName() + " verfügt über keine Person, die sie/er bestrafen kann");
|
||||
}
|
||||
}
|
||||
for (Spieler spieler : spielerMitRolle(Rolle.BEGLUECKTE_PERSON)) {
|
||||
if (spielerMitRolleAußer(Rolle.BEGLUECKENDE_PERSON, spieler) == null) {
|
||||
throw new InkonsistenterSpielerZustand(spieler.getName() + " verfügt über keine Person, die sie/ihn beglücken kann");
|
||||
}
|
||||
}
|
||||
for (Spieler spieler : spielerMitRolle(Rolle.BEGLUECKENDE_PERSON)) {
|
||||
if (spielerMitRolleAußer(Rolle.BEGLUECKTE_PERSON, spieler) == null) {
|
||||
throw new InkonsistenterSpielerZustand(spieler.getName() + " verfügt über keine Person, die sie/ihn beglücken kann");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Spieler> spielerMitRolle(Rolle rolle) {
|
||||
return spieler.stream().filter(s -> s.getRollen().contains(rolle)).toList();
|
||||
}
|
||||
|
||||
public Spieler spielerMitRolleAußer(Rolle rolle, Spieler ausschluss) {
|
||||
List<Spieler> list = spieler.stream().filter(spieler -> spieler != ausschluss && spieler.getRollen().contains(rolle)).toList();
|
||||
if (list != null && list.size() > 0) {
|
||||
return list.get(new Random().nextInt(list.size()));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Aufgabe naechsteAufgabe() {
|
||||
System.out.println("Aktuelles Level: " + level);
|
||||
System.out.println("Vor neuer Aufgabe: ");
|
||||
logStatus();
|
||||
Random random = new Random();
|
||||
int nextInt = random.nextInt(100);
|
||||
System.out.println("Random Wert: " + nextInt);
|
||||
if (nextInt == 1) {
|
||||
List<Spieler> bestraftePersonen = spielerMitRolle(Rolle.BESTRAFTE_PERSON);
|
||||
if (bestraftePersonen != null && !bestraftePersonen.isEmpty()) {
|
||||
Spieler bestraftePerson = bestraftePersonen.get(random.nextInt(bestraftePersonen.size()));
|
||||
Spieler bestrafendePerson = spielerMitRolleAußer(Rolle.BESTRAFENDE_PERSON, bestraftePerson);
|
||||
return new UltimativeStrafe(bestraftePerson, bestrafendePerson);
|
||||
}
|
||||
|
||||
}
|
||||
if (nextInt == 2) {
|
||||
List<Spieler> bestraftePersonen = spielerMitRolle(Rolle.BESTRAFTE_PERSON);
|
||||
if (bestraftePersonen != null && !bestraftePersonen.isEmpty()) {
|
||||
Spieler bestraftePerson = bestraftePersonen.get(random.nextInt(bestraftePersonen.size()));
|
||||
Spieler bestrafendePerson = spielerMitRolleAußer(Rolle.BESTRAFENDE_PERSON, bestraftePerson);
|
||||
return new AlleLocksVerlaengern(bestraftePerson, bestrafendePerson);
|
||||
}
|
||||
}
|
||||
if (nextInt < 2 + wahrscheinlichkeitSperre) {
|
||||
System.out.println("Wahrscheinlichkeit Sperre");
|
||||
List<Spieler> spielerMitRolle = new ArrayList<>(spielerMitRolle(Rolle.BESTRAFTE_PERSON));
|
||||
Collections.shuffle(spielerMitRolle);
|
||||
for (Spieler weggesperrtePerson : spielerMitRolle) {
|
||||
List<Werkzeug> wegsperrbareWerkzeuge = new ArrayList<>(weggesperrtePerson.wegsperrbareWerkzeuge());
|
||||
Collections.shuffle(wegsperrbareWerkzeuge);
|
||||
for (Werkzeug werkzeug : wegsperrbareWerkzeuge) {
|
||||
List<LockSchablone> potentielleSperren = sperren.stream().filter(sperre -> sperre.getWerkzeug() == werkzeug).toList();
|
||||
if (potentielleSperren != null && !potentielleSperren.isEmpty()) {
|
||||
LockSchablone lockSchablone = potentielleSperren.get(random.nextInt(potentielleSperren.size()));
|
||||
Spieler keyHolder = spielerMitRolleAußer(Rolle.BESTRAFENDE_PERSON, weggesperrtePerson);
|
||||
return lockSchablone.neuesLock(weggesperrtePerson, keyHolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nextInt < 2 + wahrscheinlichkeitSperre + wahrscheinlichkeitStrafe) {
|
||||
System.out.println("Wahrscheinlichkeit Strafe");
|
||||
List<Spieler> spielerMitRolle = spielerMitRolle(Rolle.BESTRAFTE_PERSON);
|
||||
if (spielerMitRolle != null && !spielerMitRolle.isEmpty()) {
|
||||
Spieler bestraftePerson = spielerMitRolle.get(random.nextInt(spielerMitRolle.size()));
|
||||
Spieler bestrafendePerson = spielerMitRolleAußer(Rolle.BESTRAFENDE_PERSON, bestraftePerson);
|
||||
if (bestrafendePerson != null && bestraftePerson != null) {
|
||||
List<BestrafungSchablone> potentielleStrafen = strafen.stream().filter(strafe -> strafe.isAusfuehrbar(bestraftePerson, bestrafendePerson, level)).toList();
|
||||
if (potentielleStrafen != null && !potentielleStrafen.isEmpty()) {
|
||||
BestrafungSchablone schablone = potentielleStrafen.get(random.nextInt(potentielleStrafen.size()));
|
||||
checkLevel();
|
||||
return schablone.neueBestrafung(bestraftePerson, bestrafendePerson);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("Wähle Standard-Aufgabe");
|
||||
List<Spieler> spielerMitRolle = spielerMitRolle(Rolle.BEGLUECKTE_PERSON);
|
||||
if (spielerMitRolle != null && !spielerMitRolle.isEmpty()) {
|
||||
Spieler begluecktePerson = spielerMitRolle.get(random.nextInt(spielerMitRolle.size()));
|
||||
Spieler beglueckendePerson = spielerMitRolleAußer(Rolle.BEGLUECKENDE_PERSON, begluecktePerson);
|
||||
if (beglueckendePerson != null) {
|
||||
List<BeglueckungSchablone> potentielleBeglueckungen = beglueckungen.stream().filter(begl -> begl.isAusfuehrbar(begluecktePerson, beglueckendePerson, level)).toList();
|
||||
if (potentielleBeglueckungen != null && !potentielleBeglueckungen.isEmpty()) {
|
||||
BeglueckungSchablone schablone = potentielleBeglueckungen.get(random.nextInt(potentielleBeglueckungen.size()));
|
||||
checkLevel();
|
||||
return schablone.beglueckungAusSchablone(begluecktePerson, beglueckendePerson);
|
||||
}
|
||||
}
|
||||
}
|
||||
checkLevel();
|
||||
return new RumMachen(spieler.get(0), spieler.get(1));
|
||||
}
|
||||
|
||||
private void checkLevel() {
|
||||
if (++aufgabeAufAktuellenLevel >= aufgabenProLevel && level < 5) {
|
||||
aufgabeAufAktuellenLevel = 0;
|
||||
level++;
|
||||
}
|
||||
}
|
||||
|
||||
private void logStatus() {
|
||||
for (Spieler aSpieler : spieler ) {
|
||||
aSpieler.logStauts();
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> pruefeLocks() {
|
||||
List<String> result = new ArrayList<>();
|
||||
spieler.forEach(spieler -> result.addAll(spieler.pruefeLocks()));
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<Spieler> getSpieler() {
|
||||
return spieler;
|
||||
}
|
||||
|
||||
public int getWahrscheinlichkeitSperre() {
|
||||
return wahrscheinlichkeitSperre;
|
||||
}
|
||||
|
||||
public int getWahrscheinlichkeitStrafe() {
|
||||
return wahrscheinlichkeitStrafe;
|
||||
}
|
||||
|
||||
public List<LockSchablone> getSperren() {
|
||||
return sperren;
|
||||
}
|
||||
|
||||
public List<BeglueckungSchablone> getBeglueckungen() {
|
||||
return beglueckungen;
|
||||
}
|
||||
|
||||
public List<BestrafungSchablone> getStrafen() {
|
||||
return strafen;
|
||||
}
|
||||
|
||||
public int getAufgabeAufAktuellenLevel() {
|
||||
return aufgabeAufAktuellenLevel;
|
||||
}
|
||||
|
||||
public int getAufgabenProLevel() {
|
||||
return aufgabenProLevel;
|
||||
}
|
||||
|
||||
public int getLevel() {
|
||||
return level;
|
||||
}
|
||||
}
|
||||
|
||||
84
xxx-domain/src/main/java/de/stoermer/xxx/domain/Spieler.java
Normal file
84
xxx-domain/src/main/java/de/stoermer/xxx/domain/Spieler.java
Normal file
@@ -0,0 +1,84 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.stoermer.xxx.domain.aufgaben.Lock;
|
||||
|
||||
public class Spieler {
|
||||
|
||||
private final String name;
|
||||
private final Geschlecht geschlecht;
|
||||
private final List<Rolle> rollen;
|
||||
private final List<Werkzeug> werkzeuge;
|
||||
|
||||
private Map<Werkzeug, Lock> currentLocks = new HashMap<>();
|
||||
|
||||
public Spieler(String name, Geschlecht geschlecht, List<Rolle> rollen, List<Werkzeug> werkzeuge) {
|
||||
this.name = name;
|
||||
this.geschlecht = geschlecht;
|
||||
this.rollen = Collections.unmodifiableList(rollen);
|
||||
this.werkzeuge = Collections.unmodifiableList(werkzeuge);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Geschlecht getGeschlecht() {
|
||||
return geschlecht;
|
||||
}
|
||||
|
||||
public List<Rolle> getRollen() {
|
||||
return rollen;
|
||||
}
|
||||
|
||||
public boolean istVerfuegbar(Werkzeug werkzeug) {
|
||||
return werkzeuge.contains(werkzeug) && currentLocks.entrySet().stream().noneMatch(entry -> werkzeug == entry.getKey());
|
||||
}
|
||||
|
||||
public List<Werkzeug> wegsperrbareWerkzeuge() {
|
||||
return werkzeuge.stream().filter(werkzeug -> currentLocks.entrySet().stream().noneMatch(entry -> werkzeug == entry.getKey())).toList();
|
||||
}
|
||||
|
||||
public void lock(Lock lock) {
|
||||
currentLocks.put(lock.getWerkzeug(), lock);
|
||||
}
|
||||
|
||||
public List<String> pruefeLocks() {
|
||||
List<Lock> unlock = currentLocks.entrySet().stream().filter(entry -> entry.getValue().getReleaseTime().isBefore(LocalDateTime.now())).map(entry -> entry.getValue()).toList();
|
||||
unlock.forEach(lock -> currentLocks.remove(lock.getWerkzeug()));
|
||||
return unlock.stream().map(lock -> lock.getReleaseText()).toList();
|
||||
}
|
||||
|
||||
public void lockVerlaengern(int times) {
|
||||
currentLocks.entrySet().forEach(entry -> entry.getValue().verlaengern(times));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public List<Werkzeug> getWerkzeuge() {
|
||||
return werkzeuge;
|
||||
}
|
||||
|
||||
public Map<Werkzeug, Lock> getCurrentLocks() {
|
||||
return currentLocks;
|
||||
}
|
||||
|
||||
public void logStauts() {
|
||||
System.out.println("*---Spielerinfo---*");
|
||||
System.out.println("Name: " + name);
|
||||
System.out.println("Rollen:");
|
||||
rollen.forEach(System.out::println);
|
||||
System.out.println("Werkzeuge:");
|
||||
werkzeuge.forEach(System.out::println);
|
||||
System.out.println("Locks:");
|
||||
currentLocks.entrySet().stream().map(entry -> entry.getValue()).forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
50
xxx-domain/src/main/java/de/stoermer/xxx/domain/Toy.java
Normal file
50
xxx-domain/src/main/java/de/stoermer/xxx/domain/Toy.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Toy {
|
||||
|
||||
private String id;
|
||||
private String beschreibung;
|
||||
|
||||
public String getBeschreibung() {
|
||||
return beschreibung;
|
||||
}
|
||||
|
||||
public void setBeschreibung(String beschreibung) {
|
||||
this.beschreibung = beschreibung;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static Toy fromXml(de.stoermer.xxx.domain.xml.Toy xml) {
|
||||
Toy toy = new Toy();
|
||||
toy.setId(xml.getId());
|
||||
toy.setBeschreibung(xml.getName());
|
||||
return toy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
Toy other = (Toy) obj;
|
||||
return Objects.equals(id, other.id);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package de.stoermer.xxx.domain;
|
||||
|
||||
public enum Werkzeug implements Anzeige, Beschreibung {
|
||||
|
||||
MUND("Mund", "Ob die Person gewillt ist den Mund einzusetzen."),
|
||||
VAGINA("Vagina", "Ob die Person über eine Vagina verfügt und gewillt ist diese einzusetzen."),
|
||||
PENIS("Penis", "Ob die Person über einen Penis verfügt und gewillt ist diesen einzusetzen."),
|
||||
ANUS("Anus", "Ob die Person gewillt ist den Anus einzusetzen."),
|
||||
UMSCHNALLDILDO("Umschnall-Dildo", "Ob die Person über einen Umschnall-Dildo verfügt und gewillt ist diesen einzusetzen.");
|
||||
|
||||
private String anzeige;
|
||||
private String beschreibung;
|
||||
|
||||
Werkzeug(String anzeige, String beschreibung) {
|
||||
this.anzeige = anzeige;
|
||||
this.beschreibung = beschreibung;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String beschreibungsText() {
|
||||
return beschreibung;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String anzeigeText() {
|
||||
return anzeige;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public class AlleLocksVerlaengern extends Aufgabe {
|
||||
|
||||
private static final String TEXT = "$SPIELER2, du entscheidest. Sollen alle bestehnden Zeitstrafen von $SPIELER1 verlängert werden...?";
|
||||
|
||||
public AlleLocksVerlaengern(Spieler bestraftePerson, Spieler bestrafendePerson) {
|
||||
super(bestraftePerson, bestrafendePerson, TEXT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
// Nix zu tun.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok() {
|
||||
int times = new Random().nextInt(2, 4);
|
||||
getSpieler1().lockVerlaengern(times);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public abstract class Aufgabe {
|
||||
|
||||
private final Spieler spieler1; // Der bestrafte oder beglückte
|
||||
private final Spieler spieler2; // Der Bestrafer oder Beglücker
|
||||
private final String text;
|
||||
|
||||
public Aufgabe(Spieler spieler1, Spieler spieler2, String text) {
|
||||
this.spieler1 = spieler1;
|
||||
this.spieler2 = spieler2;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String anzeigeText() {
|
||||
return text.replace("$SPIELER1", spieler1.getName()).replace("$SPIELER2", spieler2.getName());
|
||||
}
|
||||
|
||||
public abstract Timer getTimer();
|
||||
|
||||
public abstract void ok();
|
||||
|
||||
public abstract void abbrechen();
|
||||
|
||||
public Spieler getSpieler1() {
|
||||
return spieler1;
|
||||
}
|
||||
|
||||
public Spieler getSpieler2() {
|
||||
return spieler2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public class Beglueckung extends ZeitgesteuerteAufgabe {
|
||||
|
||||
public Beglueckung(Spieler spieler1, Spieler spieler2, String text, Integer timerSekunden) {
|
||||
super(spieler1, spieler2, text, timerSekunden);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
import de.stoermer.xxx.domain.Toy;
|
||||
import de.stoermer.xxx.domain.Werkzeug;
|
||||
|
||||
public class BeglueckungSchablone extends Schablone {
|
||||
|
||||
private Integer level;
|
||||
private String text;
|
||||
private Integer sekundenVon;
|
||||
private Integer sekundenBis;
|
||||
|
||||
private List<Werkzeug> benoetigteWerkzeugeBegluecktePerson;
|
||||
private List<Werkzeug> benoetigteWerkzeugeBeglueckendePerson;
|
||||
|
||||
public BeglueckungSchablone(List<Toy> benoetigteToys) {
|
||||
super(benoetigteToys);
|
||||
this.benoetigteWerkzeugeBeglueckendePerson = new ArrayList<>();
|
||||
this.benoetigteWerkzeugeBegluecktePerson = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean isAusfuehrbar(Spieler begluecktePerson, Spieler beglueckendePerson, int currentLevel) {
|
||||
if (currentLevel != level && (currentLevel - 1) != level) {
|
||||
return false;
|
||||
}
|
||||
for (Werkzeug werkzeug : benoetigteWerkzeugeBegluecktePerson) {
|
||||
if (!begluecktePerson.istVerfuegbar(werkzeug)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (benoetigteWerkzeugeBeglueckendePerson.isEmpty()) {
|
||||
return true;
|
||||
} else {
|
||||
for (Werkzeug werkzeug : benoetigteWerkzeugeBeglueckendePerson) {
|
||||
if (beglueckendePerson.istVerfuegbar(werkzeug)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public Beglueckung beglueckungAusSchablone(Spieler begluecktePerson, Spieler beglueckendePerson) {
|
||||
Integer timerSekunden = null;
|
||||
if (sekundenVon != null) {
|
||||
if (sekundenBis != null) {
|
||||
timerSekunden = new Random().nextInt(sekundenVon, sekundenBis);
|
||||
} else {
|
||||
timerSekunden = sekundenVon;
|
||||
}
|
||||
}
|
||||
return new Beglueckung(begluecktePerson, beglueckendePerson, text, timerSekunden);
|
||||
}
|
||||
|
||||
public static BeglueckungSchablone fromXml(de.stoermer.xxx.domain.xml.Beglueckung xml, List<de.stoermer.xxx.domain.xml.Toy> alle) {
|
||||
List<Toy> benoetigt = getBenoetigteToys(alle, xml.getBenoetigteToyIds());
|
||||
BeglueckungSchablone schablone = new BeglueckungSchablone(benoetigt);
|
||||
schablone.level = xml.getLevel() == null ? 1 : xml.getLevel();
|
||||
schablone.text = xml.getText();
|
||||
schablone.sekundenVon = xml.getSekundenVon();
|
||||
schablone.sekundenBis = xml.getSekundenBis();
|
||||
if (xml.getBenoetigteBegluecktePerson() != null) {
|
||||
xml.getBenoetigteBegluecktePerson().forEach(werkzeug -> schablone.benoetigteWerkzeugeBegluecktePerson.add(Werkzeug.valueOf(werkzeug)));
|
||||
}
|
||||
if (xml.getBenoetigteBeglueckendePerson() != null) {
|
||||
xml.getBenoetigteBeglueckendePerson().forEach(werkzeug -> schablone.benoetigteWerkzeugeBeglueckendePerson.add(Werkzeug.valueOf(werkzeug)));
|
||||
}
|
||||
return schablone;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public class Bestrafung extends ZeitgesteuerteAufgabe {
|
||||
|
||||
public Bestrafung(Spieler spieler1, Spieler spieler2, String text, Integer timerSekunden) {
|
||||
super(spieler1, spieler2, text, timerSekunden);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
import de.stoermer.xxx.domain.Toy;
|
||||
import de.stoermer.xxx.domain.Werkzeug;
|
||||
import de.stoermer.xxx.domain.xml.Strafe;
|
||||
|
||||
public class BestrafungSchablone extends Schablone {
|
||||
|
||||
private Integer level;
|
||||
private String text;
|
||||
private Integer sekundenVon;
|
||||
private Integer sekundenBis;
|
||||
|
||||
private List<Werkzeug> benoetigteWerkzeugeBestraftePerson;
|
||||
private List<Werkzeug> benoetigteWerkzeugeBestrafendePerson;
|
||||
|
||||
public BestrafungSchablone(List<Toy> benoetigteToys) {
|
||||
super(benoetigteToys);
|
||||
benoetigteWerkzeugeBestraftePerson = new ArrayList<>();
|
||||
benoetigteWerkzeugeBestrafendePerson = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean isAusfuehrbar(Spieler bestraftePerson, Spieler bestrafendePerson, Integer currentLevel) {
|
||||
if (currentLevel != level && (currentLevel - 1) != level) {
|
||||
return false;
|
||||
}
|
||||
for (Werkzeug werkzeug : benoetigteWerkzeugeBestraftePerson) {
|
||||
if (!bestraftePerson.istVerfuegbar(werkzeug)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (benoetigteWerkzeugeBestrafendePerson.isEmpty()) {
|
||||
return true;
|
||||
} else {
|
||||
for (Werkzeug werkzeug : benoetigteWerkzeugeBestrafendePerson) {
|
||||
if (bestrafendePerson.istVerfuegbar(werkzeug)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public Bestrafung neueBestrafung(Spieler spieler1, Spieler spieler2) {
|
||||
Integer timerSekunden = null;
|
||||
if (sekundenVon != null) {
|
||||
if (sekundenBis != null) {
|
||||
timerSekunden = new Random().nextInt(sekundenVon, sekundenBis);
|
||||
} else {
|
||||
timerSekunden = sekundenVon;
|
||||
}
|
||||
}
|
||||
return new Bestrafung(spieler1, spieler2, text, timerSekunden);
|
||||
}
|
||||
|
||||
public static BestrafungSchablone fromXml(Strafe xml, List<de.stoermer.xxx.domain.xml.Toy> alle) {
|
||||
List<Toy> benoetigt = getBenoetigteToys(alle, xml.getBenoetigteToyIds());
|
||||
BestrafungSchablone schablone = new BestrafungSchablone(benoetigt);
|
||||
schablone.level = xml.getLevel() == null ? 1 : xml.getLevel();
|
||||
schablone.text = xml.getText();
|
||||
schablone.sekundenVon = xml.getSekundenVon();
|
||||
schablone.sekundenBis = xml.getSekundenBis();
|
||||
if (xml.getBenoetigtBestraftePerson() != null) {
|
||||
xml.getBenoetigtBestraftePerson().forEach(werkzeug -> schablone.benoetigteWerkzeugeBestraftePerson.add(Werkzeug.valueOf(werkzeug)));
|
||||
}
|
||||
if (xml.getBenoetigtBestrafendePerson() != null) {
|
||||
xml.getBenoetigtBestrafendePerson().forEach(werkzeug -> schablone.benoetigteWerkzeugeBestrafendePerson.add(Werkzeug.valueOf(werkzeug)));
|
||||
}
|
||||
return schablone;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
import de.stoermer.xxx.domain.Werkzeug;
|
||||
|
||||
public class Lock extends Aufgabe {
|
||||
|
||||
private final int minuten;
|
||||
private LocalDateTime releaseTime;
|
||||
|
||||
private final String releaseText;
|
||||
private final Werkzeug werkzeug;
|
||||
|
||||
public Lock(Spieler spieler1, Spieler spieler2, String text, int minuten, Werkzeug werkzeug, String releaseText) {
|
||||
super(spieler1, spieler2, text);
|
||||
this.minuten = minuten;
|
||||
this.werkzeug = werkzeug;
|
||||
this.releaseText = releaseText;
|
||||
}
|
||||
|
||||
public void verlaengern(int times) {
|
||||
releaseTime.plusMinutes((times * minuten));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public void ok() {
|
||||
releaseTime = LocalDateTime.now().plusMinutes(minuten);
|
||||
getSpieler1().lock(this);
|
||||
}
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
}
|
||||
|
||||
public String getReleaseText() {
|
||||
return releaseText.replace("$SPIELER1", getSpieler1().getName()).replace("$SPIELER2", getSpieler2().getName());
|
||||
}
|
||||
|
||||
public Werkzeug getWerkzeug() {
|
||||
return werkzeug;
|
||||
}
|
||||
|
||||
public LocalDateTime getReleaseTime() {
|
||||
return releaseTime;
|
||||
}
|
||||
|
||||
public int getMinuten() {
|
||||
return minuten;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Lock " + werkzeug + " bis " + releaseTime + " (" + minuten + ")";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
import de.stoermer.xxx.domain.Toy;
|
||||
import de.stoermer.xxx.domain.Werkzeug;
|
||||
import de.stoermer.xxx.domain.xml.Sperre;
|
||||
|
||||
public class LockSchablone extends Schablone {
|
||||
|
||||
private static final int INTERVAL_STD = 15;
|
||||
private String text;
|
||||
private String releaseText;
|
||||
private Werkzeug werkzeug;
|
||||
private Integer minutenVon;
|
||||
private Integer minutenBis;
|
||||
|
||||
public LockSchablone(List<Toy> benoetigteToys) {
|
||||
super(benoetigteToys);
|
||||
}
|
||||
|
||||
public Werkzeug getWerkzeug() {
|
||||
return werkzeug;
|
||||
}
|
||||
|
||||
public Lock neuesLock(Spieler weggesperrterSpieler, Spieler keyholder) {
|
||||
return new Lock(weggesperrterSpieler, keyholder, text, getInterval(minutenVon, minutenBis), werkzeug, releaseText);
|
||||
}
|
||||
|
||||
private int getInterval(Integer minutenVon, Integer minutenBis) {
|
||||
if (minutenVon == null) {
|
||||
return INTERVAL_STD;
|
||||
} else if (minutenBis == null) {
|
||||
return minutenVon;
|
||||
} else {
|
||||
return new Random().nextInt(minutenVon, minutenBis);
|
||||
}
|
||||
}
|
||||
|
||||
public static LockSchablone fromXml(Sperre xml, List<de.stoermer.xxx.domain.xml.Toy> alle) {
|
||||
List<Toy> benoetigt = getBenoetigteToys(alle, xml.getBenoetigteToyIds());
|
||||
LockSchablone schablone = new LockSchablone(benoetigt);
|
||||
schablone.text = xml.getText();
|
||||
schablone.releaseText = xml.getReleaseText();
|
||||
|
||||
schablone.minutenVon = xml.getMinutenVon();
|
||||
schablone.minutenBis = xml.getMinutenBis();
|
||||
schablone.werkzeug = Werkzeug.valueOf(xml.getVerschluss());
|
||||
|
||||
return schablone;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public class RumMachen extends Aufgabe {
|
||||
|
||||
private static final String TEXT = "Ups, da ist etwas schief gelaufen. Keine Potentielle Aufgabe gefunden. $SPIELER1 und $SPIELER2 überbücken die Zeit mit leidenschaftlichen Küssen.";
|
||||
|
||||
public RumMachen(Spieler spieler1, Spieler spieler2) {
|
||||
super(spieler1, spieler2, TEXT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer() {
|
||||
return new Timer(new Random().nextInt(60, 180));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.stoermer.xxx.domain.Toy;
|
||||
|
||||
public class Schablone {
|
||||
|
||||
private final List<Toy> benoetigteToys;
|
||||
|
||||
public Schablone(List<Toy> benoetigteToys) {
|
||||
this.benoetigteToys = benoetigteToys;
|
||||
}
|
||||
|
||||
public boolean moeglich(List<Toy> verfuegbareToys) {
|
||||
return benoetigteToys.stream().allMatch(toy -> verfuegbareToys.contains(toy));
|
||||
}
|
||||
|
||||
protected static List<Toy> getBenoetigteToys(List<de.stoermer.xxx.domain.xml.Toy> alle, List<String> benoetigteToyIds) {
|
||||
List<Toy> benoetigt = new ArrayList<>();
|
||||
if (benoetigteToyIds != null) {
|
||||
benoetigteToyIds.forEach(id -> benoetigt.add(Toy.fromXml(alle.stream().filter(toy -> toy.getId().equals(id)).findFirst().get())));
|
||||
}
|
||||
return benoetigt;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
public class Timer {
|
||||
|
||||
private int sekunden;
|
||||
private LocalDateTime ziel;
|
||||
|
||||
public Timer(int sekunden) {
|
||||
this.sekunden = sekunden;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
ziel = LocalDateTime.now().plusSeconds(sekunden);
|
||||
}
|
||||
|
||||
public int getRestSekunden() {
|
||||
return (int) ChronoUnit.SECONDS.between(LocalDateTime.now(), ziel);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public class UltimativeStrafe extends Aufgabe {
|
||||
|
||||
private static final String TEXT = "$SPIELER2, verschnüre $SPIELER1 fachmännisch inkl. KG, Plugs, Knebel, Aufgabebinde und was dir sonst einfällt. Nutze die Ruhe für was auch immer du möchtest.";
|
||||
|
||||
public UltimativeStrafe(Spieler spieler1, Spieler spieler2) {
|
||||
super(spieler1, spieler2, TEXT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer() {
|
||||
return new Timer(new Random().nextInt(1800, 7200));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ok() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abbrechen() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package de.stoermer.xxx.domain.aufgaben;
|
||||
|
||||
import de.stoermer.xxx.domain.Spieler;
|
||||
|
||||
public abstract class ZeitgesteuerteAufgabe extends Aufgabe {
|
||||
|
||||
private Integer timerSekunden;
|
||||
|
||||
public ZeitgesteuerteAufgabe(Spieler spieler1, Spieler spieler2, String text, Integer timerSekunden) {
|
||||
super(spieler1, spieler2, text);
|
||||
this.timerSekunden = timerSekunden;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getTimer() {
|
||||
return timerSekunden == null ? null : new Timer(timerSekunden);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Beglueckung {
|
||||
|
||||
private Integer level;
|
||||
private String text;
|
||||
private Integer sekundenVon;
|
||||
private Integer sekundenBis;
|
||||
|
||||
private List<String> benoetigteBegluecktePerson;
|
||||
private List<String> benoetigteBeglueckendePerson;
|
||||
|
||||
private List<String> benoetigteToyIds;
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Integer getSekundenVon() {
|
||||
return sekundenVon;
|
||||
}
|
||||
|
||||
public void setSekundenVon(Integer sekundenVon) {
|
||||
this.sekundenVon = sekundenVon;
|
||||
}
|
||||
|
||||
public Integer getSekundenBis() {
|
||||
return sekundenBis;
|
||||
}
|
||||
|
||||
public void setSekundenBis(Integer sekundenBis) {
|
||||
this.sekundenBis = sekundenBis;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigteBegluecktePerson() {
|
||||
return benoetigteBegluecktePerson;
|
||||
}
|
||||
|
||||
public void setBenoetigteBegluecktePerson(List<String> benoetigteBegluecktePerson) {
|
||||
this.benoetigteBegluecktePerson = benoetigteBegluecktePerson;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigteBeglueckendePerson() {
|
||||
return benoetigteBeglueckendePerson;
|
||||
}
|
||||
|
||||
public void setBenoetigteBeglueckendePerson(List<String> benoetigteBeglueckendePerson) {
|
||||
this.benoetigteBeglueckendePerson = benoetigteBeglueckendePerson;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigteToyIds() {
|
||||
return benoetigteToyIds;
|
||||
}
|
||||
|
||||
public void setBenoetigteToyIds(List<String> benoetigteToyIds) {
|
||||
this.benoetigteToyIds = benoetigteToyIds;
|
||||
}
|
||||
|
||||
public Integer getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(Integer level) {
|
||||
this.level = level;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Sperre {
|
||||
|
||||
private String text;
|
||||
private String releaseText;
|
||||
private String verschluss;
|
||||
|
||||
private Integer minutenVon;
|
||||
private Integer minutenBis;
|
||||
|
||||
private List<String> benoetigteToyIds;
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getReleaseText() {
|
||||
return releaseText;
|
||||
}
|
||||
|
||||
public void setReleaseText(String releaseText) {
|
||||
this.releaseText = releaseText;
|
||||
}
|
||||
|
||||
public String getVerschluss() {
|
||||
return verschluss;
|
||||
}
|
||||
|
||||
public void setVerschluss(String verschluss) {
|
||||
this.verschluss = verschluss;
|
||||
}
|
||||
|
||||
public Integer getMinutenVon() {
|
||||
return minutenVon;
|
||||
}
|
||||
|
||||
public void setMinutenVon(Integer minutenVon) {
|
||||
this.minutenVon = minutenVon;
|
||||
}
|
||||
|
||||
public Integer getMinutenBis() {
|
||||
return minutenBis;
|
||||
}
|
||||
|
||||
public void setMinutenBis(Integer minutenBis) {
|
||||
this.minutenBis = minutenBis;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigteToyIds() {
|
||||
return benoetigteToyIds;
|
||||
}
|
||||
|
||||
public void setBenoetigteToyIds(List<String> benoetigteToyIds) {
|
||||
this.benoetigteToyIds = benoetigteToyIds;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class StandardAufgaben {
|
||||
|
||||
private List<Toy> toys;
|
||||
private List<Sperre> sperren;
|
||||
private List<Strafe> strafen;
|
||||
private List<Beglueckung> beglueckungen;
|
||||
|
||||
public List<Sperre> getSperren() {
|
||||
return sperren;
|
||||
}
|
||||
|
||||
public void setSperren(List<Sperre> sperren) {
|
||||
this.sperren = sperren;
|
||||
}
|
||||
|
||||
public List<Strafe> getStrafen() {
|
||||
return strafen;
|
||||
}
|
||||
|
||||
public void setStrafen(List<Strafe> strafen) {
|
||||
this.strafen = strafen;
|
||||
}
|
||||
|
||||
public List<Beglueckung> getBeglueckungen() {
|
||||
return beglueckungen;
|
||||
}
|
||||
|
||||
public void setBeglueckungen(List<Beglueckung> beglueckungen) {
|
||||
this.beglueckungen = beglueckungen;
|
||||
}
|
||||
|
||||
public List<Toy> getToys() {
|
||||
return toys;
|
||||
}
|
||||
|
||||
public void setToys(List<Toy> toys) {
|
||||
this.toys = toys;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Strafe {
|
||||
|
||||
private Integer level;
|
||||
private String text;
|
||||
private Integer sekundenVon;
|
||||
private Integer sekundenBis;
|
||||
|
||||
private List<String> benoetigtBestraftePerson;
|
||||
private List<String> benoetigtBestrafendePerson;
|
||||
|
||||
private List<String> benoetigteToyIds;
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Integer getSekundenVon() {
|
||||
return sekundenVon;
|
||||
}
|
||||
|
||||
public void setSekundenVon(Integer sekundenVon) {
|
||||
this.sekundenVon = sekundenVon;
|
||||
}
|
||||
|
||||
public Integer getSekundenBis() {
|
||||
return sekundenBis;
|
||||
}
|
||||
|
||||
public void setSekundenBis(Integer sekundenBis) {
|
||||
this.sekundenBis = sekundenBis;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigtBestraftePerson() {
|
||||
return benoetigtBestraftePerson;
|
||||
}
|
||||
|
||||
public void setBenoetigtBestraftePerson(List<String> benoetigtBestraftePerson) {
|
||||
this.benoetigtBestraftePerson = benoetigtBestraftePerson;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigtBestrafendePerson() {
|
||||
return benoetigtBestrafendePerson;
|
||||
}
|
||||
|
||||
public void setBenoetigtBestrafendePerson(List<String> benoetigtBestrafendePerson) {
|
||||
this.benoetigtBestrafendePerson = benoetigtBestrafendePerson;
|
||||
}
|
||||
|
||||
public List<String> getBenoetigteToyIds() {
|
||||
return benoetigteToyIds;
|
||||
}
|
||||
|
||||
public void setBenoetigteToyIds(List<String> benoetigteToyIds) {
|
||||
this.benoetigteToyIds = benoetigteToyIds;
|
||||
}
|
||||
|
||||
public Integer getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(Integer level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
}
|
||||
30
xxx-domain/src/main/java/de/stoermer/xxx/domain/xml/Toy.java
Normal file
30
xxx-domain/src/main/java/de/stoermer/xxx/domain/xml/Toy.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
public class Toy {
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
static Toy from(String id, String name) {
|
||||
Toy toy = new Toy();
|
||||
toy.id = id;
|
||||
toy.name = name;
|
||||
return toy;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
|
||||
import de.stoermer.xxx.domain.SchablonenProvider;
|
||||
import de.stoermer.xxx.domain.Toy;
|
||||
import de.stoermer.xxx.domain.aufgaben.BeglueckungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.BestrafungSchablone;
|
||||
import de.stoermer.xxx.domain.aufgaben.LockSchablone;
|
||||
|
||||
public class XmlAufgabenProvider implements SchablonenProvider {
|
||||
|
||||
private List<de.stoermer.xxx.domain.Toy> toys = new ArrayList<>();
|
||||
private List<LockSchablone> sperren = new ArrayList<>();
|
||||
private List<BeglueckungSchablone> beglueckungen = new ArrayList<>();
|
||||
private List<BestrafungSchablone> bestrafungen = new ArrayList<>();
|
||||
|
||||
public void initSchablonen() {
|
||||
try {
|
||||
Unmarshaller unmarshaller = JAXBContext.newInstance(StandardAufgaben.class).createUnmarshaller();
|
||||
StandardAufgaben aufgaben = (StandardAufgaben) unmarshaller
|
||||
.unmarshal(getClass().getResourceAsStream("std.xml"));
|
||||
aufgaben.getToys().forEach(xml -> this.toys.add(Toy.fromXml(xml)));
|
||||
aufgaben.getBeglueckungen()
|
||||
.forEach(xml -> beglueckungen.add(BeglueckungSchablone.fromXml(xml, aufgaben.getToys())));
|
||||
aufgaben.getSperren().forEach(xml -> sperren.add(LockSchablone.fromXml(xml, aufgaben.getToys())));
|
||||
aufgaben.getStrafen().forEach(xml -> bestrafungen.add(BestrafungSchablone.fromXml(xml, aufgaben.getToys())));
|
||||
} catch (JAXBException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
void safe(StandardAufgaben aufgaben) throws JAXBException, URISyntaxException {
|
||||
URL resourceUrl = getClass().getResource("std.xml");
|
||||
File file = new File(resourceUrl.toURI());
|
||||
StringWriter writer = new StringWriter();
|
||||
JAXBContext.newInstance(StandardAufgaben.class).createMarshaller().marshal(aufgaben, writer);
|
||||
try (FileOutputStream fos = new FileOutputStream(file)) {
|
||||
fos.write(writer.toString().getBytes());
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LockSchablone> getSperren() {
|
||||
return sperren;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BeglueckungSchablone> getBeglueckungen() {
|
||||
return beglueckungen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BestrafungSchablone> getStrafen() {
|
||||
return bestrafungen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<de.stoermer.xxx.domain.Toy> getToys() {
|
||||
return toys;
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,282 @@
|
||||
package de.stoermer.xxx.domain.xml;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
|
||||
import de.stoermer.xxx.domain.Werkzeug;
|
||||
|
||||
public class AufgabenCreator {
|
||||
|
||||
private Toy vibrator = Toy.from("vibr_1", "Vibrator");
|
||||
private Toy dildoKlein = Toy.from("dildo_klein", "Dildo klein");
|
||||
private Toy dildoMittel= Toy.from("dildo_mittel", "Dildo mittel");
|
||||
private Toy dildoGross = Toy.from("dildo_gross", "Dildo groß");
|
||||
private Toy plugKlein = Toy.from("plug_klein", "Plug klein");
|
||||
private Toy plugGross = Toy.from("plug_gross", "Plug groß");
|
||||
private Toy eletroPlug = Toy.from("electro_plug", "Electro Plug");
|
||||
private Toy fesseln = Toy.from("fesseln", "Fesseln");
|
||||
private Toy augenbinde = Toy.from("augenbinde", "Augenbinde");
|
||||
private Toy ballknebel = Toy.from("ball_knebel", "Ballknebel");
|
||||
private Toy penisknebel = Toy.from("penis_knebel", "Penisknebel");
|
||||
private Toy doppenPenisknebel = Toy.from("doppel_penis_knebel", "Doppel-Penisknebel");
|
||||
private Toy pumpPlug = Toy.from("pump_plug", "Pump plug");
|
||||
private Toy nippelklemmen = Toy.from("nippelklemmen", "Nippelklemmen");
|
||||
private Toy fickmaschine = Toy.from("fickmaschine", "Fickmaschine");
|
||||
private Toy penisVibrator = Toy.from("penisvibrator", "Penisvibrator");
|
||||
private Toy peitsche = Toy.from("peitsche", "Peitsche");
|
||||
private Toy gerte = Toy.from("gerte", "Gerte");
|
||||
private Toy paddel = Toy.from("paddel", "Paddel");
|
||||
private Toy kgFrau = Toy.from("kg", "Keuschheitsgürtel Frau");
|
||||
private Toy kgMann = Toy.from("kg", "Keuschheitsgürtel Mann");
|
||||
private Toy peniskaefig = Toy.from("peniskaefig", "Peniskäfig");
|
||||
private Toy analVibrator = Toy.from("analvibrator", "Anal-Vibrator");
|
||||
private Toy doppelDildo = Toy.from("doppeldildo", "Doppeldildo");
|
||||
|
||||
private void init() throws JAXBException, URISyntaxException {
|
||||
StandardAufgaben aufgaben = new StandardAufgaben();
|
||||
aufgaben.setToys(getToys());
|
||||
aufgaben.setBeglueckungen(getBeglueckungen());
|
||||
aufgaben.setSperren(getSperren());
|
||||
aufgaben.setStrafen(getStrafen());
|
||||
|
||||
new XmlAufgabenProvider().safe(aufgaben);
|
||||
}
|
||||
|
||||
private List<Toy> getToys() {
|
||||
List<Toy> toys = new ArrayList<>();
|
||||
|
||||
toys.add(vibrator);
|
||||
toys.add(dildoKlein);
|
||||
toys.add(dildoMittel);
|
||||
toys.add(dildoGross);
|
||||
toys.add(plugKlein);
|
||||
toys.add(plugGross);
|
||||
toys.add(eletroPlug);
|
||||
toys.add(fesseln);
|
||||
toys.add(augenbinde);
|
||||
toys.add(ballknebel);
|
||||
toys.add(penisknebel);
|
||||
toys.add(doppenPenisknebel);
|
||||
toys.add(pumpPlug);
|
||||
toys.add(nippelklemmen);
|
||||
toys.add(fickmaschine);
|
||||
toys.add(penisVibrator);
|
||||
toys.add(peitsche);
|
||||
toys.add(gerte);
|
||||
toys.add(paddel);
|
||||
toys.add(kgFrau);
|
||||
toys.add(kgMann);
|
||||
toys.add(peniskaefig);
|
||||
toys.add(analVibrator);
|
||||
toys.add(doppelDildo);
|
||||
|
||||
return toys;
|
||||
}
|
||||
|
||||
private List<Strafe> getStrafen() {
|
||||
List<Strafe> result = new ArrayList<>();
|
||||
result.add(createStrafe(1, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der flachen Hand auf das Gesäß", null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createStrafe(3, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 15 beherzte Schläge mit der flachen Hand auf das Gesäß, $SPIELER1 zählt laut mit", null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createStrafe(2, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Gerte auf das Gesäß", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(gerte)));
|
||||
result.add(createStrafe(4, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 15 beherzte Schläge Schläge mit der Gerte auf das Gesäß, $SPIELER1 zählt laut mit", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(gerte)));
|
||||
result.add(createStrafe(2, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 5 Schläge mit dem Paddel auf das Gesäß", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(paddel)));
|
||||
result.add(createStrafe(2, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 15 beherzte Schläge mit dem Paddel auf das Gesäß, $SPIELER1 zählt laut mit", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(paddel)));
|
||||
result.add(createStrafe(3, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Peitsche auf das Gesäß", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(peitsche)));
|
||||
result.add(createStrafe(5, "$SPIELER1 stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 15 beherzte Schläge mit der Peitsche auf das Gesäß, $SPIELER1 zählt laut mit", null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(peitsche)));
|
||||
|
||||
result.add(createStrafe(5, "$SPIELER1 liegt auf dem Rücken mit breiten Beinen, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Peitsche auf die Klitoris, $SPIELER1 zählt laut mit", null, null, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(peitsche)));
|
||||
result.add(createStrafe(5, "$SPIELER1 liegt auf dem Rücken mit breiten Beinen, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Paddel auf die Klitoris, $SPIELER1 zählt laut mit", null, null, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(paddel)));
|
||||
result.add(createStrafe(5, "$SPIELER1 liegt auf dem Rücken mit breiten Beinen, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Gerte auf die Klitoris, $SPIELER1 zählt laut mit", null, null, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(gerte)));
|
||||
result.add(createStrafe(4, "$SPIELER1 liegt auf dem Rücken mit breiten Beinen, $SPIELER2 verpasst $SPIELER1 5 Schläge mit der Hand auf die Klitoris, $SPIELER1 zählt laut mit", null, null, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(peitsche)));
|
||||
|
||||
result.add(createStrafe(5, "$SPIELER1 stellt sich mit dem Rücken zur Wand, Hände hinterm Kopf, Beine schulterbreit, $SPIELER2 verpasst $SPIELER1 5 Ohrfeigen, $SPIELER1 zählt laut mit", null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createStrafe(5, "$SPIELER2 führt $SPIELER1 anal einen Elektro-Plug ein. $SPIELER2 erhöht ganz langsam die Intensität bis $SPIELER1 'STOP' sagt, dann fängt $SPIELER2 wieder bei null an", 30, 90, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(eletroPlug)));
|
||||
result.add(createStrafe(4, "$SPIELER2 führt $SPIELER1 anal einen Pump-Plug ein. $SPIELER2 pumpt ganz langsam auf bis $SPIELER1 'STOP' sagt, dann fängt $SPIELER2 wieder bei null an", 30, 90, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(pumpPlug)));
|
||||
result.add(createStrafe(4, "$SPIELER2 führt $SPIELER1 vaginal einen Elektro-Plug ein. $SPIELER2 erhöht ganz langsam die Intensität bis $SPIELER1 'STOP' sagt, dann fängt $SPIELER2 wieder bei null an", 30, 90, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(eletroPlug)));
|
||||
result.add(createStrafe(5, "$SPIELER1 liegt auf dem Rücken, $SPIELER2 legt $SPIELER1 einen Doppel-Penisknebel an und reitet diesen vaginal oder anal", 60, 120, Arrays.asList(Werkzeug.MUND), Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(penisknebel)));
|
||||
result.add(createStrafe(4, "$SPIELER1 liegt mit auf den Rücken gefesselten Händen auf dem Rücken, $SPIELER2 setzt sich auf das Gesicht von $SPIELER1 und lässt sich den Vaginal und/oder Analbereich verwöhnen", 90, 180, Collections.emptyList(), Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(fesseln)));
|
||||
result.add(createStrafe(3, "$SPIELER2 legt $SPIELER1 Nippelklemmen an, $SPIELER2 zieht an der Kette und erhöht ganz langsam die Intensität bis $SPIELER1 'STOP' sagt, dann fängt $SPIELER2 wieder bei null an", 30, 90, Collections.emptyList(), Collections.emptyList(), Arrays.asList(nippelklemmen)));
|
||||
result.add(createStrafe(5, "$SPIELER2 fesselt, knebelt und verbindet die Augen von $SPIELER1. $SPIELER2 lässt $SPIELER1 wehrlos liegen, bei Ablauf der Zeit erlöst $SPIELER2 $SPIELER1 mit einem beherzten Plapps auf den Po", 120, 180, Collections.emptyList(), Collections.emptyList(), Arrays.asList(fesseln, ballknebel, augenbinde)));
|
||||
result.add(createStrafe(4, "$SPIELER2 fesselt und knebelt $SPIELER1. $SPIELER1 trägt dabei einen Umschnalldildo. $SPIELER2 reitet den Umschnalldildo von $SPIELER1", 60, 180, Arrays.asList(Werkzeug.UMSCHNALLDILDO), Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(fesseln, ballknebel)));
|
||||
result.add(createStrafe(5, "$SPIELER2 fesselt und knebelt $SPIELER1. $SPIELER1 trägt dabei einen Umschnalldildo, KG und einen großen Buttplug. $SPIELER2 gibt dem Umschnalldildo einen Blowjow in 69er Positition und präsentiert $SPIELER1 dabei den Intimbereich",
|
||||
180, 300, Arrays.asList(Werkzeug.UMSCHNALLDILDO), Arrays.asList(Werkzeug.VAGINA), Arrays.asList(fesseln, ballknebel, kgMann, plugGross)));
|
||||
result.add(createStrafe(5, "$SPIELER2 knebelt $SPIELER1 und fesselt $SPIELER1 an einen Stuhl. $SPIELER1 trägt dabei einen KG und einen großen Buttplug. $SPIELER2 befriedigt sich dann vor den Augen von $SPIELER1 selber",
|
||||
240, 360, Collections.emptyList(), Arrays.asList(Werkzeug.VAGINA), Arrays.asList(fesseln, ballknebel, kgMann, plugGross)));
|
||||
result.add(createStrafe(5, "$SPIELER2 knebelt $SPIELER1 und fesselt $SPIELER1 an einen Stuhl. $SPIELER1 trägt dabei einen KG und einen großen Buttplug. $SPIELER2 befriedigt sich dann vor den Augen von $SPIELER1 selber",
|
||||
240, 360, Collections.emptyList(), Arrays.asList(Werkzeug.PENIS), Arrays.asList(fesseln, ballknebel, kgFrau, plugGross)));
|
||||
result.add(createStrafe(5, "$SPIELER2, zwinge $SPIELER1 vor dir auf die Knie, führe dein Glied (oder Strap on) in den Mund von $SPIELER1 ein und zeig mit einem Deepthroat, wer das sagen hat", 30, 90, Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createStrafe(2, "$SPIELER2, führe langsam nach und nach mehr Finger in die Vagina von $SPIELER1 ein, bis $SPIELER1 'STOP' sagt", null, null, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createStrafe(3, "$SPIELER2, führe langsam nach und nach mehr Finger in den Anus von $SPIELER1 ein, bis $SPIELER1 'STOP' sagt", null, null, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createStrafe(2, "$SPIELER1, geh auf die Knie und reite einen vaginal einen kleinen Dildo, befriedige dabei $SPIELER2 oral.", 60, 120, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.VAGINA), Arrays.asList(dildoKlein)));
|
||||
result.add(createStrafe(4, "$SPIELER1, geh auf die Knie und reite einen vaginal einen großen Dildo, befriedige dabei $SPIELER2 oral.", 60, 120, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.VAGINA), Arrays.asList(dildoGross)));
|
||||
result.add(createStrafe(2, "$SPIELER1, geh auf die Knie und reite einen anal einen kleinen Dildo, befriedige dabei $SPIELER2 oral.", 60, 120, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.VAGINA), Arrays.asList(dildoKlein)));
|
||||
result.add(createStrafe(4, "$SPIELER1, geh auf die Knie und reite einen anal einen großen Dildo, befriedige dabei $SPIELER2 oral.", 60, 120, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.VAGINA), Arrays.asList(dildoGross)));
|
||||
|
||||
result.add(createStrafe(4, "$SPIELER2 dringt in Missionarsstellung in $SPIELER1 und gibt vollgas, dabei packt $SPIELER2 $SPIELER1 am Hals und drückt beherzt zu", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Arrays.asList(dildoGross)));
|
||||
result.add(createStrafe(4, "$SPIELER2 dringt in Missionarsstellung anal in $SPIELER1 und gibt vollgas, dabei packt $SPIELER2 $SPIELER1 am Hals und drückt beherzt zu", 30, 60, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Arrays.asList(dildoGross)));
|
||||
|
||||
result.add(createStrafe(2, "$SPIELER2 nimmt die Nippel von $SPIELER1 zwischen die Finger und erhöht langsam den Druck bis $SPIELER1 'STOP' sagt", null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
return result ;
|
||||
}
|
||||
|
||||
private Strafe createStrafe(Integer level, String text, Integer sekundenVon, Integer sekundenBis, List<Werkzeug> benoetigtBestraftePerson, List<Werkzeug> benoetigtBestrafendePerson, List<Toy> benoetigteToys) {
|
||||
Strafe strafe = new Strafe();
|
||||
strafe.setLevel(level);
|
||||
strafe.setText(text);
|
||||
strafe.setSekundenVon(sekundenVon);
|
||||
strafe.setSekundenBis(sekundenBis);
|
||||
strafe.setBenoetigtBestraftePerson(benoetigtBestraftePerson.stream().map(Werkzeug::toString).toList());
|
||||
strafe.setBenoetigtBestrafendePerson(benoetigtBestrafendePerson.stream().map(Werkzeug::toString).toList());
|
||||
strafe.setBenoetigteToyIds(benoetigteToys.stream().map(Toy::getId).toList());
|
||||
return strafe;
|
||||
}
|
||||
|
||||
private List<Sperre> getSperren() {
|
||||
List<Sperre> result = new ArrayList<>();
|
||||
|
||||
result.add(createSperre("$SPIELER1 legt sich einen KG an, $SPIELER2 spielgt Keyholder. Falls möglich sind Vaginal-Plugs zu verwenden", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem KG zu erlösen", 10, 20, Werkzeug.VAGINA, Arrays.asList(kgFrau)));
|
||||
result.add(createSperre("$SPIELER1 legt sich einen KG an, $SPIELER2 spielgt Keyholder", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem KG zu erlösen", 10, 30, Werkzeug.VAGINA, Arrays.asList(kgFrau)));
|
||||
result.add(createSperre("$SPIELER1 legt sich einen KG an, $SPIELER2 spielgt Keyholder", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem KG zu erlösen", 10, 30, Werkzeug.PENIS, Arrays.asList(kgMann)));
|
||||
result.add(createSperre("$SPIELER1 legt sich einen Peniskäfig an, $SPIELER2 spielgt Keyholder", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Peniskäfig zu erlösen", 10, 30, Werkzeug.PENIS, Arrays.asList(peniskaefig)));
|
||||
result.add(createSperre("$SPIELER2 führt $SPIELER1 einen kleinen Plug in den Anus ein, dieser ist bis auf weiteres zu tragen", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Buttplug zu erlösen", 10, 30, Werkzeug.ANUS, Arrays.asList(plugKlein)));
|
||||
result.add(createSperre("$SPIELER2 führt $SPIELER1 einen großen Plug in den Anus ein, dieser ist bis auf weiteres zu tragen", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Buttplug zu erlösen", 10, 30, Werkzeug.ANUS, Arrays.asList(plugGross)));
|
||||
result.add(createSperre("$SPIELER2 führt $SPIELER1 einen Elektro-Plug in den Anus ein, dieser ist bis auf weiteres zu tragen. $SPIELER2 darf $SPIELER1 !leichte Stromstöße verpassen", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Eletro-Plug zu erlösen", 5, 15, Werkzeug.ANUS, Arrays.asList(eletroPlug)));
|
||||
result.add(createSperre("$SPIELER2 führt $SPIELER1 einen Elektro-Plug in die Vagina ein, darüber ist ein KG zu tragen. $SPIELER2 spielt Keyholder und darf $SPIELER1 !leichte Stromstöße verpassen", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Eletro-Plug und KG zu erlösen", 5, 15, Werkzeug.VAGINA, Arrays.asList(eletroPlug, kgFrau)));
|
||||
result.add(createSperre("$SPIELER2 führt $SPIELER1 einen kleinen Dildo in die Vagina ein, darüber ist ein KG zu tragen. $SPIELER2 spielt Keyholder", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Dildo und KG zu erlösen", 10, 20, Werkzeug.VAGINA, Arrays.asList(dildoKlein, kgFrau)));
|
||||
result.add(createSperre("$SPIELER1 trägt mit sofortiger Wirkung einen Ballknebel, $SPIELER2 achte darauf, dass er schön stramm sitzt", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Knebel zu erlösen", 5, 15, Werkzeug.MUND, Arrays.asList(ballknebel)));
|
||||
result.add(createSperre("$SPIELER1 trägt mit sofortiger Wirkung einen Penisknebel, $SPIELER2 achte darauf, dass er schön stramm sitzt", "$SPIELER2, es ist an der Zeit $SPIELER1 von seinem Knebel zu erlösen", 5, 15, Werkzeug.MUND, Arrays.asList(penisknebel)));
|
||||
|
||||
return result ;
|
||||
}
|
||||
|
||||
private Sperre createSperre(String text, String releaseText, Integer minutenVon, Integer minutenBis, Werkzeug verschluss, List<Toy> benoetigteToys) {
|
||||
Sperre sperre = new Sperre();
|
||||
sperre.setText(text);
|
||||
sperre.setReleaseText(releaseText);
|
||||
sperre.setMinutenVon(minutenVon);
|
||||
sperre.setMinutenBis(minutenBis);
|
||||
sperre.setBenoetigteToyIds(benoetigteToys.stream().map(Toy::getId).toList());
|
||||
sperre.setVerschluss(verschluss.toString());
|
||||
return sperre;
|
||||
}
|
||||
|
||||
private List<Beglueckung> getBeglueckungen() {
|
||||
List<Beglueckung> result = new ArrayList<>();
|
||||
|
||||
result.add(createBeglueckung(1, "$SPIELER2, zeig $SPIELER1 deinen Hintern, gib dir selber dabei ein oder zwei Klasppse auf den Po", null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, küsse den Hals von $SPIELER1 leidenschaftlich", 30, 60, Collections.emptyList(), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, zeichne mit Küssen den Bauchnabel von $SPIELER1 nach", 30, 60, Collections.emptyList(), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(2, "$SPIELER2, berühre den gesamten Körper von $SPIELER1 ohne die Hände zu verwenden", 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(1, "$SPIELER1 sitzt vor $SPIELER2, $SPIELER2 küsste leidenschaftlich den Nacken von $SPIELER1", 60, 120, Arrays.asList(Werkzeug.MUND), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, Küsse die Brust von $SPIELER1 ohne die Nippel zu berühren", 60, 120, Arrays.asList(Werkzeug.MUND), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(2, "$SPIELER2, verwöhne die Nippel von $SPIELER1 mit Küssen", 60, 120, Arrays.asList(Werkzeug.MUND), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, küsse den Hintern von $SPIELER1 ohne den Anus zu berühren", 60, 120, Arrays.asList(Werkzeug.MUND), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verpasse $SPIELER1 eine Anusmassage mit der Zunge", 60, 120, Arrays.asList(Werkzeug.MUND), Arrays.asList(Werkzeug.ANUS), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(2, "$SPIELER2, küsse den Intimbereich von $SPIELER1 durch die Unterwäsche", 60, 120, Arrays.asList(Werkzeug.MUND), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
|
||||
result.add(createBeglueckung(1, "$SPIELER2, massiere die Brust von $SPIELER1 leidenschaftlich", 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, massiere den Hintern von $SPIELER1 leidenschaftlich", 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, massiere den Rücken von $SPIELER1 leidenschaftlich", 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(1, "$SPIELER2, massiere die Oberschenkel von $SPIELER1 leidenschaftlich", 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit einem Vibrator" , 30, 180, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(vibrator)));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit einem Vibrator, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(vibrator)));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit dem Mund, führe dabei einen bis zwei Finger in die Vagina von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit dem Mund, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit der Hand, führe dabei einen bis zwei Finger in die Vagina von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Klitoris von $SPIELER1 mit der Hand, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit einem Vibrator" , 30, 180, Arrays.asList(Werkzeug.PENIS), Collections.emptyList(), Arrays.asList(vibrator)));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit einem Vibrator, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.PENIS, Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(vibrator)));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit dem Mund" , 30, 180, Arrays.asList(Werkzeug.PENIS), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit dem Mund, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.PENIS, Werkzeug.ANUS), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit der Hand" , 30, 180, Arrays.asList(Werkzeug.PENIS), Collections.emptyList(), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, verwöhne die Eichel von $SPIELER1 mit der Hand, führe dabei einen Finger in den Anus von $SPIELER1 ein" , 30, 180, Arrays.asList(Werkzeug.PENIS, Werkzeug.ANUS), Collections.emptyList(), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne den Anus von $SPIELER1 mit einem Vibrator" , 30, 180, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(vibrator)));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, verwöhne den Anus von $SPIELER1 mit dem Mund" , 30, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(4, "$SPIELER2 liegt auf dem Rücken, $SPIELER1 sitzt auf seinem Gesicht. $SPIELER2, verwöhne die Vagina von $SPIELER1 mit dem Mund" , 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 liegt auf dem Rücken, $SPIELER1 sitzt auf seinem Gesicht. $SPIELER2, verwöhne den Anus von $SPIELER1 mit dem Mund" , 60, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(4, "69er-Zeit: $SPIELER2 liegt unten. $SPIELER1, falls du verschlossen bist, zeihe einen Strap on an, damit $SPIELER2 auch was zu tun hat.", 60, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.MUND), Arrays.asList(Werkzeug.MUND), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(4, "$SPIELER2, führe $SPIELER1 einen Analvibrator ein und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(analVibrator)));
|
||||
result.add(createBeglueckung(3, "$SPIELER2, führe $SPIELER1 einen kleinen Dildo anal ein und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(dildoKlein)));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, führe $SPIELER1 einen großen Dildo anal ein und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(dildoGross)));
|
||||
result.add(createBeglueckung(5, "$SPIELER2, führe $SPIELER1 einen großen Dildo anal ein und verwöhne $SPIELER1 durch schnelle Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(dildoGross)));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2, führe $SPIELER1 einen kleinen Dildo vaginal ein und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(dildoKlein)));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, führe $SPIELER1 einen großen Dildo vaginal ein und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(dildoGross)));
|
||||
result.add(createBeglueckung(5, "$SPIELER2, führe $SPIELER1 einen großen Dildo vaginal ein und bewege selbigen möglichst schnell rein und raus" , 30, 60, Arrays.asList(Werkzeug.VAGINA), Collections.emptyList(), Arrays.asList(dildoGross)));
|
||||
|
||||
result.add(createBeglueckung(5, "$SPIELER2, führe $SPIELER1 einen Doppeldildo anal und vaginal ein und bewege selbigen möglichst schnell rein und raus" , 30, 60, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(doppelDildo)));
|
||||
result.add(createBeglueckung(4, "$SPIELER2, führe $SPIELER1 einen Doppeldildo anal und vaginal und verwöhne $SPIELER1 durch langsame Bewegungen mit selbigem" , 30, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Collections.emptyList(), Arrays.asList(doppelDildo)));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Missionarstellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Missionarstellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 30, 90, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Missionarstellung in $SPIELER1 ein und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Missionarstellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Missionarstellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 30, 90, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Missionarstellung den Anus von $SPIELER1 und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER1 setzt sich in Reiterstellung auf $SPIELER2. $SPIELER1 bestimmt das Tempo", 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER1 setzt sich in Reiterstellung auf $SPIELER2. $SPIELER1 versucht das Tempo hoch zu halten", 60, 120, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER1 setzt sich in Reiterstellung auf $SPIELER2 und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER1 setzt sich in Reiterstellung mit dem Anus auf $SPIELER2. $SPIELER1 bestimmt das Tempo", 60, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER1 setzt sich in Reiterstellung mit dem Anus auf $SPIELER2. $SPIELER1 versucht das Tempo hoch zu halten", 60, 120, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER1 setzt sich in Reiterstellung mit dem Anus auf $SPIELER2 und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 60, 120, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen. Dabei dringt $SPIELER2 mit einem oder zwei Fingern in den Po von $SPIELER1 ein", 60, 180, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen. Dabei dringt $SPIELER2 mit einem oder zwei Fingern in den Po von $SPIELER1 ein", 60, 120, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und gibt vollgas. Dabei dringt $SPIELER2 mit einem oder zwei Fingern in den Po von $SPIELER1 ein", 30, 60, Arrays.asList(Werkzeug.VAGINA, Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein und gibt vollgas. $SPIELER1 darf dabei keinen laut von sich geben.", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Hundestellung in $SPIELER1 ein. $SPIELER2 hält still und $SPIELER1 gibt das Tempo vor", 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Hundestellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Hundestellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 60, 120, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Hundestellung den Anus von $SPIELER1 ein und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Hundestellung den Anus von $SPIELER1 ein. $SPIELER2 hält still und $SPIELER1 gibt das Tempo vor\"", 30, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Löffelchenstellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Löffelchenstellung in $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 60, 120, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Löffelchenstellung in $SPIELER1 ein und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.VAGINA), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(3, "$SPIELER2 dringt in Löffelchenstellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit langsamen Bewegungen", 60, 180, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(4, "$SPIELER2 dringt in Löffelchenstellung den Anus von $SPIELER1 ein und verwöhnt $SPIELER1 mit schnellen Bewegungen", 60, 120, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
result.add(createBeglueckung(5, "$SPIELER2 dringt in Löffelchenstellung den Anus von $SPIELER1 ein und gibt vollgas", 30, 60, Arrays.asList(Werkzeug.ANUS), Arrays.asList(Werkzeug.PENIS, Werkzeug.UMSCHNALLDILDO), Collections.emptyList()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private Beglueckung createBeglueckung(Integer level, String text, Integer sekundenVon, Integer sekundenBis, List<Werkzeug> benoetigtBestraftePerson, List<Werkzeug> benoetigtBestrafendePerson, List<Toy> benoetigteToys) {
|
||||
Beglueckung beglueckung = new Beglueckung();
|
||||
beglueckung.setLevel(level);
|
||||
beglueckung.setText(text);
|
||||
beglueckung.setSekundenVon(sekundenVon);
|
||||
beglueckung.setSekundenBis(sekundenBis);
|
||||
beglueckung.setBenoetigteBegluecktePerson(benoetigtBestraftePerson.stream().map(Werkzeug::toString).toList());
|
||||
beglueckung.setBenoetigteBeglueckendePerson(benoetigtBestrafendePerson.stream().map(Werkzeug::toString).toList());
|
||||
beglueckung.setBenoetigteToyIds(benoetigteToys.stream().map(Toy::getId).toList());
|
||||
return beglueckung;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws JAXBException, URISyntaxException {
|
||||
new AufgabenCreator().init();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user