public void updateSegmentSize(int nbShips) { int[] nbSegments = calculateRowsAndColumnsNeeded(nbShips/2, mapDimension); segmentEdgeWidth = (mapDimension.getWidth() + 1) / nbSegments[1]; segmentEdgeHeigth = (mapDimension.getHeight() + 1) / nbSegments[0]; List<INavigableVessel> registeredVessels = new ArrayList<>(); if (segments != null) { for (List<WeakReference<INavigableVessel>>[] outer : segments) { for (List<WeakReference<INavigableVessel>> inner : outer) { for (WeakReference<INavigableVessel> vessel : inner) { if (vessel.get() != null) { registeredVessels.add(vessel.get()); } } } } } segments = new List[nbSegments[1]][nbSegments[0]]; for (int i = 0; i < nbSegments[1]; i++) { for (int j = 0; j < nbSegments[0]; j++) { segments[i][j] = new ArrayList<>(); } } for (INavigableVessel registeredVessel : registeredVessels) { add(registeredVessel); } } @VisibleForTesting
@Override public void run() { ship.setLocation(location); locationTracker.add(ship); shipyard.removeCompletedConstruction(ship); if (owner instanceof IHumanPlayer) { DisplayMessage msg = new DisplayMessage("ch.sahits.game.openpatrician.engine.event.task.ShipBuildTask.message", new Object[]{type, ship.getName()}); TargetedEvent displayMessage = new TargetedEvent((IHumanPlayer) owner, msg); clientServerEventBus.post(displayMessage); } else { aiPlayerEngine.handleShipConstructionFinished(ship, (IAIPlayer) owner); } } /**
private IHumanPlayer startupGameEnvironment(NewGame newGameDTO) { date.setStartYear(newGameDTO.getStartYear()); GameFactory gameFactory = serverContext.getBean(GameFactory.class); CityFactory cityFactory = serverContext.getBean(CityFactory.class); ShipFactory shipFactory = serverContext.getBean(ShipFactory.class); gameFactory.createMap(newGameDTO.getMapName()); LocationTracker locationTracker = serverContext.getBean(LocationTracker.class); serverContext.getBean(StartNewGameBean.class); IGame game = gameFactory.createGame(newGameDTO.getObjective(), newGameDTO.getDifficulty(), newGameDTO.getSpeed(), newGameDTO.isSingleplayer()); ICity homeCity = cityFactory.createCityByName(newGameDTO.getHometown()); IHumanPlayer player = gameFactory.createPlayer(newGameDTO.getFirstName(), newGameDTO.getLastName(), homeCity, newGameDTO.isMale(), newGameDTO.getDifficulty().getStartingCapital(), EPlayerColor.BLUE); IShip ship = shipFactory.createCrayer(shipNameLoader.getRandomName(), EShipUpgrade.LEVEL1, 350); ship.setOwner(player); player.addShip(ship); player.addSelectableVessel(ship); ship.setLocation(homeCity.getCoordinates()); locationTracker.add(ship); // Start the game server.startGame(game, 1); server.startStandaloneGame(player); serverContext.getBean("startNewGameHandler"); // Force creation of this lazy bean return player; }