/** * This file is part of aion-emu <aion-emu.com>. * * aion-emu 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. * * aion-emu 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 aion-emu. If not, see <http://www.gnu.org/licenses/>. */ package com.aionemu.gameserver.model.account; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import com.aionemu.gameserver.model.gameobjects.player.Storage; /** * This class represents game account and is holding such informations as: * <ul> * <li>account id</li> * <li>account name</li> * <li> {@link AccountTime account time info}</li> * <li>a list of {@link PlayerAccountData} objects each of which keeping information about player that must be available * on character selection screen.</li> * </ul> * * @author SoulKeeper */ public class Account implements Iterable<PlayerAccountData> { /** Unique id of this account (it's generated by login server) */ private final int id; /** Unique name of this account */ private String name; /** * Access level */ private byte accessLevel; /** * Membership of this account */ private byte membership; private AccountTime accountTime; private Map<Integer, PlayerAccountData> players = new HashMap<Integer, PlayerAccountData>(); private Storage accountWarehouse; public Account(int id) { this.id = id; } public int getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public AccountTime getAccountTime() { return accountTime; } public void setAccountTime(AccountTime accountTime) { this.accountTime = accountTime; } /** * @return the accessLevel */ public byte getAccessLevel() { return accessLevel; } /** * @param accessLevel the accessLevel to set */ public void setAccessLevel(byte accessLevel) { this.accessLevel = accessLevel; } /** * @return the membership */ public byte getMembership() { return membership; } /** * @param membership the membership to set */ public void setMembership(byte membership) { this.membership = membership; } @Override public boolean equals(Object o) { if(this == o) { return true; } if(!(o instanceof Account)) { return false; } Account account = (Account) o; return id == account.id; } @Override public int hashCode() { return id; } /** * @param chaOid * @return PlayerAccountData */ public PlayerAccountData getPlayerAccountData(int chaOid) { return players.get(chaOid); } /** * @param accPlData */ public void addPlayerAccountData(PlayerAccountData accPlData) { players.put(accPlData.getPlayerCommonData().getPlayerObjId(), accPlData); } /** * @return the accountWarehouse */ public Storage getAccountWarehouse() { return accountWarehouse; } /** * @param accountWarehouse the accountWarehouse to set */ public void setAccountWarehouse(Storage accountWarehouse) { this.accountWarehouse = accountWarehouse; } /** Returns the number of players that are on this account */ public int size() { return players.size(); } /** * {@inheritDoc} */ @Override public Iterator<PlayerAccountData> iterator() { return players.values().iterator(); } }