2 |
2 |
3 import org.hedgewars.hedgeroid.Datastructures.Player; |
3 import org.hedgewars.hedgeroid.Datastructures.Player; |
4 import org.hedgewars.hedgeroid.Datastructures.PlayerInRoom; |
4 import org.hedgewars.hedgeroid.Datastructures.PlayerInRoom; |
5 |
5 |
6 final class ClientFlagsUpdate { |
6 final class ClientFlagsUpdate { |
7 public static final char FLAG_ADMIN = 'a'; |
7 public static final char FLAG_ADMIN = 'a'; |
8 public static final char FLAG_CHIEF = 'h'; |
8 public static final char FLAG_CHIEF = 'h'; |
9 public static final char FLAG_READY = 'r'; |
9 public static final char FLAG_READY = 'r'; |
10 public static final char FLAG_REGISTERED = 'u'; |
10 public static final char FLAG_REGISTERED = 'u'; |
11 |
|
12 public final String nick, flags; |
|
13 public final boolean newFlagState; |
|
14 |
|
15 public ClientFlagsUpdate(String nick, String flags, boolean newFlagState) { |
|
16 this.nick = nick; |
|
17 this.flags = flags; |
|
18 this.newFlagState = newFlagState; |
|
19 } |
|
20 |
11 |
21 public Player applyTo(Player p) { |
12 public final String nick, flags; |
22 return new Player( |
13 public final boolean newFlagState; |
23 p.name, |
14 |
24 updatedFlag(FLAG_REGISTERED, p.registered), |
15 public ClientFlagsUpdate(String nick, String flags, boolean newFlagState) { |
25 updatedFlag(FLAG_ADMIN, p.admin)); |
16 this.nick = nick; |
26 } |
17 this.flags = flags; |
27 |
18 this.newFlagState = newFlagState; |
28 public PlayerInRoom applyTo(PlayerInRoom p) { |
19 } |
29 return new PlayerInRoom( |
20 |
30 this.applyTo(p.player), |
21 public Player applyTo(Player p) { |
31 updatedFlag(FLAG_READY, p.ready), |
22 return new Player( |
32 updatedFlag(FLAG_CHIEF, p.roomChief)); |
23 p.name, |
33 } |
24 updatedFlag(FLAG_REGISTERED, p.registered), |
34 |
25 updatedFlag(FLAG_ADMIN, p.admin)); |
35 public boolean appliesTo(char flag) { |
26 } |
36 return flags.indexOf(flag) != -1; |
27 |
37 } |
28 public PlayerInRoom applyTo(PlayerInRoom p) { |
38 |
29 return new PlayerInRoom( |
39 private boolean updatedFlag(char flag, boolean oldValue) { |
30 this.applyTo(p.player), |
40 return appliesTo(flag) ? newFlagState : oldValue; |
31 updatedFlag(FLAG_READY, p.ready), |
41 } |
32 updatedFlag(FLAG_CHIEF, p.roomChief)); |
42 |
33 } |
43 @Override |
34 |
44 public String toString() { |
35 public boolean appliesTo(char flag) { |
45 return "ClientFlagsUpdate [nick=" + nick + ", flags=" + flags |
36 return flags.indexOf(flag) != -1; |
46 + ", newFlagState=" + newFlagState + "]"; |
37 } |
47 } |
38 |
|
39 private boolean updatedFlag(char flag, boolean oldValue) { |
|
40 return appliesTo(flag) ? newFlagState : oldValue; |
|
41 } |
|
42 |
|
43 @Override |
|
44 public String toString() { |
|
45 return "ClientFlagsUpdate [nick=" + nick + ", flags=" + flags |
|
46 + ", newFlagState=" + newFlagState + "]"; |
|
47 } |
48 } |
48 } |