/* Copyright (C) 2010 - 2011 Fabian Neundorf, Philip Caroli, * Maximilian Madlung, Usman Ghani Ahmed, Jeremias Mechler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.ojim.rmi.server; import java.rmi.Remote; import java.rmi.RemoteException; import org.ojim.iface.IClient; import org.ojim.iface.Rules; import org.ojim.rmi.client.NetClient; /** * Interface stellt zusätzlich zum IServer Interface Methoden bereit die über * das Netzwerk mit Hilfe von RMI, lokal oder über das Internet vom Client auf * einer anderen JVM, in diesem Fall auf unserem Server aufgerufen werden * können. * * @author Usman Ghani Ahmed * */ public interface NetOjim extends Remote { /** * Meldet einen Client beim Server an, damit der Server Methoden des Client * über RMI aufrufen kann * * @param netClient * Client Remote Objekt * * @throws RemoteException */ public int registerClient(NetClient netClient) throws RemoteException; /** * Meldet einen Client beim Server ab,zum Beispiel bei frühzeitiger * Spielbeendigung eines Client * * @param netClient * Client Remote Objekt * * @throws RemoteException */ public void abmeldenClient(NetClient netClient) throws RemoteException; /** * Gibt Auskunft über die Anzahl der Runden die ein Spieler im Gefängnis * sitzt beziehungsweise beim Würfeln aussetzt * * @param sClient * Client Objekt * @param position * Position * @return Anzahl der Runden * @throws RemoteException */ public int getRoundsToWait(int position) throws RemoteException; /** * Gibt den Geldbetrag zurück , mit welchem sich der Spieler aus dem * Gefängnis frei kaufen kann * * @param sClient * Client Objekt * @param position * Position * @return Geldbetrag * @throws RemoteException */ public int getMoneyToPay(int position) throws RemoteException; public int getPlayerPiecePosition(int playerID) throws RemoteException; public int addPlayer(IClient client) throws RemoteException; public void setPlayerReady(int player) throws RemoteException; public String getPlayerName(int player) throws RemoteException; public int getPlayerColor(int player) throws RemoteException; public int getTurnsInPrison(int playerID) throws RemoteException; public Rules getRules() throws RemoteException; public String getEstateName(int position, int player) throws RemoteException; public int getEstateColorGroup(int position) throws RemoteException; public int getEstateHouses(int position) throws RemoteException; public int getEstatePrice(int position) throws RemoteException; public int getEstateHousePrice(int position) throws RemoteException; public int getEstateRent(int position, int houses) throws RemoteException; public boolean isMortgaged(int position) throws RemoteException; public int getOwner(int position) throws RemoteException; public int getDiceValue() throws RemoteException; public int[] getDiceValues() throws RemoteException; public int getPlayerCash(int playerID) throws RemoteException; public int getPlayerOnTurn() throws RemoteException; public int getNumberOfGetOutOfJailCards(int playerID) throws RemoteException; public int getNumberOfHousesLeft() throws RemoteException; public int getNumberOfHotelsLeft() throws RemoteException; public boolean rollDice(int playerID) throws RemoteException; public boolean accept(int playerID) throws RemoteException; public boolean decline(int playerID) throws RemoteException; public boolean endTurn(int playerID) throws RemoteException; public boolean useGetOutOfJailCard(int playerID) throws RemoteException; public boolean payFine(int playerID) throws RemoteException; public boolean declareBankruptcy(int playerID) throws RemoteException; public boolean construct(int playerID, int position) throws RemoteException; public boolean deconstruct(int playerID, int position) throws RemoteException; public boolean toggleMortgage(int playerID, int position) throws RemoteException; public void sendMessage(String text, int sender) throws RemoteException; public void sendPrivateMessage(String text, int sender, int reciever) throws RemoteException; public int getAuctionState () throws RemoteException; /** * Liefert das zu versteigernde Grundstück falls eine Auktion läuft. * @return laufende Nummer des Grundstücks */ public int getAuctionedEstate () throws RemoteException; /** * Liefert die höchste gebotene Summe. * Hat noch niemand geboten, so beträgt sie den in den Spielregeln vorgesehenen Standardwert. */ public int getHighestBid () throws RemoteException; /** * Liefert den Bieter der höchsten gebotenen Summe. * @return ID des Spielers; -1 falls noch niemand geboten hat */ public int getBidder() throws RemoteException; /** * Gibt ein Gebot in einer Versteigerung ab. * @param playerID der bietende Spieler * @param amount der gebotene Geldbetrag */ public boolean placeBid (int playerID, int amount) throws RemoteException; /** * Eröffnet eine Handelssitzung mit einem weiteren Spieler. * Angebotene Handelsware kann mit <code>offerX()</code> hinzugefügt werden. * Erwartete Handelsware kann mit <code>requireX()</code> hinzugefügt werden. * Der Handelsvorschlag wird mit <code>proposeTrade()</code> oder <code>cancelTrade()</code> abgeschlossen. * Weitere Aktionen können während dieser Zeit nicht durchgeführt werden. * @param actingPlayer Der handelnde Spieler. * @param partnerPlayer Der Handelspartner (-1 für die Bank). */ public boolean initTrade (int actingPlayer, int partnerPlayer) throws RemoteException; /** * Gibt den Zustand einer Handelssitzung an. * @return -1 falls keine Handelssitzung läuft<br> * 0 falls eine Handelssitzung läuft und der handelnde Spieler noch kein Angebot abgegeben hat<br> * 1 falls eine Handelssitzung läuft, der handelnde Spieler ein Angebot abgegeben hat, * der Handelspartner aber noch keine Entscheidung getroffen hat<br> * 2 falls gerade eine Handelssitzung mit negativem Ergebnis beendet wurde <i>(optional)</i>, * in diesem Zustand müssen noch alle Daten des Angebots abrufbar sein<br> * 3 falls gerade eine Handelssitzung mit positivem Ergebnis beendet wurde <i>(optional)</i>, * in diesem Zustand müssen noch alle Daten des Angebots abrufbar sein */ public int getTradeState() throws RemoteException; /** * Liefert den Handelspartner. */ public int getPartner () throws RemoteException; public int getActing() throws RemoteException; /** * Bietet Geld im Handel. * Die Bank nimmt kein Geld an. * @param playerID Der handelnde Spieler * @param amount Höhe des Geldbetrags */ public boolean offerCash (int playerID, int amount) throws RemoteException; /** * Bietet eine "Du kommst aus dem Gefängnis frei"-Karte im Handel an. * Die Bank nimmt keine Karten an. * @param playerID Der handelnde Spieler */ public boolean offerGetOutOfJailCard (int playerID) throws RemoteException; /** * Bietet ein Grundstück im Handel an. * Falls der Handel mit der Bank stattfindet, wird automatisch der entsprechende Geldwert auf die Soll-Seite gesetzt. * @param playerID Der handelnde Spieler * @param position Position des Grundstücks */ public boolean offerEstate (int playerID, int position) throws RemoteException; /** * Verlangt Geld im Handel. * Von der Bank wird automatisch Geld verlangt. * @param playerID Der handelnde Spieler * @param amount Höhe des Geldbetrags */ public boolean requireCash (int playerID, int amount) throws RemoteException; /** * Verlangt eine "Du kommst aus dem Gefängnis frei"-Karte im Handel. * Muss sich im Besitz des Handelspartners befinden. */ public boolean requireGetOutOfJailCard (int playerID) throws RemoteException; /** * Verlangt ein Grundstück im Handel. * Muss sich im Besitz des Handelspartners befinden. * @param playerID Der handelnde Spieler * @param position Position des Grundstücks */ public boolean requireEstate (int playerID, int position) throws RemoteException; /** * Liefert eine Liste der vom handelnden Spieler angebotenen Grundstücke. */ public int[] getOfferedEstates() throws RemoteException; /** * Liefert das vom handelnden Spieler angebotene Geld. */ public int getOfferedCash () throws RemoteException; /** * Liefert die Zahl der vom handelnden Spieler angebotenen "Gefängnis frei"-Karten. */ public int getNumberOfOfferedGetOutOfJailCards () throws RemoteException; /** * Liefert eine Liste der vom handelnden Spieler verlangten Grundstücke. */ public int[] getRequiredEstates () throws RemoteException; /** * Liefert das vom handelnden Spieler verlangte Geld. */ public int getRequiredCash() throws RemoteException; /** * Liefert die Zahl der vom handelnden Spieler verlangten "Gefängnis frei"-Karten. */ public int getNumberOfRequiredGetOutOfJailCards() throws RemoteException; /** * Bricht die aktuelle Handelssitzung ohne Ergebnis ab. */ public boolean cancelTrade (int playerID) throws RemoteException; /** * Unterbreitet dem Handelspartner einen Handelsvorschlag. * Handelswaren wurden vorher mit <code>offerX()</code> bzw. <code>requireX()</code> hinzugefügt. * Falls der Handelspartner nicht die Bank ist, * wird er daraufhin gefragt, ob er dem Handel zustimmt. * Das Ergebnis des Handels kann dann wieder mit <code>getGameStatusMessage()</code> erfragt werden. */ public boolean proposeTrade (int playerID) throws RemoteException; public int getFreeParkingPot(int position) throws RemoteException; }