Skip to content

Commit

Permalink
Tim Cappello. You feel me?
Browse files Browse the repository at this point in the history
  • Loading branch information
cheezballs committed Dec 9, 2023
1 parent d9d2207 commit 65ce328
Show file tree
Hide file tree
Showing 9 changed files with 110 additions and 10 deletions.
11 changes: 11 additions & 0 deletions src/main/java/dev/indoors/ringrats/simulation/action/Action.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package dev.indoors.ringrats.simulation.action;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public abstract class Action {


}
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

@Getter
@Setter
public class StandingInRingCondition extends Condition {
public class StandingCondition extends Condition {

private String name = "Standing In Ring";
private String name = "Standing";

public StandingInRingCondition() {
public StandingCondition() {
super(null);
}

Expand Down
20 changes: 17 additions & 3 deletions src/main/java/dev/indoors/ringrats/simulation/match/Match.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import dev.indoors.ringrats.simulation.condition.Condition;
import dev.indoors.ringrats.simulation.core.comparator.InitiativeComparator;
import dev.indoors.ringrats.simulation.stipulation.Stipulation;
import dev.indoors.ringrats.simulation.task.FocusAttentionTask;
import dev.indoors.ringrats.simulation.wrestler.Performer;
import dev.indoors.ringrats.simulation.wrestler.Wrestler;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.*;

@Getter
@Setter
Expand All @@ -30,6 +30,8 @@ public Match(Set<Wrestler> wrestlers, Set<Stipulation> stipulations) {
public void simulateTurn() {
turnNumber++;
log.trace("Simulating turn {}.", turnNumber);

// ordered based on current initiative calculation
Collection<Wrestler> orderedWrestlers = wrestlers.stream().sorted(new InitiativeComparator()).toList();
for (Wrestler wrestler : orderedWrestlers) {

Expand All @@ -42,6 +44,11 @@ public void start() {
startingConditions.addAll(wrestler.getStartingConditions());
wrestler.setConditions(startingConditions);
wrestler.initializeForSimulation();

// make the wrestler focus on one of the other wrestlers
// TODO: make this better and smarter, dont hit friendly wrestlers, etc
Performer performer = findRandomOpponent(wrestler);
wrestler.addTask(new FocusAttentionTask(performer));
}
log.trace("Setting matchActive to true.");
matchActive = true;
Expand All @@ -61,4 +68,11 @@ private Set<Condition> getStartingConditions() {
public MatchResults end() {
return new MatchResults();
}

private Performer findRandomOpponent(Wrestler wrestler) {
List<Wrestler> filteredWrestlers = wrestlers.stream().filter(w -> !w.getName().equals(wrestler.getName())).toList();
Random random = new Random();
return filteredWrestlers.get(random.nextInt(filteredWrestlers.size()));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.indoors.ringrats.simulation.position;

import dev.indoors.ringrats.simulation.action.Action;
import dev.indoors.ringrats.simulation.attribute.AttributeModifier;

import java.util.Collection;

public class InRingPosition extends Position {
@Override
public Collection<AttributeModifier> getAttributeModifiers() {
return null;
}

@Override
public Collection<Action> getAvailableActions() {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.indoors.ringrats.simulation.position;

import dev.indoors.ringrats.simulation.action.Action;
import dev.indoors.ringrats.simulation.attribute.AttributeModifier;
import lombok.Getter;
import lombok.Setter;

import java.util.Collection;

@Getter
@Setter
public abstract class Position {

public abstract Collection<AttributeModifier> getAttributeModifiers();

public abstract Collection<Action> getAvailableActions();

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dev.indoors.ringrats.simulation.stipulation;

import dev.indoors.ringrats.simulation.condition.Condition;
import dev.indoors.ringrats.simulation.condition.StandingInRingCondition;
import dev.indoors.ringrats.simulation.condition.StandingCondition;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
Expand All @@ -19,7 +19,7 @@ public class OneFallStipulation extends Stipulation {
@Override
public Set<Condition> getStartingConditions() {
Set<Condition> conditions = new HashSet<>();
conditions.add(new StandingInRingCondition());
conditions.add(new StandingCondition());
return conditions;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package dev.indoors.ringrats.simulation.task;

import dev.indoors.ringrats.simulation.wrestler.Performer;

public class FocusAttentionTask extends Task {

private static final String NAME = "Focus Attention";

public FocusAttentionTask(Performer target) {
super(NAME, target);
}
}
16 changes: 16 additions & 0 deletions src/main/java/dev/indoors/ringrats/simulation/task/Task.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package dev.indoors.ringrats.simulation.task;

import dev.indoors.ringrats.simulation.wrestler.Performer;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
public abstract class Task {

private String name;
private Performer target;

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import dev.indoors.ringrats.simulation.condition.Condition;
import dev.indoors.ringrats.simulation.core.Simulatable;
import dev.indoors.ringrats.simulation.position.InRingPosition;
import dev.indoors.ringrats.simulation.position.Position;
import dev.indoors.ringrats.simulation.task.Task;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.scheduling.config.Task;

import java.util.HashSet;
import java.util.Set;
Expand All @@ -19,14 +21,23 @@ public abstract class Performer implements Simulatable {
String name;

Health health;
Stack<Task> tasks;
Stack<Task> tasks = new Stack<>();
Set<Condition> conditions = new HashSet<>();
Set<Condition> startingConditions = new HashSet<>();
Position position;

public void addTask(Task task) {
tasks.push(task);
}

public void initForSimulation() {
if (health != null) {
health.initForSimulation();
}

if (position != null) {
position = new InRingPosition();
}
}

}

0 comments on commit 65ce328

Please sign in to comment.