forked from External/mage
[app-wiring-refactor]: Remove static initialisation
- Remove all enum static managers - Introduce interfaces for the managers - Define new application wiring class (`ManagerFactory`) - Externalise the configuration
This commit is contained in:
parent
cf3dd2d94c
commit
d0c2135e17
48 changed files with 1385 additions and 911 deletions
|
|
@ -5,6 +5,8 @@ import mage.constants.ManaType;
|
|||
import mage.constants.PlayerAction;
|
||||
import mage.game.Game;
|
||||
import mage.game.GameOptions;
|
||||
import mage.server.managers.IGameManager;
|
||||
import mage.server.managers.ManagerFactory;
|
||||
import mage.view.GameView;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
|
@ -20,14 +22,19 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public enum GameManager {
|
||||
instance;
|
||||
public class GameManager implements IGameManager {
|
||||
|
||||
private final ManagerFactory managerFactory;
|
||||
private final ConcurrentMap<UUID, GameController> gameControllers = new ConcurrentHashMap<>();
|
||||
private final ReadWriteLock gameControllersLock = new ReentrantReadWriteLock();
|
||||
|
||||
public GameManager(ManagerFactory managerFactory) {
|
||||
this.managerFactory = managerFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID createGameSession(Game game, ConcurrentHashMap<UUID, UUID> userPlayerMap, UUID tableId, UUID choosingPlayerId, GameOptions gameOptions) {
|
||||
GameController gameController = new GameController(game, userPlayerMap, tableId, choosingPlayerId, gameOptions);
|
||||
GameController gameController = new GameController(managerFactory, game, userPlayerMap, tableId, choosingPlayerId, gameOptions);
|
||||
final Lock w = gameControllersLock.writeLock();
|
||||
w.lock();
|
||||
try {
|
||||
|
|
@ -48,6 +55,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void joinGame(UUID gameId, UUID userId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -55,6 +63,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<UUID> getChatId(UUID gameId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -63,6 +72,7 @@ public enum GameManager {
|
|||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerUUID(UUID gameId, UUID userId, UUID data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -70,6 +80,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerString(UUID gameId, UUID userId, String data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -77,6 +88,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerManaType(UUID gameId, UUID playerId, UUID userId, ManaType data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -84,6 +96,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerBoolean(UUID gameId, UUID userId, Boolean data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -91,6 +104,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerInteger(UUID gameId, UUID userId, Integer data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -98,6 +112,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitMatch(UUID gameId, UUID userId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -105,6 +120,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPlayerAction(PlayerAction playerAction, UUID gameId, UUID userId, Object data) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -112,6 +128,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean watchGame(UUID gameId, UUID userId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -120,6 +137,7 @@ public enum GameManager {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopWatching(UUID gameId, UUID userId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -127,6 +145,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cheat(UUID gameId, UUID userId, UUID playerId, DeckCardLists deckList) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -134,6 +153,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cheat(UUID gameId, UUID userId, UUID playerId, String cardName) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -142,6 +162,7 @@ public enum GameManager {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeGame(UUID gameId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -156,6 +177,7 @@ public enum GameManager {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveGame(UUID gameId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -164,6 +186,7 @@ public enum GameManager {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GameView getGameView(UUID gameId, UUID playerId) {
|
||||
GameController gameController = getGameControllerSafe(gameId);
|
||||
if (gameController != null) {
|
||||
|
|
@ -172,10 +195,12 @@ public enum GameManager {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumberActiveGames() {
|
||||
return getGameController().size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<UUID, GameController> getGameController() {
|
||||
Map<UUID, GameController> newControllers = new HashMap<>();
|
||||
final Lock r = gameControllersLock.readLock();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue