/* * Copyright (c) 2017 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ package jsettlers.main.android.mainmenu.presenters.setup.playeritem; import jsettlers.logic.player.PlayerSetting; import jsettlers.main.android.mainmenu.views.PlayerSlotView; /** * Created by tompr on 18/02/2017. */ public class PlayerSlotPresenter { private final PositionChangedListener positionChangedListener; private PlayerSlotView view; private String name; private boolean ready = false; private boolean showReadyControl = false; private boolean controlsEnabled = true; private ReadyListener readyListener; private Civilisation[] possibleCivilisations; private Civilisation civilisation; private PlayerType[] possiblePlayerTypes; private PlayerType playerType; private StartPosition[] possibleStartPositions; private StartPosition startPosition; private Team[] possibleTeams; private Team team; public PlayerSlotPresenter(PositionChangedListener positionChangedListener) { this.positionChangedListener = positionChangedListener; } public void initView(PlayerSlotView view) { this.view = view; view.setName(name); view.setReady(ready); if (showReadyControl) { view.showReadyControl(); } else { view.hideReadyControl(); } if (controlsEnabled) { view.setControlsEnabled(); } else { view.setControlsDisabled(); } view.setPossibleCivilisations(possibleCivilisations); view.setCivilisation(civilisation); view.setPossibleStartPositions(possibleStartPositions); view.setStartPosition(startPosition); view.setPossibleTeams(possibleTeams); view.setTeam(team); view.setPossiblePlayerTypes(possiblePlayerTypes); view.setPlayerType(playerType); } public PlayerSetting getPlayerSettings() { return new PlayerSetting(playerType.getType(), civilisation.getType(), team.asByte()); } /** * Civilisations */ public void setPossibleCivilisations(Civilisation[] possibleCivilisations) { this.possibleCivilisations = possibleCivilisations; } public void setCivilisation(Civilisation civilisation) { this.civilisation = civilisation; } /** * Players types */ public void setPossiblePlayerTypes(PlayerType[] ePlayerTypes) { this.possiblePlayerTypes = ePlayerTypes; } public void setPlayerType(PlayerType playerType) { this.playerType = playerType; } /** * Start positions */ public void setPossibleStartPositions(int numberOfPlayers) { possibleStartPositions = new StartPosition[numberOfPlayers]; for (byte i = 0; i < numberOfPlayers; i++) { possibleStartPositions[i] = new StartPosition(i); } } public void setStartPosition(StartPosition startPosition) { this.startPosition = startPosition; if (view != null) { view.setStartPosition(startPosition); } } public void startPositionSelected(StartPosition position) { positionChangedListener.positionChanged(this, this.startPosition, position); this.startPosition = position; } public StartPosition getStartPosition() { return startPosition; } public byte getPlayerId() { return startPosition.asByte(); } /** * Teams */ public void setPossibleTeams(int numberOfPlayers) { possibleTeams = new Team[numberOfPlayers]; for (byte i = 0; i < numberOfPlayers; i++) { possibleTeams[i] = new Team(i); } } public void setTeam(Team team) { this.team = team; } public void teamSelected(Team team) { this.team = team; } /** * Name */ public void setName(String name) { this.name = name; } /** * Ready */ public void setReady(boolean ready) { this.ready = ready; } public void readyChanged(boolean ready) { if (readyListener != null) readyListener.readyChanged(ready); } public void setShowReadyControl(boolean showReadyControl) { this.showReadyControl = showReadyControl; } public void setReadyListener(ReadyListener readyListener) { this.readyListener = readyListener; } /** * Controls enable */ public void setControlsEnabled(boolean enabled) { controlsEnabled = enabled; } }