~mchaten/gg/main

« back to all changes in this revision

Viewing changes to main/server/src/net/sf/goodgame/server/user/User.java

  • Committer: mchaten
  • Date: 2009-04-22 05:07:41 UTC
  • Revision ID: mchaten@gmail.com-20090422050741-92mj6an6rlc3p0sv
Removed the "guest" UserType
Fixed some bugs with the client login gui. 
Does not log in when initialized, as there is no guest type anymore, and other various side-effects of logging out are no longer there.
Removed all code dealing with the special case of a guest type.
You get the point -- bye bye guest type

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
package net.sf.goodgame.server.user;
15
15
 
16
16
import net.sf.goodgame.shared.UserInfoElement;
17
 
import net.sf.goodgame.server.*;
18
17
import java.nio.channels.SocketChannel;
19
18
import java.util.Collection;
20
19
import java.util.HashMap;
41
40
    public int compareTo(Object o) {
42
41
        return o.toString().compareTo(currentUsername);
43
42
    }
44
 
    private final static String GUEST_PREFIX = "guest";
45
 
    private final static NumberPool guestNumbers = new NumberPool(Integer.MAX_VALUE);
46
43
    private final static Map<String, User> users = new HashMap<String, User>();
47
44
    public final SocketChannel socket;
48
 
    private final String guestName;
49
 
    private final int guestNum;
50
45
    private String currentUsername;
51
46
    private boolean initialized;
52
47
    private UserType type;
62
57
        assert DatabaseManager.getDatabase() != null;
63
58
        assert IOManager.getIO() != null;
64
59
        this.socket = socket;
65
 
        guestNum = guestNumbers.nextNumber();
66
 
        guestName = GUEST_PREFIX + guestNum;
67
 
        currentUsername = guestName;
68
60
        initialized = false;
69
 
        type = UserType.guest;
 
61
        type = null;
70
62
        myInfo = new Vector<UserInfoElement>();
71
63
        friendsList = null;
72
64
        friendsOf = null;
73
 
        instructionSemaphore = new Semaphore(1,true);
 
65
        instructionSemaphore = new Semaphore(1, true);
74
66
    }
75
67
 
76
68
    public static User getUser(String username) {
105
97
        return currentUsername;
106
98
    }
107
99
 
108
 
    public String getGuestName() {
109
 
        return guestName;
110
 
    }
111
 
 
112
100
    public UserType getType() {
113
101
        return type;
114
102
    }
115
103
 
 
104
    public boolean isLoggedIn() {
 
105
        return type != null;
 
106
    }
 
107
 
