RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ParallelClientSynchronizer.java
1package com.osroyale.game.engine.sync;
2
3import com.osroyale.game.engine.sync.task.*;
4import com.osroyale.game.world.entity.MobList;
5import com.osroyale.game.world.entity.mob.npc.Npc;
6import com.osroyale.game.world.entity.mob.player.Player;
7
8import java.util.concurrent.ExecutorService;
9import java.util.concurrent.Executors;
10import java.util.concurrent.Phaser;
11
39
40public final class ParallelClientSynchronizer implements ClientSynchronizer {
41
42 private static final ExecutorService executor = Executors
43 .newFixedThreadPool(Runtime.getRuntime().availableProcessors());
44
45 private final Phaser phaser = new Phaser(1);
46
47 @Override
48 public void synchronize(MobList<Player> players, MobList<Npc> npcs) {
49 // npc movement
50/* phaser.bulkRegister(npcs.size());
51 npcs.forEach(npc -> executor.submit(new PhasedUpdateTask(phaser, new NpcPreUpdateTask(npc))));
52 phaser.arriveAndAwaitAdvance();*/
53
54 // player movement
55/* phaser.bulkRegister(players.size());
56 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerPreUpdateTask(player))));
57 phaser.arriveAndAwaitAdvance();*/
58
59 // player updating
60 phaser.bulkRegister(players.size());
61 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerUpdateTask(player))));
62 phaser.arriveAndAwaitAdvance();
63
64 // npc updating
65 phaser.bulkRegister(players.size());
66 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new NpcUpdateTask(player))));
67 phaser.arriveAndAwaitAdvance();
68
69 // reset npc
70 phaser.bulkRegister(npcs.size());
71 npcs.forEach(npc -> executor.submit(new PhasedUpdateTask(phaser, new NpcPostUpdateTask(npc))));
72 phaser.arriveAndAwaitAdvance();
73
74 // reset player
75 phaser.bulkRegister(players.size());
76 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerPostUpdateTask(player))));
77 phaser.arriveAndAwaitAdvance();
78 }
79
80}
void forEach(Consumer<? super E > action)
Definition MobList.java:162