Skip to content

Commit

Permalink
Tim Cappello again? Seriously. Its getting ridiculous.
Browse files Browse the repository at this point in the history
  • Loading branch information
cheezballs committed Dec 16, 2023
1 parent 31a162f commit 19857c2
Show file tree
Hide file tree
Showing 17 changed files with 188 additions and 29 deletions.
2 changes: 1 addition & 1 deletion src/main/java/dev/indoors/ringrats/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class Application {
private static final String FLAG_DESIGNATOR = "-";
private static final String INPUT_FILE_FLAG = "f";

public static void main(String[] args) throws ArgumentException {
public static void main(String[] args) throws ArgumentException, IOException {
new RingRats().simulate(buildMatch(args));
}

Expand Down
4 changes: 3 additions & 1 deletion src/main/java/dev/indoors/ringrats/core/RingRats.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

@Slf4j
@NoArgsConstructor
public class RingRats {

public void simulate(Match match) {
public void simulate(Match match) throws IOException {
Engine engine = new Engine(match);
engine.start();
while (engine.isRunning()) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/dev/indoors/ringrats/core/Simulatable.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import dev.indoors.ringrats.simulation.action.Action;
import dev.indoors.ringrats.simulation.condition.Position;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;

public interface Simulatable {

void initializeForSimulation();
void initializeForSimulation() throws IOException;

HashMap<Position, List<Action>> getActionMap();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public Match deserialize(JsonParser jsonParser, DeserializationContext deseriali
ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec();
TreeTraversingParser wrestlerFieldsParser = new TreeTraversingParser(wrestlersNode, mapper);
wrestlerFieldsParser.nextToken();
Collection<Wrestler> wrestlers = mapper.readValue(wrestlerFieldsParser, new TypeReference<Collection<Wrestler>>() {
Collection<Wrestler> wrestlers = mapper.readValue(wrestlerFieldsParser, new TypeReference<>() {
});

match.setWrestlers(wrestlers);
Expand All @@ -42,7 +42,7 @@ public Match deserialize(JsonParser jsonParser, DeserializationContext deseriali
ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec();
TreeTraversingParser stipulationFieldsParser = new TreeTraversingParser(stipulationNode, mapper);
stipulationFieldsParser.nextToken();
Collection<Stipulation> stipulations = mapper.readValue(stipulationFieldsParser, new TypeReference<Collection<Stipulation>>() {
Collection<Stipulation> stipulations = mapper.readValue(stipulationFieldsParser, new TypeReference<>() {
});

match.setStipulations(stipulations);
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/dev/indoors/ringrats/core/engine/Engine.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.io.IOException;

@NoArgsConstructor
public class Engine {

Expand All @@ -17,7 +19,7 @@ public Engine(Match match) {
this.match = match;
}

public void start() {
public void start() throws IOException {
turnNumber = 1;
match.initializeForSimulation();
running = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ public abstract class Action {

public abstract ActionResult perform(Wrestler performer);

public abstract String getName();

}
16 changes: 16 additions & 0 deletions src/main/java/dev/indoors/ringrats/simulation/action/Damage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package dev.indoors.ringrats.simulation.action;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Damage {

Integer core;
Integer head;
Integer arm;
Integer leg;
Integer back;

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

import dev.indoors.ringrats.simulation.action.move.OffenseMove;
import dev.indoors.ringrats.simulation.attribute.Attribute;
import dev.indoors.ringrats.simulation.wrestler.Health;
import dev.indoors.ringrats.simulation.wrestler.Wrestler;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class GrappleAction extends Action {

OffenseMove move;

@Override
public ActionResult perform(Wrestler performer) {

if (!(target instanceof Wrestler targetWrestler)) {
throw new UnsupportedOperationException("Target of this action must be of type Wrestler");
}

Health targetHealth = targetWrestler.getHealth();
Attribute head = targetHealth.getHead();
head.addToCurrentValue(-25);

return new ActionResult();
}

@Override
public String getName() {
return move.getName();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,23 @@
import dev.indoors.ringrats.simulation.wrestler.Health;
import dev.indoors.ringrats.simulation.wrestler.Wrestler;

public class GrappleMove extends Action {
public class StrikeAction extends Action {

@Override
public ActionResult perform(Wrestler performer) {

if (!(target instanceof Wrestler targetWrestler)) {
throw new UnsupportedOperationException("Target of this action must be of type Wrestler");
}

Health targetHealth = targetWrestler.getHealth();
Attribute head = targetHealth.getHead();
head.addToCurrentValue(-25);
head.addToCurrentValue(-95);

return new ActionResult();
}

@Override
public String getName() {
return null;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package dev.indoors.ringrats.simulation.action.move;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.indoors.ringrats.Application;
import lombok.Getter;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;

@Getter
public class BaseMoves {

private static BaseMoves instance;
private final List<OffenseMove> basicGrapples;
private final List<OffenseMove> basicStrikes;


private BaseMoves() throws IOException {
basicGrapples = loadFromConfigs("/config/grapples-basic.json");
basicStrikes = loadFromConfigs("/config/strikes-basic.json");
}

public static synchronized BaseMoves getInstance() throws IOException {
if (instance == null) {
instance = new BaseMoves();
}
return instance;
}

private List<OffenseMove> loadFromConfigs(String configFilePath) throws IOException {
try {
URL inputFileUrl = Application.class.getResource(configFilePath);
File inputFile = new File(inputFileUrl.toURI());
return new ObjectMapper().readValue(inputFile, new TypeReference<>() {
});
} catch (URISyntaxException e) {
throw new IOException("Error loading from configs.", e);
}
}

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

import dev.indoors.ringrats.simulation.action.Damage;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@NoArgsConstructor
public class OffenseMove {

String name;
Damage damage;
int energy;
boolean collidable;

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ public void addToCurrentValue(Integer value) {
}

private void clamp() {
if (currentValue < minValue) {
if (minValue != null && (currentValue < minValue)) {
currentValue = minValue;
}
if (currentValue > maxValue) {
if (maxValue != null && (currentValue > maxValue)) {
currentValue = maxValue;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import dev.indoors.ringrats.core.comparator.InitiativeComparator;
import dev.indoors.ringrats.core.deserializer.MatchDeserializer;
import dev.indoors.ringrats.simulation.action.Action;
import dev.indoors.ringrats.simulation.action.move.BaseMoves;
import dev.indoors.ringrats.simulation.condition.Condition;
import dev.indoors.ringrats.simulation.condition.Position;
import dev.indoors.ringrats.simulation.stipulation.Stipulation;
Expand All @@ -13,6 +14,7 @@
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
Expand All @@ -26,6 +28,7 @@ public abstract class Match implements Simulatable {

Collection<Wrestler> wrestlers;
Collection<Stipulation> stipulations;
BaseMoves baseMoves;

abstract Set<Condition> getStartingConditions();

Expand All @@ -39,7 +42,8 @@ public HashMap<Position, List<Action>> getActionMap() {
}

@Override
public void initializeForSimulation() {
public void initializeForSimulation() throws IOException {
baseMoves = BaseMoves.getInstance();
Set<Condition> conditions = getStartingConditions();

for (Stipulation stipulation : stipulations) {
Expand Down
18 changes: 12 additions & 6 deletions src/main/java/dev/indoors/ringrats/simulation/match/OneVsOne.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import dev.indoors.ringrats.simulation.action.Action;
import dev.indoors.ringrats.simulation.action.ActionResult;
import dev.indoors.ringrats.simulation.action.GrappleMove;
import dev.indoors.ringrats.simulation.action.StrikeMove;
import dev.indoors.ringrats.simulation.action.GrappleAction;
import dev.indoors.ringrats.simulation.action.StrikeAction;
import dev.indoors.ringrats.simulation.condition.Condition;
import dev.indoors.ringrats.simulation.condition.Position;
import dev.indoors.ringrats.simulation.stipulation.Stipulation;
Expand All @@ -12,6 +12,7 @@
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.IOException;
import java.util.*;

@Getter
Expand All @@ -38,6 +39,11 @@ public void simulateTurn() {
Wrestler target = otherWrestlers.get(0); // get the first since its assumed there's only 1 after filtering

Action action = wrestler.chooseAction(actions, target);

if (action instanceof GrappleAction) {

}

ActionResult result = wrestler.performAction(action);
}
}
Expand All @@ -48,7 +54,7 @@ public String getName() {
}

@Override
public void initializeForSimulation() {
public void initializeForSimulation() throws IOException {
super.initializeForSimulation();
}

Expand All @@ -62,11 +68,11 @@ public HashMap<Position, List<Action>> getActionMap() {
HashMap<Position, List<Action>> actions = new HashMap<>(super.getActionMap());

List<Action> inRingActions = new ArrayList<>();
inRingActions.add(new GrappleMove());
inRingActions.add(new StrikeMove());
inRingActions.add(new GrappleAction());
inRingActions.add(new StrikeAction());

actions.put(Position.InRing, inRingActions);
actions.put(Position.OutOfRing, Collections.singletonList(new GrappleMove()));
actions.put(Position.OutOfRing, Collections.singletonList(new GrappleAction()));
return actions;
}
}
18 changes: 18 additions & 0 deletions src/main/resources/config/grapples-basic.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"name": "Body Slam",
"damage": {
"back": 3
},
"energy": 2,
"collidable": true
},
{
"name": "DDT",
"damage": {
"head": 4
},
"energy": 2,
"collidable": true
}
]
18 changes: 18 additions & 0 deletions src/main/resources/config/strikes-basic.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"name": "Punch",
"damage": {
"head": 1
},
"energy": 1,
"collidable": false
},
{
"name": "Dropkick",
"damage": {
"head": 2
},
"energy": 2,
"collidable": false
}
]

0 comments on commit 19857c2

Please sign in to comment.