1 /*** 2 * Jetrix TetriNET Server 3 * Copyright (C) 2001-2003 Emmanuel Bourg 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 */ 19 20 package net.jetrix; 21 22 import java.util.*; 23 24 /*** 25 * A user connected to the server. The user can be a player or a spectator. 26 * 27 * @author Emmanuel Bourg 28 * @version $Revision: 794 $, $Date: 2009-02-17 20:08:39 +0100 (Tue, 17 Feb 2009) $ 29 */ 30 public class User 31 { 32 private String name; 33 private String team; 34 private int accessLevel; 35 private int status; 36 private boolean registered; 37 private boolean playing; 38 private int type; 39 private Locale locale; 40 private Map<String, Object> props; 41 private Set<String> ignoredUsers; 42 43 public static final int STATUS_OK = 0; 44 public static final int STATUS_AFK = 1; 45 46 public static final int USER_PLAYER = 0; 47 public static final int USER_SPECTATOR = 1; 48 49 public User() { } 50 51 public User(String name) 52 { 53 this.name = name; 54 } 55 56 public void setName(String name) 57 { 58 this.name = name; 59 } 60 61 public String getName() 62 { 63 return name; 64 } 65 66 public void setTeam(String team) 67 { 68 this.team = team; 69 } 70 71 public String getTeam() 72 { 73 return team; 74 } 75 76 public void setAccessLevel(int accessLevel) 77 { 78 this.accessLevel = accessLevel; 79 } 80 81 public int getAccessLevel() 82 { 83 return accessLevel; 84 } 85 86 public void setStatus(int status) 87 { 88 this.status = status; 89 } 90 91 public int getStatus() 92 { 93 return status; 94 } 95 96 public void setRegistered(boolean registered) 97 { 98 this.registered = registered; 99 } 100 101 public boolean isRegistered() 102 { 103 return registered; 104 } 105 106 public void setPlaying(boolean playing) 107 { 108 this.playing = playing; 109 } 110 111 public boolean isPlaying() 112 { 113 return playing; 114 } 115 116 public void setSpectator() 117 { 118 this.type = USER_SPECTATOR; 119 } 120 121 public boolean isSpectator() 122 { 123 return (type == USER_SPECTATOR); 124 } 125 126 public void setPlayer() 127 { 128 this.type = USER_PLAYER; 129 } 130 131 public boolean isPlayer() 132 { 133 return (type == USER_PLAYER); 134 } 135 136 public void setLocale(Locale locale) 137 { 138 this.locale = locale; 139 } 140 141 public Locale getLocale() 142 { 143 return locale; 144 } 145 146 /*** 147 * Tells if the specified nickname is ignored by this user. 148 * 149 * @param name the name of the user 150 * @return <code></code> 151 * @since 0.2 152 */ 153 public boolean ignores(String name) 154 { 155 return ignoredUsers == null ? false : ignoredUsers.contains(name.toLowerCase()); 156 } 157 158 /*** 159 * Add the specified name to the list of ignored users. 160 * 161 * @param name 162 * @since 0.2 163 */ 164 public void ignore(String name) 165 { 166 if (ignoredUsers == null) 167 { 168 ignoredUsers = new TreeSet<String>(); 169 } 170 171 ignoredUsers.add(name.toLowerCase()); 172 } 173 174 /*** 175 * Remove the specified name from the list of ignored users. 176 * 177 * @param name 178 * @since 0.2 179 */ 180 public void unignore(String name) 181 { 182 if (ignoredUsers != null) 183 { 184 ignoredUsers.remove(name.toLowerCase()); 185 } 186 } 187 188 /*** 189 * Return the list of ignored players. 190 * 191 * @since 0.2 192 */ 193 public Set<String> getIgnoredUsers() 194 { 195 return ignoredUsers == null ? new TreeSet<String>() : ignoredUsers; 196 } 197 198 /*** 199 * Set an extended property for this player. 200 */ 201 public void setProperty(String key, Object value) 202 { 203 if (props == null) 204 { 205 props = new HashMap<String, Object>(); 206 } 207 props.put(key, value); 208 } 209 210 /*** 211 * Return an extended property. 212 */ 213 public Object getProperty(String key) 214 { 215 return (props == null) ? null : props.get(key); 216 } 217 218 public String toString() 219 { 220 return "[User " + name + " <" + team + "> playing=" + playing + "]"; 221 } 222 223 }