RuneHive-Game
Loading...
Searching...
No Matches
ParallelClientSynchronizer.java
Go to the documentation of this file.
1package com.runehive.game.engine.sync;
2
3import com.runehive.game.engine.sync.task.*;
4import com.runehive.game.world.entity.MobList;
5import com.runehive.game.world.entity.mob.npc.Npc;
6import com.runehive.game.world.entity.mob.player.Player;
7
8import java.util.concurrent.ExecutorService;
9import java.util.concurrent.Executors;
10import java.util.concurrent.Phaser;
11
12public final class ParallelClientSynchronizer implements ClientSynchronizer {
13
14 private static final ExecutorService executor = Executors
15 .newFixedThreadPool(Runtime.getRuntime().availableProcessors());
16
17 private final Phaser phaser = new Phaser(1);
18
19 @Override
20 public void synchronize(MobList<Player> players, MobList<Npc> npcs) {
21 // npc movement
22/* phaser.bulkRegister(npcs.size());
23 npcs.forEach(npc -> executor.submit(new PhasedUpdateTask(phaser, new NpcPreUpdateTask(npc))));
24 phaser.arriveAndAwaitAdvance();*/
25
26 // player movement
27/* phaser.bulkRegister(players.size());
28 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerPreUpdateTask(player))));
29 phaser.arriveAndAwaitAdvance();*/
30
31 // player updating
32 phaser.bulkRegister(players.size());
33 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerUpdateTask(player))));
34 phaser.arriveAndAwaitAdvance();
35
36 // npc updating
37 phaser.bulkRegister(players.size());
38 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new NpcUpdateTask(player))));
39 phaser.arriveAndAwaitAdvance();
40
41 // reset npc
42 phaser.bulkRegister(npcs.size());
43 npcs.forEach(npc -> executor.submit(new PhasedUpdateTask(phaser, new NpcPostUpdateTask(npc))));
44 phaser.arriveAndAwaitAdvance();
45
46 // reset player
47 phaser.bulkRegister(players.size());
48 players.forEach(player -> executor.submit(new PhasedUpdateTask(phaser, new PlayerPostUpdateTask(player))));
49 phaser.arriveAndAwaitAdvance();
50 }
51
52}
void synchronize(MobList< Player > players, MobList< Npc > npcs)
An Iterable implementation acting as a repository that holds instances of Entitys.
Definition MobList.java:26
int size
The internal size of this list.
Definition MobList.java:103
void forEach(Consumer<? super E > action)
Definition MobList.java:162