From 26755f9ecd2df8e5b82d5bed89b076e1e8b88d68 Mon Sep 17 00:00:00 2001 From: Samy Avrillon Date: Sat, 24 Aug 2024 17:18:57 +0200 Subject: [PATCH] A bit of fight simulation --- .../bernard/greposimu/engine/game/Fight.java | 26 ++++++++++++++++--- .../bernard/greposimu/model/FightStats.java | 16 ++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/bernard/greposimu/engine/game/Fight.java b/src/main/java/com/bernard/greposimu/engine/game/Fight.java index a3bb50b..770d8bc 100644 --- a/src/main/java/com/bernard/greposimu/engine/game/Fight.java +++ b/src/main/java/com/bernard/greposimu/engine/game/Fight.java @@ -15,6 +15,21 @@ import com.bernard.greposimu.model.game.units.Unit; public class Fight { + public FightResult simulateFight(GameConfig gc, OffContext off, DefContext def) { + FightStats offStats = computeOffStats(gc, off); + FightStats defStats = computeDefStats(gc, def); + + // Combat Naval + if(offStats.getShip() > defStats.getShip()) { + // Off wins ship + } else { + + } + //TODO simulateFight + throw new UnsupportedOperationException("Simulator not created"); + } + + public static FightStats computeDefStats(GameConfig gc, DefContext def) { FightStats everyoneStatsBonus = FightStats.zero(); @@ -217,6 +232,11 @@ public class Fight { 0.0 )); } + + // Bonuses + everyoneStatsBonus = FightStats.add(everyoneStatsBonus, FightStats.cst(off.getLuck()/100.0)); + everyoneStatsBonus = FightStats.add(everyoneStatsBonus, FightStats.cst(-(100.0-off.getMorale())/100.0)); + return total; } @@ -239,10 +259,8 @@ public class Fight { return gc.getUnits().stream().toList(); } - public FightResult simulateFight(OffContext off, DefContext def) { - //TODO simulateFight - throw new UnsupportedOperationException("Simulator not created"); - } + + public static class FightResult { diff --git a/src/main/java/com/bernard/greposimu/model/FightStats.java b/src/main/java/com/bernard/greposimu/model/FightStats.java index 2b0eabc..5d146c0 100644 --- a/src/main/java/com/bernard/greposimu/model/FightStats.java +++ b/src/main/java/com/bernard/greposimu/model/FightStats.java @@ -70,6 +70,22 @@ public class FightStats implements Cloneable{ return new FightStats(k * b.hack, k * b.pierce, k * b.distance, k * b.ship); } + public double getHack() { + return hack; + } + + public double getPierce() { + return pierce; + } + + public double getDistance() { + return distance; + } + + public double getShip() { + return ship; + } + @Override public FightStats clone() { return new FightStats(hack, pierce, distance, ship);