package javastory.rmi;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javastory.channel.CharacterTransfer;
import javastory.channel.Guild;
import javastory.channel.GuildMember;
import javastory.channel.Messenger;
import javastory.channel.MessengerMember;
import javastory.channel.Party;
import javastory.channel.PartyMember;
import javastory.channel.PlayerBuffValueHolder;
import javastory.channel.client.MemberRank;
import javastory.server.Location;
import javastory.world.core.CharacterIdChannelPair;
import javastory.world.core.PartyOperation;
import javastory.world.core.PlayerCooldownValueHolder;
import javastory.world.core.PlayerDiseaseValueHolder;
public interface WorldChannelInterface extends RemotePingable, WorldChannelCommonOperations {
// TODO: Move this logic to LocationRegistry.
public int find(String characterName) throws RemoteException;
public int find(int characterId) throws RemoteException;
public Location getLocation(String name) throws RemoteException;
// TODO: Move this logic to PartyRegistry
Party createParty() throws RemoteException;
Party getParty(int partyId) throws RemoteException;
public void updateParty(int partyId, PartyOperation operation, PartyMember target) throws RemoteException;
public void partyChat(int partyId, String message, String sender) throws RemoteException;
// TODO: Move this logic to GuildRegistry
public Guild getGuild(int id) throws RemoteException;
public void setGuildMemberOnline(GuildMember member, boolean isOnline, int channelId) throws RemoteException;
public boolean addGuildMember(GuildMember member) throws RemoteException;
public void leaveGuild(GuildMember member) throws RemoteException;
public void guildChat(int guildId, String sender, int characterId, String message) throws RemoteException;
public void changeRank(int guildId, int characterId, MemberRank newRank) throws RemoteException;
public void expelMember(GuildMember initiator, int characterId) throws RemoteException;
public void setGuildNotice(int guildId, String notice) throws RemoteException;
public void changeRankTitle(int guildId, String[] ranks) throws RemoteException;
public int createGuild(int leaderId, String name) throws RemoteException;
public void setGuildEmblem(int guildId, short background, byte backgroundColor, short logo, byte logoVariation) throws RemoteException;
public void disbandGuild(int guildId) throws RemoteException;
public boolean increaseGuildCapacity(int guildId) throws RemoteException;
public void gainGuildPoints(int guildId, int amount) throws RemoteException;
void updateGuildMemberJob(int guildId, int characterId, int jobId) throws RemoteException;
void updateGuildMemberLevel(int guildId, int characterId, int level) throws RemoteException;
// TODO: Move this logic to MessengerRegistry.
Messenger createMessenger(MessengerMember initiator) throws RemoteException;
Messenger getMessenger(int messengerId) throws RemoteException;
public void leaveMessenger(int messengerId, MessengerMember target) throws RemoteException;
public void joinMessenger(int messengerId, MessengerMember target, String from, int channelId) throws RemoteException;
public void silentJoinMessenger(int messengerId, MessengerMember target, int position) throws RemoteException;
public void silentLeaveMessenger(int messengerId, MessengerMember target) throws RemoteException;
public void messengerChat(int messengerId, String sender, String message) throws RemoteException;
public void declineChat(String target, String sender) throws RemoteException;
public void updateMessenger(int messengerId, String sender, int channelId) throws RemoteException;
// TODO: Buffs, Cooldowns, Debuffs go together, group them into a class.
public void addBuffsToStorage(int characterId, List<PlayerBuffValueHolder> buffs) throws RemoteException;
public Collection<PlayerBuffValueHolder> getBuffsFromStorage(int characterId) throws RemoteException;
public void addCooldownsToStorage(int characterId, List<PlayerCooldownValueHolder> cooldowns) throws RemoteException;
public Collection<PlayerCooldownValueHolder> getCooldownsFromStorage(int characterId) throws RemoteException;
public void addDiseaseToStorage(int characterId, List<PlayerDiseaseValueHolder> diseases) throws RemoteException;
public Collection<PlayerDiseaseValueHolder> getDiseaseFromStorage(int characterId) throws RemoteException;
//
public void serverReady() throws RemoteException;
public void shutdownLogin() throws RemoteException;
public String getIP(int channelId) throws RemoteException;
public void toggleMegaphoneMuteState() throws RemoteException;
public Map<Integer, Integer> getConnected() throws RemoteException;
public ChannelWorldInterface getChannelInterface(int channelId) throws RemoteException;
public CharacterIdChannelPair[] multiBuddyFind(int charIdFrom, int[] characterIds) throws RemoteException;
public void transfer(CharacterTransfer data, int characterId, int targetChannel) throws RemoteException;
}