From 203139a7eb542f88887a8b707d0ba18363b619a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Sun, 14 Sep 2025 18:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ScenarioTaskServiceImpl.java | 4 +-- .../service/impl/TaskLogicServiceImpl.java | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java index de4350c..5d8b683 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java @@ -56,10 +56,10 @@ public class ScenarioTaskServiceImpl extends public void start(Integer id, String roomId) { Scenario currentScenario = scenarioService.getScenarioById(id); //想定当前持续时间 - redisUtil.hset(roomId + "_" + id, "duringTime", 0); + redisUtil.hset(roomId + "_" + id, "duringTime", "0"); //想定当前状态 redisUtil.hset(roomId + "_" + id, "states", "running"); - //想定物资信息 + diff --git a/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java index 54fe900..ecd2278 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java @@ -41,7 +41,9 @@ public class TaskLogicServiceImpl implements TaskLogicService { private final WebClient webClient = WebClient.create(); @Resource private StatisticService statisticService; - private final double fuelUseUpPerSecond = 0.1; + private final static double fuelUseUpPerSecond = 0.1; + private final static double medicalUseUpPerSecond = 0.1; + private final static double ammunitionUsePerSecond = 0.1; @Override public void handleMoveTask(ScenarioTask scenarioTask, Scenario currentScenario, String roomId, @@ -136,6 +138,20 @@ public class TaskLogicServiceImpl implements TaskLogicService { @Override public void handleBattleTask(ScenarioTask task, Scenario scenario, String roomId) { + StatisticBean statistic = getStatistic(task, scenario, roomId); + int duringTime = getCurrentDuringTime(scenario, roomId); + long seconds = + duringTime - Duration.between(task.getStartTime(), scenario.getStartTime()) + .getSeconds(); + if (seconds > 0) { + statistic.getMedical() + .setCurrent(statistic.getMedical().getTotal() - seconds * medicalUseUpPerSecond); + statistic.getAmmunition() + .setCurrent(statistic.getAmmunition().getTotal() - seconds * ammunitionUsePerSecond); + setStatistic(task, scenario, roomId, statistic); + + + } } @@ -166,6 +182,13 @@ public class TaskLogicServiceImpl implements TaskLogicService { StatisticBean bean) { redisUtil.hset(roomId + "_" + scenario.getId(), "resourceId_statistic_" + task.getResourceId(), bean); + //推送到前端 + ResponseCmdInfo> cmdInfo = new ResponseCmdInfo<>(); + Map dataMap = new HashMap<>(); + cmdInfo.setData(dataMap); + dataMap.put("resourceId", task.getResourceId()); + dataMap.put("statistic", bean); + Global.sendCmdInfoQueue.add(cmdInfo); } private int getCurrentDuringTime(Scenario scenario, String roomId) {