116
108
    public void disconnect() {
117
109
        DatabaseManager.getDatabase().logout(currentUsername);
118
 
        guestNumbers.returnNumber(guestNum);
119
110
 
120
111
        if (currentLobby != null) {
121
112
            currentLobby.removeUser(this);
131
122
    public void initialized() {
132
123
        //Todo: Change this to something more friendly. x
133
124
        users.put(currentUsername, this);
134
 
        NetworkMessage userLogin = ServerToClientLogic.loginOk(this);
135
 
        this.send(userLogin);
136
 
        Lobby.addLobbyListener(this);
137
 
        GameType.gameTypeList.addListener(this);
138
 
        this.switchLobby(Lobby.getLobby((short) 0));
139
125
        initialized = true;
140
126
    }
141
127
    /*
149
135
            synchronized (users) {
150
136
                type = db.getType(name);
151
137
                users.remove(currentUsername);
152
 
                String previousName = currentUsername;
153
138
                currentUsername = name;
154
139
                myInfo = db.getUserInfo(currentUsername);
155
140
                users.put(name, this);
156
 
                currentLobby.modifyUser(this, previousName);
157
141
                friendsList = db.getFriendsList(this);
158
142
                friendsOf = db.getFriendsOfList(this.getUsername());
159
143
                for (String friendOf : friendsOf) {
165
149
                }
166
150
                send(ServerToClientLogic.loginOk(this));
167
151
                friendsList.initialize();
 
152
                Lobby.addLobbyListener(this);
 
153
                GameType.gameTypeList.addListener(this);
 
154
                this.switchLobby(Lobby.getLobby((short) 0));
 
155
                
168
156
            }
169
157
        } else {
170
158
            send(ServerToClientLogic.loginFailed());
181
169
                user.friendLoggedOut(this);
182
170
            }
183
171
            DatabaseManager.getDatabase().logout(currentUsername);
 
172
 
184
173
            users.remove(currentUsername);
185
 
            String previousName = currentUsername;
186
 
            currentUsername = guestName;
187
 
            users.put(currentUsername, this);
188
 
            type = UserType.guest;
189
 
            //UserInfo myInfo = new UserInfo();
190
 
            currentLobby.modifyUser(this, previousName);
 
174
            Lobby.removeLobbyListener(this);
 
175
            GameType.gameTypeList.removeListener(this);
 
176
            
 
177
            leaveLobby();
 
178
            leaveGame();
191
179
            send(ServerToClientLogic.logout(this));
 
180
            currentUsername = null;
 
181
            type = null;
 
182
            friendsList = null;
 
183
            
192
184
        }
193
185
    }
194
186
 
202
194
    }
203
195
 
204
196
    public void switchGameType(GameType gt) {
205
 
        if(gt == currentGameType)
 
197
        if (gt == currentGameType) {
206
198
            return;
 
199
        }
207
200
        this.send(ServerToClientLogic.switchGameType(gt));
208
201
        currentLobby.changeUserGameType(this, gt);
209
202
        currentGameType = gt;
235
228
            currentGame = null;
236
229
        }
237
230
    }
 
231
    public void leaveLobby() {
 
232
        if(currentLobby != null) {
 
233
            currentLobby.removeUser(this);
 
234
            currentLobby = null;
 
235
        }
 
236
    }
238
237
 
239
238
    public void send(NetworkMessage message) {
240
239
        if (socket.isConnected()) {
262
261
    public String toString() {
263
262
        return currentUsername;
264
263
    }
265
 
      
 
264
 
266
265
    public void addFriend(String username) {
267
 
        if (getType() != UserType.guest && ! username.equalsIgnoreCase(getUsername())) {
 
266
        if (username.equalsIgnoreCase(getUsername())) {
268
267
            friendsList.addFriend(username);
269
268
            DatabaseManager.getDatabase().addFriend(this, username);
270
269
        }
271
270
    }
272
271
 
273
272
    public void removeFriend(String username) {
274
 
        if (getType() != UserType.guest) {
275
 
            friendsList.removeFriend(username);
276
 
            DatabaseManager.getDatabase().removeFriend(this, username);
277
 
        }
 
273
        friendsList.removeFriend(username);
 
274
        DatabaseManager.getDatabase().removeFriend(this, username);
278
275
    }
279
276
 
280
277
    public void friendLoggedIn(User friend) {
281
 
        if (getType() != UserType.guest) {
282
 
            friendsList.friendLoggedIn(friend);
283
 
        }
 
278
        friendsList.friendLoggedIn(friend);
284
279
    }
285
280
 
286
281
    public void friendLoggedOut(User friend) {
287
 
        if (getType() != UserType.guest) {
288
 
            friendsList.friendLoggedOut(friend);
289
 
        }
 
282
        friendsList.friendLoggedOut(friend);
290
283
    }
291
284
 
292
285
    public void addFriendOf(String user) {
293
 
        if (getType() != UserType.guest) {
294
 
            friendsOf.add(user);
295
 
        }
 
286
        friendsOf.add(user);
296
287
    }
297
288
 
298
289
    public void removeFriendOf(String user) {
299
 
        if (getType() != UserType.guest) {
300
 
            friendsOf.remove(user);
301
 
        }
 
290
        friendsOf.remove(user);
302
291
    }
303
292
}